2013-02-24 119 views
3

首先讓我先說這篇文章,說我已經在TeamCity論壇上看到關於這個主題的各種討論,並且在這裏,但沒有任何東西似乎適用於我。NUnit System.BadImageFormatException當運行單元測試

我有一個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]警告JetBrains.TeamCity.Utils。 PE.PEReader - 無法解析 程序集文件:可執行文件(.exe)或庫(.dll)的格式爲 [步驟2/2] System.BadImageFormatException:可執行文件 (.exe)或庫(.dll)的格式。 DLL)無效。在
C [步驟2/2]在
Mono.Cecil.PE.ImageReader.ReadImage():\ 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亞軍運行時是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 運行平臺:64

NUnit的步驟: NUnit的亞軍:2.6.2 .NET運行庫:平臺x64 版本:v2.0

當使用resharper運行時,單元測試所有通過。

瞭解BadImageFormatExceptions通常與編譯x86中的64位項目有關,反之亦然,我已經嘗試了幾乎所有64/86設置的組合,以用於解決方案的配置管理器以及各種設置隊城市。這似乎不管我的設置,我得到這個錯誤。有人有主意嗎?

+4

'BadImageFormatException'也意味着您正在嘗試加載不是.Net程序集的文件。錯誤消息表明您正在嘗試加載'UnitTests.csproj',而不是程序集。 – adrianbanks 2013-02-24 21:21:25

回答

2

感謝@adrianbanks在這一個。原來我指向.csproj文件來執行測試。根據Adrian的說法,我將TeamCity配置爲指向單元測試DLL,並且一切正常。

+0

很高興能有所幫助。 – adrianbanks 2013-02-24 21:47:45