Возможно, попробуйте добавить:
[assembly: InternalsVisibleTo("NHibernate")]
Если это не работает, посмотрите на трассировку стека TypeLoadException и проверьте, из какого DDL выдается исключение - добавьте для него атрибут InternalsVisibleTo.
Мне кажется, что NHibernate DDL пытается сделать что-то более умное, теперь включена отложенная загрузка ... возможно, ему по какой-то причине нужен доступ к внутреннему классу (неопределенно, но я не знаю, исходный код NHibernate)
EDIT:
попробуйте добавить:
[assembly: InternalsVisibleTo("mscorlib")]
Вы должны указать открытый ключ / версию используемой сборки.