我在启动中设置了以下代码

IDictionary<string, string> properties = new Dictionary<string, string>();

properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver");
properties.Add("dialect", "NHibernate.Dialect.MsSql2005Dialect");
properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");
properties.Add("connection.connection_string", "Data Source=ZEUS;Initial Catalog=mydb;Persist Security Info=True;User ID=sa;Password=xxxxxxxx");
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
source.Add(typeof(ActiveRecordBase), (IDictionary<string, string>) properties);

Assembly asm = Assembly.Load("Repository");

Castle.ActiveRecord.ActiveRecordStarter.Initialize(asm, source);


我收到以下错误:

failed: NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException : Unable to load type 'NNHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle' during configuration of proxy factory class.

可能的原因是:


未部署NHibernate.Bytecode提供程序程序集。
用于初始化session-factory部分的'proxyfactory.factory_class'属性的typeName格式不正确。


我已经阅读并阅读了我引用的所有程序集listed,并且完全不知所措。

Castle.ActiveRecord.dll
Castle.DynamicProxy2.dll
Iesi.Collections.dll
log4net.dll
NHibernate.dll
NHibernate.ByteCode.Castle.dll
Castle.Core.dll。

我100%确信程序集在垃圾箱中。有人有主意吗?

最佳答案

当NHibernate.ByteCode.Castle.dll使用与您的项目不同的目标平台构建时,会发生此问题。要对此进行测试,请从以下一项或多项更改程序目标平台:


x64至x86
x86至x64
“任何CPU”到x86
“任何CPU”到x64


如果这些方法都能解决您的问题,那么您知道只需要同步DLL和目标平台即可。

10-07 13:58