0

我有一個C++/CLI DLL使用一些C++ DLL(都爲32位構建)。我想通過使用NUnit 2.5.8.10295一個C#DLL中對其進行測試(更改爲2.6.4並沒有改變結果)NUnit:無法加載文件或程序集'some.dll'或其某個依賴項。無法找到指定的模塊

我用這到底被擴大到這個批處理文件:

nunit-console-x86.exe "someUnitTests.dll" /framework=4.0.30319 /xml=NUnitResult_someUnitTests.xml 

使用此命令,我的開發PC(64位Win 10 Enterprise Visual Studio 2013)上的測試運行良好。當從Visual Studio Professional 2013啓動nunit-console-x86.exe並將工作目錄設置爲兩個DLL的輸出文件夾時,它也能正常工作。

當構建服務器上執行的測試失敗,此消息(在Windows Server 2012 R2上運行詹金斯):

SetUp : System.IO.FileLoadException : Could not load file or assembly 'some.DLL' or one of its dependencies. A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A) 

我試圖在兩臺機器上比較安裝框架和運行時(沒有看到明顯除了使用VS 2013 Express構建服務器之外,還有很大的差異我也嘗試過使用SysInternals ProcessMonitor,但沒有成功。依賴沃克的輸出我不明白。

任何有關使用技巧或工具的提示?

更新: 如果我添加/ noshadow它不會在我的開發PC上運行了。在Visual Studio中,nunit-console-x86崩潰,而在命令行上,我收到了與buildserver上相同的消息。在沒有任何Visual Studio但使用vc_redist 2013的情況下,測試計算機與Windows 7進行了更仔細的觀察:啓用了陰影複製(=沒有/ noshadow)我得到這個:

SetUp : System.IO.FileNotFoundException : Could not load file or assembly 'some.DLL' or one of its dependencies. The specified module could not be found. 

隨着/ noshadow錯誤默認變成BadImageFormatException

回答

0

NUnit的2.x的卷影副本文件,但陰影複製不復制本地組件。我相信它是在Visual Studio中爲你工作的,因爲你正在設置工作目錄。

要在NUnit中禁用卷影複製,請傳遞/noshadow命令行選項。

另外,NUnit 3中的默認行爲是不復制陰影。

+0

謝謝。我試過並更新了這個問題。 –

+0

我還發現測試PC上的錯誤消息與buildserver上的錯誤消息不同...... –

+0

當您的某個程序集是x64並且您正在運行x86或反之亦然時,通常會看到BadImageFormatException。 –

相關問題