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

本文关键字:NUnit System BadImageFormatException 单元测试 运行 | 更新日期: 2023-09-27 18:00:46

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

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

[步骤2/2]启动:
C: ''TeamCity''buildAgent''plugins''dotnetPlugin''bin''JetBrains.BuildServer.NUnitLauncher.exe
#TeamCityImplict[Step 2/2],位于目录:C:''TeamCity''buildAgent''work''trunk[Step 2/2]2013-02-23 18:00:11827
[4972]WARN JetBrains.TeamCity.Utils.PE.PEReader-无法分析程序集文件:可执行文件(.exe)或库(.dll)的格式为[Step 2/2]System.BadImageFormatException:可执行文件的格式(.exe)或库(.dll)无效。[步骤2/2],位于

中的Mono.Cecil.PE.ImageReader.ReadImage()c: ''BuildAgent''work''4fb4fc7600eac5a9''src''Utils''src''PE''ImageReader.cs:line84[步骤2/2],位于
JetBrains.TeamCity.Utils.PE.PEReader.DescribeAssemblyRuntime(字符串assemblyFile)c: ''BuildAgent''work''4fb4fc7600eac5a9''src''Utils''src''PE''PEReader.cs:line22[步骤2/2]启动TeamCity NUnit测试运行程序[步骤2/2]运行NUnit-2.6.2在.NET Framework v2.0 x64下的测试[步骤2/2]
##teamcity[buildStatus text='NUnit error,{build.status.text}'status='error'][Step 2/2]NUnit error正在
中运行测试'。。。UnitTests.csproj'程序集正在为
编译加载程序集无法分析程序集文件:可执行文件(.exe)的格式或库(.dll)无效。NUnit运行时版本为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 Framework 4.5运行平台:x64

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

单元测试在使用resharper运行时全部通过。

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

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

感谢@adrianbanks。原来我指向了.csproj文件来执行测试。根据Adrian的说法,我将TeamCity配置为指向单元测试dll,一切都正常。