0

使用 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>();
    }
    

这是 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"; }
    }
}

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

打开 EnumerableExtensions.cs 的文件对话框

对我来说,这似乎是 DLL 有问题,但是当我在 Castle Project Google Group 上发布有关此内容时,有人建议我在我的应用程序中有不兼容的 Windsor 版本。这是真的还是看起来像是在发生其他事情?

4

1 回答 1

0

该对话框是 Visual Studio 询问异常产生的文件的源代码。单击取消,Visual Studio 将改为在您自己的代码中的某处停止并显示异常。

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

于 2012-09-30T19:39:23.660 回答