Я искал по всему интернету эту конкретную проблему. Я нашел несколько предложенных решений, но они не работают.
Вот настройка:
Я использую ActiveRecord / NHibernate. Я создал сборку ActiveRecord, которая называется BusinessLogic. Идея состоит в том, что все мои проекты должны использовать BusinessLogic вместо прямой ссылки на ActiveRecord / NHibernate.
Я установил следующие файлы в GAC (глобальный кэш сборок .NET):
- Antlr3.Runtime.dll BusinessLogic.dll
- BusinessLogic.dll
- Castle.ActiveRecord.dll
- Castle.Components.Validator.dll
- Castle.Core.dll
- Castle.DynamicProxy2.dll
- Iesi.Collections.dll log4net.dll
- NHibernate.ByteCode.Castle.dll
- NHibernate.dll
Проблема заключается в следующем: при запуске приложения ASP.NET, которое считывает информацию о продукте из базы данных, я получаю следующее сообщение об ошибке:
Unable to load type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle' during configuration of proxy factory class.
Possible causes are:
- The NHibernate.Bytecode provider assembly was not deployed.
- The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed.
Если я поместил локальную копию NHibernate.ByteCode.Castle.dll в папку bin приложения ASP.NET, ошибка исчезнет. Но появляется новая ошибка. В нем говорится, что NHibernate не может найти классы в BusinessLogic.dll (например, Product и т. Д.).
Если я поместил локальную копию BusinessLogic.dll в папку bin приложения ASP.NET, даже эта ошибка исправлена, и приложение работает отлично.
Это, однако, нежелательно, поскольку я не хочу перекомпилировать каждое приложение с использованием BusinessLogic при каждом обновлении BusinessLogic.
Я нашел эту статью, которая обещала быть полезной: http://markmail.org/message/o22r2x5fng7i6jn5#query:activerecord%20gac+page:1+mid:4rlqoicqyxjh3ypb+state:results
К сожалению, это не решает проблему.
Я поместил в файл machine.config следующее:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="NHibernate.ByteCode.Castle" fullName="NHibernate.ByteCode.Castle,version=2.1.2.4000,publicKeyToken=aa95f207798dfdb4,culture=neutral" />
</assemblyBinding>
</runtime>
Ошибка все та же. NHibernate не может найти класс NHibernate.ByteCode.Castle.ProxyFactoryFactory
Любая помощь очень ценится.