Как разрешить конфликты версий Castle.Windsor и MoQ для сборки Castle.Core

В моем проекте мне нужно одновременно использовать библиотеки Castle.Windsor и Moq. Windsor требует, чтобы в проекте также была ссылка на Castle.Core.

Проблема начинается, когда я пытаюсь использовать методы из Castle.Core: Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(...);

Проблема 1: если я использую Moq.dll из папки NET40, я получил встроенную ошибку "Тип Castle.DynamicProxy.Generators.AttributesToAvoidReplicating" существует в обоих '... \ Windsor \ dotNet40 \ Castle.Core .dll 'и' ... \ MoQ \ NET40 \ Moq.dll '"

Проблема2: если я использую Moq.dll из папки «NET40-RequiresCastle», что логично в моей ситуации, у меня возникает конфликт версий - Moq.dll использует Castle.Core, Version = 2.5.0.0, но Виндзор использует Castle.Core, Версия = 2.5.1.0


person Andris    schedule 11.11.2011    source источник
comment
Moq используется для модульного тестирования. Во время модульного тестирования вам действительно не следует использовать свой контейнер IoC (Windsor). В каком варианте использования Windsor нужно использовать в модульных тестах с Moq? Или вы используете Moq в производственном коде с Windsor?   -  person PatrickSteele    schedule 11.11.2011
comment
Спасибо, Патрик, за ваш комментарий. Решил проблему - см. Ответ.   -  person Andris    schedule 15.11.2011


Ответы (1)


Проблему можно решить с помощью привязки сборки - 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>
person Andris    schedule 15.11.2011
comment
вот это произведение, которое вы не очень часто видите. +1 за напоминание об этом :) - person quetzalcoatl; 16.03.2012