我在一个复杂的解决方案中使用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...>
Out With Dependency Walker(伟大的工具,顺便说一句)。好的,那么什么依赖于旧的2.0框架?寻找对mscorlib的每一个引用......其中一个与其他东西不同......
NServiceBus.Hosting.Azure依赖于Ionic.Zip.dll,而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错误?
提前致谢。
答案 0 :(得分:2)
在我看来,mscorlib上的绑定重定向应该可行,或者您可以尝试针对4.0的更新版本的dotnetziplib(Ionic)进行绑定重定向