2011-04-06 78 views
41

我有一個必須在x64模式下運行的C#應用​​程序。問題是我嘗試創建在x64應用程序中運行方法的單元測試,並且單元測試項目甚至不會構建。它在嘗試構建時遇到以下錯誤。如何獲得在x64平臺上運行的單元測試

錯誤加載C:..... \ BIN \ 64 \調試.... UnitTests.dll:無法加載 測試容器「C:..... \ BIN \ 64 \調試.... UnitTests.dll「或其一個 的依賴關係。如果將測試項目組件構建爲64 位組件,則無法加載。當您構建測試項目 程序集時,請爲該平臺選擇「任何CPU」。要在64位處理器上以64位 位模式運行測試,必須在 「主機」選項卡中更改測試設置,才能在32位進程中運行測試。錯誤詳細信息: 無法加載文件或程序集 'file:/// C:........ UnitTests \ bin \ x64 \ Debug .... UnitTests.dll'或 其依賴項之一。試圖加載一個 格式不正確的程序。

我試圖將單元測試更改爲x64和任何CPU,但仍然無法讓它運行。有沒有解決這個問題?

+0

下默認的目標平臺,請問您的單元測試庫都只能是x86的介紹信嗎? – Tejs 2011-04-06 19:16:08

回答

36

我假設你使用Visual Studios測試框架,因爲你沒有提及其他。 在VS2010中,您可以強制測試主機以x64運行。 將您的程序集構建爲任何CPU或x64,然後將測試主機設置爲x64。

http://msdn.microsoft.com/en-us/library/ee782531.aspx

+0

是的,對不起,這是Visual Studio 2010 – 2011-04-06 20:02:25

+1

很好的答案,並解決了我的問題。我不得不做更多的事情來解決這個問題。 http://stackoverflow.com/questions/2314887/mstest-no-tests-are-run-because-no-tests-are-loaded-or-the-selected-tests-are-d – 2011-04-06 20:13:44

+0

哎呦忘了解釋我什麼不得不做。我必須按照此處所述將設置更改爲配置管理器中的任意CPU。 「你需要確保裝配正在建造中。在我的情況下,這個錯誤是由於以下情況的組合:(a)在「配置管理器」中,「構建」按鈕沒有打勾(b)所有其他組件都設置爲x32,這個設置爲「配置管理器」中的「任何CPU」(c)它抱怨說它需要一個已簽名的程序集,所以我需要在項目屬性中設置「 – 2011-04-06 20:15:17

1

我有類似的問題。 Visual Studio 2010中存在一個奇怪的問題(在x64下),這會導致在將新項目添加到現有解決方案時更改目標CPU。你確定所有的引用和CPU目標都是x64嗎?

0

您將需要測試項目的所有引用設置爲本地(設置爲true)。我之前得到了這個問題,希望它也能適用於你(我使用的是Windows 7 64位+ VS2012)

0

如果清除並重建所有相關組件,則可以修復此錯誤。必須有一個文件意外損壞。

VS有一點需要改進,就是當檢測到壞格式異常時,請報告文件名。然後開發人員只能重建該文件。

38

在VS 2012以上,你可以選擇從Test菜單Test Settings|Default Processor Architecture

Visual Studio Test Settings

+2

_That_是我錯過的複選標記。我通過測試人員和測試項目的項目屬性搜索了所有年齡,並且歸結爲單擊測試設置中的複選標記...§$%&#*! – 2015-11-17 07:10:40

+0

如果使用Resharper的單元測試運行器,請檢查它的平臺:http://stackoverflow.com/a/34517992/40422 – 2017-05-04 13:30:57