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。我已经检查了所有配置文件中的所有绑定引用。
在所有团队的开发pc上一切都很好。这个问题只出现在构建服务器上,在NUnit运行器下。
我认为System.Net.Http.Formatting
在版本6.x上有一个硬引用。就好像测试运行器没有注意到配置中的绑定重定向。
我要开始戒掉Json了。. NET,它变得比它的价值更麻烦,而且VS没有提供任何帮助来解决这些问题也无济于事。
谢谢你的帮助。
《路加福音》Fusion日志显示没有看到程序集绑定重定向,尽管它在那里。检查同事的完整性
很奇怪。
删除了app.config
中所有其他重定向,用于测试项目,并尝试仅使用Json。净重定向。
没有找到应用程序配置文件
在融合日志,越来越近!
明白了
我有一个引用到另一个测试DLL,所以bin文件夹中最终有两个*Tests.DLL
文件。
TeamCity通过通配符配置,然后在两者中运行测试。引用的DLL没有配置文件,无法加载正确版本的Json。净
引用的DLL中的测试已经运行并通过。我引用了另一个测试库,以获得一些帮助器设置代码!
通常,我将TeamCity配置为在显式DLL路径上运行测试。