我设置了一个TeamCity服务器来构建多个解决方案,然后使用NUnit Test Runner在其中运行单元测试。
这已经好几个月了;但是,使用我们的最新版本,我遇到以下错误:
SetUp方法失败。 SetUp:System.IO.FileLoadException:无法 加载文件或程序集' log4net,版本= 1.2.13.0,Culture = neutral, 公钥= 669e0ddf0bb1aa2a'或其中一个依赖项。该 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)
只有在整个系统中包含9个测试的单个TestFixture才会发生。使用ReSharper或NUnit GUI运行时,测试全部通过。
正在测试的项目和测试项目本身都正确引用了Nuget包。由于只安装了一个版本的Log4Net,因此不需要运行时程序集绑定重定向。
是否还有其他人遇到过他们已经解决过的类似问题,或者有什么想法可能会出现问题?为什么它在本地而不是在服务器上工作,特别是考虑到先前传递的相同测试。
本地计算机和TeamCity服务器上的NUnit版本都是相同的。
答案 0 :(得分:4)
我会回答我自己的问题,以防其他人遇到这个问题。
问题似乎是Log4Net的程序集清单包装错误,或者至少与人们的期望不同。
这是因为DLL版本为1.2.13,但NuGet包版本为2.0.3。
我们所做的是添加如下所示的装配绑定,这解决了问题:
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="2.0.3" />
</dependentAssembly>
我完全不知道为什么这只是因为~60正在构建的一个项目或为什么它在我的开发环境VS / ReSharper Nunit测试运行器中工作而失败,但TeamCity失败了!