NHibernate - отсутствует DLL - PullRequest
1 голос
/ 26 августа 2010

Этот звонок

// this._cfg - это экземпляр конфигурации NHibernate
this._sessionFactory = this._cfg.BuildSessionFactory ();

Дает мне это исключение во время выполнения (НЕ во время компиляции).

Не удалось загрузить файл или сборку 'NHibernate.ByteCode.Castle' или одну из ее зависимостей. Системе не удается найти указанный файл. ":" NHibernate.ByteCode.Castle

Хорошо, пока. Но дело в том, что этот код выполняется в проекте библиотеки классов, и у меня есть ссылка NHibernate.ByteCode.Castle (вместе со всеми другими библиотеками NHibernate) в этом проекте.

Wierder: я могу исправить исключение, дополнительно ссылаясь на библиотеки NHibernate в исполняемом проекте Windows WPF, который вызывает мою библиотеку классов. Но исполняемый файл Windows WPF не содержит кода, который напрямую использует NHibernate (о чем свидетельствует: он прекрасно компилируется без каких-либо ссылок NHibernate). Так, что происходит? Очевидно, недостаточно ссылаться на NHibernate.ByteCode.Castle в проекте, который фактически использует материал NHibernate. Кто-нибудь знает почему?

Ответы [ 2 ]

5 голосов
/ 04 января 2011

Я знаю, что это старый, но то, что я сделал, чтобы исправить проблему с зависимостями, просто:

В моем UnitOfWork я добавил один статический метод:

private static void bringCastleDamnit()
{
   var pf = new NHibernate.ByteCode.Castle.ProxyFactoryFactory();
}

Затем итолько тогда MSBuild увидит, что это необходимо, и скопирует его в мой выходной каталог для моих приложений (asp.net и console), которые ссылаются на мой проект Data.

1 голос
/ 26 августа 2010

Я бы не стал ссылаться на фабрику кодов байтов замка; просто убедитесь, что он (и все другие необходимые зависимости) скопированы в выходной каталог с помощью шага после сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...