2011-11-11 14 views
2

私のプロジェクトでは、Castle.WindsorとMoqのDLLを同時に使用する必要があります。 WindsorはCastle.Coreも必要とします。私はCastle.Coreからメソッドを使用しようとするとCastle.WindsorとMoQのバージョンの競合を解決するにはCastle.Coreアセンブリのバージョンの競合

問題が開始されます: Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(...);

Problem1: 私はNET40フォルダからMoq.dllを使用している場合、私はエラー「型「城建てられました。 DynamicProxy.Generators.AttributesToAvoidReplicatingは '両方に存在する' ... \ウィンザー\ dotNet40 \ Castle.Core.dll 'と' ... \ MOQ \ NET40 \ Moq.dll」」

Problem2: をした場合、私はNET40-RequiresCastlからMoq.dllを使用する私の状況では、論理的には、私の状況では、私のバージョンの競合 - Moq.dllはCastle.Coreバージョン2.5.0.0を使用しているが、WindsorはCastle.Coreバージョン2.5.1.0を使用しています。

+4

ユニットテストにMoqが使用されています。ユニットテスト中は、IoCコンテナ(Windsor)を使用してはいけません。 MoqでユニットテストでWindsorを使用する必要があるユースケースは何ですか?あるいは、ウィンザーの生産コードでMoqを使用していますか? – PatrickSteele

+0

ありがとう、パトリック、あなたのコメントです。私は自分の問題を解決しました - 答えを参照してください。 – Andris

答えて

8

問題は解決できるアセンブリバインディングを使用する - App.config:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.5.0.0" newVersion="2.5.1.0" /> 
    </dependentAssembly> 
</assemblyBinding> 
+1

これは非常によく見かけることのない部分です。 +1私にそれを思い出させるために:) – quetzalcoatl

関連する問題