首先让我在这篇文章的前言中说,我在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设置的每个组合,以及团队中的各种设置市。似乎无论我的设置如何,我都会收到此错误。有人有什么想法吗?
答案 0 :(得分:2)
感谢@adrianbanks对此。结果我指向.csproj文件来执行测试。 Per Adrian,我将TeamCity配置为指向单元测试dll,一切正常。