我有通过NUnitGUI和Resharper的单元测试,但在TeamCity运行时失败

我有通过NUnitGUI和Resharper的单元测试,但在TeamCity运行时失败,nunit,teamcity,Nunit,Teamcity,我设置了一个TeamCity服务器来构建多个解决方案,然后使用NUnit测试运行程序在其中运行单元测试 这几个月来一直运作良好;但是,在最新版本中,我遇到了以下错误: 安装方法失败。安装程序:System.IO.FileLoadException:无法 加载文件或程序集的log4net,版本=1.2.13.0,区域性=中性, PublicKeyToken=669e0ddf0bb1aa2a'或其依赖项之一。这个 定位程序集的清单定义与程序集不匹配 参考资料。(来自HRESULT的异常:0x8013

我设置了一个TeamCity服务器来构建多个解决方案,然后使用NUnit测试运行程序在其中运行单元测试

这几个月来一直运作良好;但是,在最新版本中,我遇到了以下错误:

安装方法失败。安装程序:System.IO.FileLoadException:无法 加载文件或程序集的log4net,版本=1.2.13.0,区域性=中性, PublicKeyToken=669e0ddf0bb1aa2a'或其依赖项之一。这个 定位程序集的清单定义与程序集不匹配 参考资料。(来自HRESULT的异常:0x8013100)

这只发生在一个测试夹具上,该夹具包含整个系统中数百个测试中的9个测试。当使用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>


我完全不知道为什么在60个正在构建的项目中只有一个失败,或者为什么它在我的开发环境VS/ReSharper Nunit test runner中工作,但在TeamCity中失败了

错误消息表明您使用了错误的log4net版本,您是否检查了该部分是否正确?是的,当然。正如我所说,只安装了一个版本的log4netnuget包,当使用各种形式的交叉引用进行检查时,我认为它是同一个版本。它在本地构建并通过测试,所以我很确定它不是那么简单。不幸的是,你到底在哪里添加了这个绑定?我也有同样的问题,并且在我的assembly.dll.config中有一个绑定,但是到目前为止TeamCity只是忽略了这些设置;您只需将其添加到app.config下