假设您有Project A,并且它具有各种dll依赖项,但是树看起来像这样:
Project A
=> Project B
=> Project C
=> Project D
=> Project C
=> Project E
=> Project C, v2
是否有一种使用Project E的方法,因为它依赖于Project C(dll)的较新版本,即使该项目的其余部分正在使用该库的较旧版本也是如此?
如果没有办法,或者会引起极大的咬牙切齿,那么是否存在一种前瞻性的解决方案来防止这种情况在 future 的项目中发生?
最佳答案
从较长期的解决方案来看,不确定是否可以在您的环境中使用,但是我们引用了多个从属项目(从框架到从属系统)。我们使用subversion并使用外部变量来引用libary/source文件夹,以便所有从属项目都引用相同的版本。
我们也有一些项目引入了一些依赖库,这些依赖库在编译时可能使用的版本比主引用应用程序所包含的较新和向后兼容的共享库要大,在这种情况下,我们使用使用config条目的multiple version solution 。
实际上,我们的构建过程戳记是这样的(其中_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>
相同的文章还提供了引用项目中相同程序集的多个版本副本的方法。