使用Castle.Facilities.NHibernateFacility提示EnumerableExtensions.cs

时间:2012-09-29 09:51:20

标签: c# nhibernate castle-windsor

使用NHibernateFacility for Castle Windsor时,系统会提示我输入一个名为EnumerableExtensions.cs的文件。我通过以下步骤复制了这个(所有包都是从NuGet安装的):

  1. 创建新的WPF项目
  2. 安装Castle.Core 3.1.0
  3. 安装Castle.Windsor 3.1.0
  4. 安装Castle.FactorySupportFacility 3.1.0
  5. 安装Castle.Transactions 3.2.207.2207
  6. 安装Castle.Facilities.AutoTx 3.2.207.2207
  7. 安装NHibernate 3.3.1.4000
  8. 安装Fluent NHibernate 1.3.0.733
  9. 安装Castle.Facilities.NHibernate 0.7.1.23602
  10. 覆盖App.xaml.cs中的OnStartup()以创建Windsor容器并向其添加设施。请参阅下面的代码。

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
    
        IWindsorContainer container = new WindsorContainer();
        container.AddFacility<AutoTxFacility>();
        container.Register(
            Component.For<INHibernateInstaller>()
            .ImplementedBy<FluentNHibernateInstaller>());
        container.AddFacility<NHibernateFacility>();
    }
    
  11. 这是FluentNHibernateInstaller.cs中的代码

    public class FluentNHibernateInstaller : INHibernateInstaller
    {
        public FluentConfiguration BuildFluent()
        {
            return Fluently.Configure();
        }
    
        private IPersistenceConfigurer SetupDatabase()
        {
            return MsSqlConfiguration.MsSql2008
                .ConnectionString(c => c
                    .Server("Server")
                    .Database("Database")
                    .Username("User")
                    .Password("Password"));
        }
    
        public Maybe<NHibernate.IInterceptor> Interceptor
        {
            get { return Maybe.None<NHibernate.IInterceptor>(); }
        }
    
        public bool IsDefault
        {
            get { return true; }
        }
    
        public void Registered(ISessionFactory factory)
        {
    
        }
    
        public string SessionFactoryKey
        {
            get { return "sf.default"; }
        }
    }
    

    当我运行应用程序时,这是我提供的对话框:

    Open file dialog for EnumerableExtensions.cs

    对我来说,这看起来似乎是DLL的错误,但是当我在Castle Project Google Group it was suggested that I had incompatible versions of Windsor in my app上发布此内容时。这是真的还是看起来像是在发生其他事情?

1 个答案:

答案 0 :(得分:0)

该对话框是Visual Studio,要求提供发生异常的文件的源代码。单击取消,Visual Studio将在您自己的代码中的某处停止并显示异常。

您可以通过删除发生异常的组件的pdb文件来阻止该对话框(但如果您想在受影响的组件中报告错误,这也会导致不太有用的堆栈跟踪)。