0

Castle Windsor の NHibernateFacility を使用しているときに、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 グループに投稿したところ、アプリに互換性のないバージョンの Windsor が含まれていることが示唆されました。これは本当ですか、それとも何か他のことが起こっているように見えますか?

4

1 に答える 1

0

そのダイアログは、例外が発生したファイルのソース コードを求める Visual Studio です。[キャンセル] をクリックすると、代わりに Visual Studio が独自のコードのどこかで停止し、例外が表示されます。

例外が発生したコンポーネントの pdb ファイルを削除することで、ダイアログが表示されないようにすることができます (ただし、影響を受けるコンポーネントのバグを報告する場合に備えて、スタック トレースの有用性が低下します)。

于 2012-09-30T19:39:23.660 に答える