2010-08-23 79 views
2

I'have以下情況:NUnit的單元測試找不到在測試類中的非託管的DLL

  1. 我有一個Delphi的DLL(非託管)的作品。我有一個勝利形式的應用程序(一個概念應用程序的證明)的作品。 dll(及其所有依賴項)被複制到應用程序的Bin/Debug目錄中。

  2. 我已經創建了一個.NET託管庫,它有一個類是dll的封裝類。所有的dll和dll的依賴關係都被複制到/ Bin/Debug文件夾中。

  3. 在我的託管庫的單元測試項目中,我創建了一個包裝類的單元測試。當運行單元測試中示出了以下錯誤:

DAEcommerce.Logic.Tests.Infrastructure.L3.L3DatabaseConnectionTest.OpenClose_ProperParameters_ActiveSetToTrueAndFalse: System.DllNotFoundException:無法 加載DLL 'AttrbInterface.dll' :A 動態鏈接庫(DLL) 初始化例程失敗。 (來自HRESULT的例外:0x8007045A)

將有問題的dll複製到單元測試項目的Bin/Debug文件夾中。我已經嘗試將其複製到Windows/system32,將其添加到Windows路徑並將其複製到NUnit exe所在的文件夾中。它只是不起作用。

我有以下問題:

  1. 問題是什麼?
  2. 我怎樣才能找到問題所在?
  3. 我該如何解決這個問題。
+0

嘗試使用dll dependeny walker加載dll。 www.dependencywalker.com – 2010-08-23 15:10:50

回答

0

嘗試使用Fusion Log Viewer實用程序從Windows SDK獲取有關加載.NET程序集時實際發生的事情的更多信息。

1

我在64位系統上遇到了與7z.dll和SevenZipSharp類似的問題。 7z.dll是32位,所以我必須確保使用nunit-x86.exe。我也不得不在NUnit設置中關閉影子複製,不知道爲什麼,但它不會加載7z.dll。