我有一個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
謝謝。我試過並更新了這個問題。 –
我還發現測試PC上的錯誤消息與buildserver上的錯誤消息不同...... –
當您的某個程序集是x64並且您正在運行x86或反之亦然時,通常會看到BadImageFormatException。 –