我们正在运行自己的NuGet服务器来打包我们自己的项目。在这种情况下,我们将重用一些测试构建器。单元测试在本地运行时通过,但是通过TFS 2015时,由于以下错误而失败。
我已经在这些项目/程序包中完成了“在文件中查找”以找到2.6.4依赖关系,但没有成功。
什么是AutoUnify,在哪里配置AutoUnify?禁用AutoUnify正确解决此问题的方法吗?
Unified Dependency "nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77".
Using this version instead of original version "2.6.3.13283" in "D:\Agents\Agent1\c81e9061\eServices\.NugetLocalCache\EnterpriseApplications.Framework.Testing.1.0.0.0\lib\net45\EnterpriseApplications.Framework.Testing.dll" because AutoUnify is 'true'.
Using this version instead of original version "2.6.3.13283" in "D:\Agents\Agent1\c81e9061\eServices\.NugetLocalCache\EnterpriseApplications.Framework.Testing.Mvc.1.0.0.0\lib\net451\EnterpriseApplications.Framework.Testing.Mvc.dll" because AutoUnify is 'true'.
Could not resolve this reference. Could not locate the assembly "nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
更新:AutoUnify的一个很好的解释是通过MSDN,但这没有解释如何禁用更新:这些特定的测试仅通过TFS Build失败,因为构建定义使用了NUnit Test适配器的版本。将此问题保留为开放状态,因为会很有趣地听到在哪里配置了AutoUnify。
最佳答案
不确定是否有一种方法可以直接“禁用”自动统一...但是,在VS2017中,当存在依赖项冲突时,您可能会使构建失败。当构建失败时,它将告诉您发生冲突的确切dll以及它们所在的项目。
使用此自定义属性修改您的.csproj
<MSBuildWarningsAsErrors>MSB3277</MSBuildWarningsAsErrors>
或在解决方案级别创建Directory.Build.props文件,以影响该解决方案中的所有项目。 Directory.Build.props应该具有与此xml类似的内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildWarningsAsErrors>MSB3277</MSBuildWarningsAsErrors>
</PropertyGroup>
</Project>