Я задал этот же вопрос в списке рассылки NHibernate Users, и решение было настолько очевидным, что я несколько смутился, что не смог его увидеть.
Сборка атрибутов hibernate-mapping и пространство имен - это удобные ярлыки, которые позволяют вам не обязательно полностью определять имена классов. Это позволяет вам иметь хорошую разметку, но атрибут name для элементов class и join-subclass также может принимать полное имя сборки.
Таким образом, вышеуказанный битый файл сопоставления можно исправить так:
<joined-subclass name="Application.XTend.CustomerName.Entities.xCustomer,
Application.XTend.CustomerName.Entities, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null"
table="xCustomer">
<key column="CustomerId" />
<property name="CustomerType" column="CustomerType" length="255"
type="String" not-null="true">
<column name="CustomerType" />
</property>
</joined-subclass>
Это работает так, как я ожидал. Затем я посмотрел на источник Fluent-NHibernate и создал патч с работающими юнит-тестами для решения проблемы и отправил его в проект .
Спасибо за помощь @David Kemp