1

アプリケーションの 1 つを Castle Windsor 2.1 から 2.5 にアップグレードしようとしています。

Castle DLL をすべて削除し、Castle の Web サイトからダウンロードした 2.5 バージョンを追加しました。

Castle.Core.dll Castle.Windsor.dll

移行を行う前に、プロジェクトに関する次の参照もありました。

Castle.Components.DictionaryAdapter.dll

ただし、Krzysztof Koźmic の投稿(こちら) によると、DictionaryAdapter が Castle.Core.dll にバンドルされるようになったため、そのような参照は不要になりました。

それを削除すると、あちこちで次のようなエラーが発生します。

エラー 6 型または名前空間名 'DictionaryComponent' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

エラー 64 型または名前空間名 'DictionaryKey' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

エラー 27 型または名前空間名 'DictionaryKeyAttribute' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

CORE に上記の型が実装されていない可能性があるため、Castle.Components.DictionaryAdapter.dll への参照を追加することにしました。

それを行うと、すべてのエラーが取り除かれましたが、新しいエラーが発生しました。

エラー 8 タイプ 'Castle.Components.DictionaryAdapter.DictionaryAdapterFactory' は 'd:.NET\app\libs\Castle.Core.dll' と 'd:.Net\app\libs\Castle.Components.DictionaryAdapter.dll' の両方に存在します'

エラーは、次のメソッドの実装で発生します。

internal static ISettingService GetServiceFromAdapterFactory(NameValueCollection collection)
{
    var adapter = new DictionaryAdapterFactory();
    return adapter.GetAdapter<ISettingService>(collection);
}

2.1 から 2.5 にアップグレードするときにこのような問題に直面した人はいますか?アドバイスをいただけますか?

前もって感謝します。

4

1 に答える 1

2

ここで私自身の質問に答えるために、これは私のコードで変更しなければならなかったものです。

  • すべてのDictionaryKeyをKeyAttributeになるように変更しました
  • すべてのDictionaryComponentをComponentAttributeになるように変更しました
  • Kernel.AddComponentの代わりにKernel.Registerを使用

そして明らかに、すべての 2.1 DLL を削除し、2.5 を追加しました。DictionaryAdapter.dll が削除され、Castle.Core.dll にバンドルされていることがわかります。

将来誰かに役立つことを願っています。

于 2012-07-16T08:15:11.760 に答える