2010-06-04 75 views
0

我知道你需要打開'Native Code'調試器才能進入pinvoke'd dll,但是我甚至沒有進入這一點。取而代之的是,當我嘗試步入DLL我收到以下異常調試asp.net&pinvoke

「無法加載DLL‘Native.dll’:指定的模塊找不到(異常來自HRESULT:0x8007007E)。」

如果我檢查我的模塊,我發現當前的.Net dll位於: C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ project \ c4e2b8a9 \ 1234a123 \ assembly \ d12 \ de123456 \ 12345678_0304cb01 \ dotnet.dll

所以它是有道理的,我沒有找到我pinvoked DLL,因爲它不存在於此路徑。我該如何做到這一點,以便當我的代碼從'Temporary ASP.Net files'位置運行時,它會看到我的pinvoked dll? (沒有硬編碼路徑)。

目前我decleration如下:

[DllImport("Native.dll")] 
    public static extern int RunTest(); 

編輯:

我發現了一個類似的問題,有一些很好的建議。 Unmanaged DLLs fail to load on ASP.NET server

+0

嘗試將其放置到Windows或system32目錄。 – 2010-06-04 17:26:55

回答

1

爲了使pinvoke找到dll,dll必須位於.net dll附近或PATH變量中的某個目錄中。您可以將應用程序的路徑動態添加到PATH環境。變量處理使用環境類。但是你仍然需要在運行時知道應用程序的路徑。