【发布时间】:2014-09-11 18:24:12
【问题描述】:
在构建时下载同一程序集的多个版本时会出现多个警告,如下所述。还有一点,由于 Nuget 中的依赖关系,大多数这些程序集都被下载了。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605):发现同一依赖程序集的不同版本之间存在冲突。
2>“Ionic.Zip, Version=1.9.1.5, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c”和“Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c”之间存在冲突。 2> 选择“Ionic.Zip, Version=1.9.1.5, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c”是因为它是主要的,而“Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c”不是。 2> 依赖于 "Ionic.Zip, Version=1.9.1.5, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c" [C:\TFS\DSCNC\Dev\CatalogServices\Background\packages\DotNetZip.1.9\lib\Ionic.Zip .dll]。
解决此问题的一种方法是检查 Packages 文件夹中的最新程序集。
是否有任何方法或配置设置可以防止下载同一程序集的多个版本?
【问题讨论】:
-
似乎最简单的解决方案是升级您的 Nuget 包,这样在同一解决方案中就不会出现同一包的冲突版本,因为这通常是造成这种情况的原因。
-
虽然上面提到的解决方案看起来很容易解决,但在很多情况下它可能不是正确的解决方案。因为多个 nuget 包可能依赖于不同版本的 nuget 包。因此,除了引用最新的 nuget 包外,您还应该将绑定重定向添加到为 nuget 包添加的最新版本,以便其他引用旧版本 nuget 的 nuget 将重定向到最新版本并且不会出现构建警告。
-
*.config 绑定重定向和不需要特定版本的引用确实是需要的。说得好。