Appveyor平台的新功能,所以这可能只是我的天真。我将我的项目设置为从我的GitHub仓库构建。除了测试之外,这似乎有效。代码主要是.Net 4.0,因为它支持遗留项目 - 我现在无法将其移到后来的框架中。因为这个项目已经使用了Newtonsoft.Json,所以我不得不使用特定的版本。所有代码和测试都在本地运行。但是,一旦我设置了CI(并且让我的头脑让Nuget恢复发生),我仍然会在测试中完全失败。他们没有做任何壮观的事情。错误很简单 - Nuget正在推出版本6.0.8,但是测试的构建过程想要根据输出引用8.0.0.0:
发现测试...确定vstest.console / logger:Appveyor “C:\项目\ debuginterface \ Ratcow.Debugging.Server.Tests \ BIN \调试\ Ratcow.Debugging.Server.Tests.dll” Microsoft(R)测试执行命令行工具版本15.0.26228.0 版权所有(c)Microsoft Corporation。版权所有。开始 测试执行,请稍候...失败BasicTest_ValueTypes错误 消息:测试方法 Ratcow.Debugging.Server.Tests.MainUnitTest.BasicTest_ValueTypes扔了 exception:System.IO.FileLoadException:无法加载文件或 程序集'Newtonsoft.Json,版本= 8.0.0.0,文化=中立, PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个依赖项。该 找到程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)---> System.IO.FileLoadException:无法加载文件或程序集 'Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个依赖项。该 找到程序集的清单定义与程序集不匹配 参考。 (来自HRESULT的异常:0x80131040)堆栈跟踪: 在Ratcow.Debugging.Server.DebugInterface.InstanceAsString(Object value)at at Ratcow.Debugging.Server.DebugInterface.GetVariableValue(字符串 variableName)in C:\项目\ debuginterface \ Ratcow.Debugging.Server \ DebugInterface.cs:行 104点 Ratcow.Debugging.Server.Tests.MainUnitTest.BasicTest_ValueTypes()in C:\项目\ debuginterface \ Ratcow.Debugging.Server.Tests \ MainUnitTest.cs:行 35
我可以接受这可能是正确的 - 除了代码引用6.0.8之外,packages.config也是如此:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MSTest.TestAdapter" version="1.1.11" targetFramework="net452" />
<package id="MSTest.TestFramework" version="1.1.11" targetFramework="net452" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net40" />
</packages>
有什么想法吗?启用测试的最后一次失败构建是here。很高兴在多台台式机和笔记本电脑上运行VS2017并进行测试。
答案 0 :(得分:0)
好的,感谢上面的Jeroen提示(我打算尝试这个,但是在发布这个问题之前我没有及早的时间),答案有两个:
根据建议,添加dependentAssembly声明确实有效。这是我添加到测试项目的App.config中的内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json"
<publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="8.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</configuration>
测试现在在命令行上运行,并且刚刚将代码提交给GitHub,看起来Appveyor也构建并运行测试。