版本更新后,在Castle Windsor/NHibernate集成工具中找不到方法错误

版本更新后,在Castle Windsor/NHibernate集成工具中找不到方法错误,nhibernate,fluent-nhibernate,castle-windsor,Nhibernate,Fluent Nhibernate,Castle Windsor,在我们将温莎城堡从2.5.2.0升级至温莎城堡3.3(最新版本)后,发现以下例外情况- 未找到方法:“Void Castle.Core.DependencyModel..ctor(Castle.Core.DependencyType,System.String,System.Type,Boolean) 堆栈跟踪: *[MissingMethodException: Method not found: 'Void Castle.Core.DependencyModel..ctor(Castle.C

在我们将温莎城堡从2.5.2.0升级至温莎城堡3.3(最新版本)后,发现以下例外情况-

未找到方法:“Void Castle.Core.DependencyModel..ctor(Castle.Core.DependencyType,System.String,System.Type,Boolean)

堆栈跟踪:

*[MissingMethodException: Method not found: 'Void Castle.Core.DependencyModel..ctor(Castle.Core.DependencyType, System.String, System.Type, Boolean)'.]
   Castle.Facilities.NHibernateIntegration.Internal.NHSessionComponentInspector.ProcessModel(IKernel kernel, ComponentModel model) +0
   Castle.MicroKernel.ModelBuilder.<>c__DisplayClass6.<BuildModel>b__4(IContributeComponentModelConstruction c) +60
   System.Collections.Generic.List`1.ForEach(Action`1 action) +11702442
   Castle.MicroKernel.ModelBuilder.DefaultComponentModelBuilder.BuildModel(IComponentModelDescriptor[] customContributors) +223
   Castle.MicroKernel.Registration.ComponentRegistration`1.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) +154
   Castle.MicroKernel.DefaultKernel.Register(IRegistration[] registrations) +179
   Castle.Facilities.NHibernateIntegration.NHibernateFacility.RegisterDefaultConfigurationBuilder() +398
   Castle.Facilities.NHibernateIntegration.NHibernateFacility.RegisterComponents() +221
   Castle.Facilities.NHibernateIntegration.NHibernateFacility.Init() +266
   Castle.MicroKernel.Facilities.AbstractFacility.Castle.MicroKernel.IFacility.Init(IKernel kernel, IConfiguration facilityConfig) +64
   Castle.MicroKernel.DefaultKernel.AddFacility(String key, IFacility facility) +381
   Castle.MicroKernel.DefaultKernel.AddFacility(IFacility facility) +124
   Castle.MicroKernel.DefaultKernel.AddFacility(Action`1 onCreate) +165
   Castle.MicroKernel.DefaultKernel.AddFacility(String key, Action`1 onCreate) +85
   Castle.Windsor.WindsorContainer.AddFacility(String idInConfiguration, Action`1 configureFacility) +113
   IoC.IoCBootstrapper.CreateBaseContainer(String configPath) 
   IoC.IoCBootstrapper.InitializeForWeb(String configPath) 
   Web.Global_asax.Application_Start(Object sender, EventArgs e)*
