Newtson.Json FileLoadException 仅在 CI 服务器上

Newtson.Json FileLoadException only on CI server

TeamCity 9 和 NUnit 2.6.4 在 运行 测试中遇到问题,在本地一切正常。问题似乎与对 Newtonsoft.Json 的引用有关(像往常一样)。

Test(s) failed. System.IO.FileLoadException : Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter..ctor()
   at System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor()
   at System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters()
   at System.Web.Http.HttpConfiguration.DefaultFormatters(HttpConfiguration config)
   at System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes)
   at MyCompany.Testing.WebAPI.ControllerTestAssistant.PrepareActionContext(HttpRequestMessage request, IHttpController controller) 
   at MyCompany.Web.Http.HttpResponseBuilderTests.PrepareActionContext(HttpRequestMessage request) 
   at MyCompany.Web.Http.HttpResponseBuilderTests.PrepareBuilder(String url) 
   at MyCompany.Web.Http.HttpResponseBuilderTests.HttpResponseBuilder_BuildResponse__when__success_get_with_no_rowversion__then__200OK_with_no_etag() 

解决方案非常庞大。我已经将所有 Json.NET 包更新为 7.x 并且我已经检查了所有配置文件中的所有绑定引用。

在所有团队的开发电脑上本地一切正常。这只是构建服务器上的问题,在 NUnit 运行器下。

我认为 System.Net.Http.Formatting 对版本 6.x 有严格的参考。就好像测试运行器没有注意到配置中的绑定重定向。

我要开始减肥了Json.NET,越来越麻烦了,而且VS没有提供解决此类问题的帮助也无济于事。

感谢您的帮助。

卢克


融合日志显示没有看到程序集绑定重定向,即使它在那里。同事检查了精神状态。

很奇怪。

已为测试项目删除 app.config 中的所有其他重定向,并尝试仅使用 Json.NET 重定向。


No application configuration file found

Fusion日志中,越来越近了!

知道了。

我引用了另一个测试 DLL,所以 bin 文件夹中有两个 *Tests.DLL 文件。

TeamCity 是通过通配符配置的,然后 运行 在两者中进行了测试。引用的 DLL 没有配置文件,无法加载 Json.NET

的正确版本

引用的 DLL 中的测试已经 运行 并通过。我引用了另一个测试库以获得一些辅助设置代码!

通常,我将 TeamCity 配置为 运行 在显式 DLL 路径上进行测试。