NServiceBus, похоже, жестко ссылается на версию 2.0.0.0 через Ionic.Zip.dll
Я использую NServiceBus в сложном решении (более 150 проектов, многие из них используют NSB). До прошлой ночи, когда я больше не мог этого выносить, у каждого проекта были свои собственные целевые каталоги (./bin/debug и./bin/release). Из-за зависимостей между моими проектами я много раз создавал и перестраивал одни и те же двоичные файлы, поэтому мы решили полностью перейти на общий выходной каталог, что значительно сокращает время сборки решения. Все идет нормально...
Тем не менее, когда я пытался запустить свой проект, он не может дать мне ошибку:
Warning 1 : Found conflicts between different versions of the same dependent assembly that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed. C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets 1697 5 My.Assembly.Goes.Here
Ох, ох Итак, я покорно включаю детализацию журнала, очищаю и перестраиваю весь беспорядок, чтобы найти это в выводе журнала:
30>------ Build started: Project: My.Assembly.Goes.Here, Configuration: Debug Any CPU ------
28>Building with tools version "12.0".
<Lots of stuff omitted...>
28> There was a conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes".
28> "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was chosen because it was primary and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes" was not.
28> References which depend on "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll].
<etcetera...>
Выходит Dependency Walker (отличный инструмент, кстати). Хорошо, так что же зависит от старого 2.0 фреймворка? Ищите все ссылки на mscorlib и... Одна из этих вещей не похожа на другую...
NServiceBus.Hosting.Azure зависит от Ionic.Zip.dll, который, в свою очередь, зависит от версии mscorlib.dll версии 2.0.0.0. Уч. FWIW, версия NServiceBus.Hosting.Azure, которая делает это, 5.3.2.0.
Мне кажется, что это похоже на проблему здесь: https://github.com/Particular/NServiceBus/issues/664
Можно ли обойти это с помощью перенаправления привязки сборки? Есть ли какой-то способ для меня, чтобы сказать NSB, чтобы сказать Ionic.Zip.dll, что версия mscorlib.dll 4.0.0.0 в порядке, большое спасибо?
Или это ошибка NSB?
Заранее спасибо.
1 ответ
На мой взгляд, должно работать перенаправление привязки на mscorlib, или вы можете попробовать перенаправление привязки на более новую версию dotnetziplib (Ionic), которая нацелена на 4.0