假设您有项目A,并且它具有各种dll依赖项,但树看起来像这样:
Project A
=> Project B
=> Project C
=> Project D
=> Project C
=> Project E
=> Project C, v2
有没有办法使用Project E,因为它依赖于较新版本的Project C(dll),即使项目的其余部分使用的是同一个库的旧版本?
如果没有办法,或者会引起大量咬牙切齿的方法,是否有一种前瞻性的解决方案可以防止这种情况在未来的项目中发生?
答案 0 :(得分:5)
从长期解决方案来看,不确定这是否适用于您的环境,但我们有多个依赖项目(从框架到依赖系统)我们参考。我们使用subversion并使用externals引用libary / source文件夹,以便所有依赖项目引用相同的版本。
我们还有一些项目,我们引入依赖库,它们在编译时可能使用旧版本,而不是主要引用应用程序包含的新的和向后兼容的共享库,在这种情况下,我们使用{{3使用配置条目。
我们实际上有一个类似的构建过程标记(其中_BUILD_VERSION_被构建过程替换为当前构建号):
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Company.DependentAssembly" publicKeyToken="8510b56c219df72e"/>
<bindingRedirect oldVersion="1.0.0.0-99.0.0.0" newVersion="_BUILD_VERSION_"/>
</dependentAssembly>
同一篇文章还提供了一种在项目中引用相同程序集的多个版本副本的方法。