*[MissingMethodException:找不到方法:'Void Castle.Core.DependencyModel..ctor(Castle.Core.DependencyType,System.String,System.Type,Boolean)'。]
Castle.Facilities.NHibernateIntegration.Internal.NHSessionComponentInspector.ProcessModel(IKernel内核,ComponentModel模型)+0
Castle.MicroKernel.ModelBuilder.c__显示类6.b__4(IContributeComponentModelConstruction c)+60
系统.集合.通用.列表'1.ForEach(操作'1操作)+11702442
Castle.MicroKernel.ModelBuilder.DefaultComponentModelBuilder.BuildModel(IComponentModelDescriptor[]customContributors)+223
Castle.MicroKernel.Registration.ComponentRegistration`1.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal内核)+154
Castle.MicroKernel.DefaultKernel.Register(IRegistration[]注册)+179
Castle.Facilities.NHibernateIntegration.NHibernateFacility.RegisterDefaultConfigurationBuilder()+398
Castle.Facilities.NHibernateIntegration.NHibernateFacility.RegisterComponents()+221
Castle.Facilities.NHibernateIntegration.NHibernateFacility.Init()+266
Castle.MicroKernel.Facilities.AbstractFacility.Castle.MicroKernel.ifaccility.Init(IKernel内核,IConfiguration facilityConfig)+64
Castle.MicroKernel.DefaultKernel.AddFacility(字符串键,ifaccility facility)+381
Castle.MicroKernel.DefaultKernel.AddFacility(IFacility设施)+124
Castle.MicroKernel.DefaultKernel.AddFacility(Action`1 onCreate)+165
Castle.MicroKernel.DefaultKernel.AddFacility(字符串键,Action`1 onCreate)+85
Castle.Windsor.WindsorContainer.AddFacility(字符串配置,操作'1 configureFacility)+113
IoC.IoCBootstrapper.CreateBaseContainer(字符串配置路径)
IoC.IoCBootstrapper.InitializeForWeb(字符串配置路径)
Web.Global\u asax.Application\u Start(对象发送器,事件参数e)*
这是配置NHibernate的示例代码:

var container = new WindsorContainer();
container.Kernel.ConfigurationStore.AddFacilityConfiguration("nHibernateFacility", Init());
container.AddFacility<NHibernateFacility>("nHibernateFacility", f => f.ConfigurationBuilder<FluentNHibernateConfigurationBuilder>());


public static MutableConfiguration Init(ProviderSchema schema, int factoryCount)
{
var facility = new MutableConfiguration("facility");
facility.Attributes.Add("id", "nhibernatefacility");
facility.Attributes.Add("isWeb", "true");
facility.Attributes.Add("type", "Castle.Facilities.NHibernateIntegration.NHibernateFacility, Castle.Facilities.NHibernateIntegration");
CreateFactory(facility, factoryCount, schema);
 return facility;
}

public static void CreateFactory(MutableConfiguration facility, int id, ProviderSchema schema)
{
var factory = facility.CreateChild("factory");
factory.Attributes.Add("id", string.Format("nhibernate.factory{0}", id));
factory.Attributes.Add("alias", schema.Name);
 var settings = factory.CreateChild("settings");

settings.CreateItem("connection.driver_class", schema.ProviderFactory)
.CreateItem("connection.connection_string", schema.ProviderDatabase)
.CreateItem("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
.CreateItem("dialect", "NHibernate.Dialect.MsSql2005Dialect")
.CreateItem("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache")
.CreateItem("cache.use_second_level_cache", "true")
.CreateItem("cache.default_expiration", "600")
.CreateItem("adonet.batch_size", "100")
.CreateItem("show_sql", "false");
}
var容器=新的WindsorContainer();
container.Kernel.ConfigurationStore.AddFacilityConfiguration(“nHibernateFacility”,Init());
container.AddFacility(“nHibernateFacility”,f=>f.ConfigurationBuilder());
公共静态可变配置初始化(ProviderSchema架构,int factoryCount)
{
var设施=新的可变配置(“设施”);
设施。属性。添加(“id”、“nhibernatefacility”);
facility.Attributes.Add(“isWeb”,“true”);
facility.Attributes.Add(“类型”、“Castle.Facilities.NHibernateIntegration.NHibernateFacility、Castle.Facilities.NHibernateIntegration”);
CreateFactory(设施、factoryCount、模式);
归还设施;
}
公共静态void CreateFactory(可变配置工具,int-id,ProviderSchema)
{
var factory=facility.CreateChild(“工厂”);
Add(“id”,string.Format(“nhibernate.factory{0}”,id));
Add(“别名”,schema.Name);
var settings=factory.CreateChild(“设置”);
settings.CreateItem(“connection.driver_class”,schema.ProviderFactory)
.CreateItem(“connection.connection_string”,schema.ProviderDatabase)
.CreateItem(“proxyfactory.factory\u类”,“NHibernate.ByteCode.Castle.proxyfactory,NHibernate.ByteCode.Castle”)
.CreateItem(“方言”,“NHibernate.dialogue.mssql2005dialogue”)
.CreateItem(“cache.provider_类”,“NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache”)
.CreateItem(“缓存。使用第二级缓存”,“true”)
.CreateItem(“cache.default\u expiration”,“600”)
.CreateItem(“adonet.batch_size”,“100”)
.CreateItem(“show_sql”、“false”);
}
异常在container.AddFacility()调用中引发

以下是项目中当前引用的Castle Windsor和NHibernate组件版本列表:

  • Castle.Core 3.3.0
  • 温莎城堡3.3.0
  • Castle.Facilities.NHibernateIntegration 1.1.0.39
  • Castle.Services.Transaction 2.5.0.0
  • NHibernate 3.1.0.4000
  • FluentNHibernate 2.0.0.0
  • Iesi.Collections 2.1.0.4000
温莎城堡的哪个版本与NHibernate集成设施兼容?是否有可以下载的修补程序来解决此问题

我在stackoverflow上发现了一个类似的问题,并在projects tracker上记录了一个问题以寻求解决方案。但这是2011年12月的Castle Windsor 3.0版,请参见下面的链接

修复程序不是在Castle.Core 3.3.0中完成的吗

或者我遗漏了什么,谢谢你的帮助/建议


谢谢

NHibernateIntegration设施1.1.0不支持温莎城堡3。在最后一位维修人员离开后的4年里,Castle项目一直没有对该设施进行维修,在没有一个用户提交拉取请求后,登录到我们的旧问题跟踪器的用户就死在那里了,所以这些补丁都没有被应用

请参阅我们9月份登录的问题跟踪程序上的本期,其中包含到Git repo中仍然存在的源代码的链接,以及使其恢复活力的建议: