运行单元测试时出现NUnit System.BadImageFormatException

时间:2013-02-24 21:18:00

标签: c# .net nunit teamcity

首先让我在这篇文章的前言中说,我在TeamCity论坛和SO上看到了关于这个主题的各种讨论,但似乎没有什么对我有用。

我有一个C#.Net解决方案,并在TeamCity中配置了两个步骤,一个构建步骤和一个单元测试步骤。运行NUnit测试时,我在TeamCity中收到以下错误:

  

[步骤2/2]开始:
  C:\ TeamCity的\ buildAgent \插件\ dotnetPlugin \ BIN \ JetBrains.BuildServer.NUnitLauncher.exe
  目录中的#TeamCityImplicit [步骤2/2]:C:\ TeamCity \ buildAgent \ work \ trunk [步骤2/2] 2013-02-23 18:00:11,827
  [4972] WARN JetBrains.TeamCity.Utils.PE.PEReader - 无法解析   程序集文件:可执行文件(.exe)或库(.dll)的格式为   [步骤2/2] System.BadImageFormatException:可执行文件的格式   (.exe)或库(.dll)无效。 [步骤2/2]在   中的Mono.Cecil.PE.ImageReader.ReadImage()   C:\ BuildAgent \工作\ 4fb4fc7600eac5a9的\ src \ utils的\ SRC \ PE \ ImageReader.cs:行   84 [步骤2/2]在
  JetBrains.TeamCity.Utils.PE.PEReader.DescribeAssemblyRuntime(字符串   assemblyFile)在   C:\ BuildAgent \工作\ 4fb4fc7600eac5a9的\ src \ utils的\ SRC \ PE \ PEReader.cs:行   22 [步骤2/2]启动TeamCity NUnit测试运行器[步骤2/2]运行   在.NET Framework v2.0 x64下进行NUnit-2.6.2测试[步骤2/2]
  ## teamcity [buildStatus text ='NUnit error,{build.status.text}'status ='ERROR'] [步骤2/2]运行测试的NUnit错误   '... UnitTests.csproj'程序集装载程序集编译为
  无法解析程序集文件:可执行文件的格式(.exe)或   库(.dll)无效。 NUnit runner runtime是v2.0.50727,x64
  System.BadImageFormatException:无法加载文件或程序集
  '... UnitTests.csproj'或其依赖项之一。一次尝试   加载格式不正确的程序。档案名称:
  '.... UnitTests.csproj'---> System.BadImageFormatException:无法   加载文件或程序集'.... UnitTests.csproj'或其中一个   依赖。尝试加载程序不正确   格式。文件名:'.... UnitTests.csproj'

我正在运行TeamCity 7.1.4。我使用的是Visual Studio 2012,我目前的配置是64位。我正在使用nunit 2.62运行时版本2.0。

我已按如下方式配置了TeamCity设置:

MSBuild步骤: .NET Frameworrk 4.5 运行平台:x64

NUnit步骤: NUnit Runner:2.6.2 .NET运行时:平台x64 版本:v2.0

当使用resharper运行时,单元测试所有通过。

知道BadImageFormatExceptions通常与在x86中编译64位项目有关,反之亦然,我已经尝试了解决方案的配置管理器的64 / x86设置的每个组合,以及团队中的各种设置市。似乎无论我的设置如何,我都会收到此错误。有人有什么想法吗?

1 个答案:

答案 0 :(得分:2)

感谢@adrianbanks对此。结果我指向.csproj文件来执行测试。 Per Adrian,我将TeamCity配置为指向单元测试dll,一切正常。