我有一个TeamCity服务器设置为构建多个解决方案,然后使用NUnit Test Runner在其中运行单元测试.
这已经好几个月了; 但是,使用我们的最新版本,我遇到以下错误:
SetUp方法失败.SetUp:System.IO.FileLoadException:无法加载文件或程序集'log4net,Version = 1.2.13.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
它只发生在整个系统中包含数百个测试的单个TestFixture中.使用ReSharper或NUnit GUI运行时,测试全部通过.
Nuget包在被测试的项目和测试项目本身中都被正确引用.由于只安装了一个版本的Log4Net,因此不需要运行时程序集绑定重定向.
是否有其他人有类似的问题,他们已经解决或任何想法可能是什么问题?为什么它在本地工作而不在服务器上工作,特别是考虑到先前传递的相同测试.
我本地计算机和TeamCity服务器上的NUnit版本是相同的.
我只会回答我自己的问题,以防其他人遇到这个问题。
问题似乎是 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>
Run Code Online (Sandbox Code Playgroud)
我完全不知道为什么这只在大约 60 个正在构建的项目中失败,或者为什么它在我的开发环境 VS/ReSharper Nunit 测试运行器中工作,但在 TeamCity 中失败!
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |