什么是.NET世界上最好的做法来管理传递依赖造成版本冲突?
在详细信息:项目A依赖于项目B而这又取决于库C
也
项目A还取决于项目X依赖于不同的和(可能)库C的不兼容的版本
A-> B-> Cv1.0
&
A-> X-> Cv2.0
哪里
Cv1.0 <> Cv2.0
换句话说,有没有办法在那里,而不会造成冲突,项目A一起使用时,我可以有项目B和X各自使用自己的依赖。
注:我知道,我的理想不应该有这个问题在所有但作为外部库的依赖扩大,这将是一个不可避免的副作用。 所以我想知道它应该会出现如何最好地处理它。
还有很多类似的问题,堆栈溢出。 对于例如引用2个不同版本的log4net的在相同溶液中
摘要:
- 确保您包含主可执行文件夹内分别部署在文件夹中1.0和2.0的组件℃。
- 更改app.config文件,其中包括类似以下内容:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="C" publicKeyToken="C's public key token" /> <codeBase version="version string for C1.0 eg 1.0.0.0" href="1.0\C.dll" /> <codeBase version="version string for C2.0 eg 2.0.0.0" href="2.0\C.dll" /> </assemblyIdentity> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
您可以使用SN-T C.dll得到C的公钥标记
若C的V1.0和V2.0有不同的公共密钥(尽管理想的他们不应该),那么包括两个dependentAssembly标签。