3

我有一個VS2008解決方案,包含三個項目:C#ASP.NET Web服務,它使用C++/CLI DLL,而後者又是調用本地C++ DLL的函數。所有參考都已正確設置。在web服務bin文件夾中,有三個DLL。問題是當我點擊F5時,瀏覽器中的頁面通知我關於FileNotFoundException,來自HRESULT 0x8007007E,找不到指定的模塊在Visual Studio 2008中調試ASP.NET Web服務,C++/CLI DLL和本地DLL

缺少的模塊是我的本機DLL。 ASP.NET Development Server在%USERPROFILE%\AppData\Local\Temp\Temporary ASP.NET Files\root中複製(並使用)我的C++/CLI DLL,但不是本地的。如果我用C++/CLI DLL手動將原生DLL複製到相同的文件夾,那麼我可以調試我的Web服務。但是,這種複製看起來不正確。

在PATH的某個地方複製本機DLL也感覺不對,因爲其他開發人員需要記住它。

這裏有一個similar question和一個​​鏈接在一個答案。給定的解決方案要求我改變DLL的延遲加載,這似乎是一個半熟的解決方法,因爲它需要由於開發障礙而改變最終產品。

是否有適當的方法來調試Web服務,C++ CLI DLL和本機DLL的組合?

+0

這裏可能是黑暗中的一個鏡頭,但是當你運行你的服務時,會創建一個過程?如果可能的話在你的機器上加載服務代碼的一個實例,當它運行在vs你可以去調試(或有時工具) - >附加進程。通過這種方式,您可以查看服務正在運行時發生的情況 – clamchoda

+0

缺少本機DLL正在發生,這方面沒有任何謎團。我的問題是如何「解僱」它? – Dialecticus

回答

3

問題在於編譯器無法確定本機C++庫的位置。

所以,有幾種方法可以解決這個問題。

  1. 使用DLLImport在運行時使用相對或絕對路徑加載dll。
  2. path環境變量設置爲它的位置。
  3. 在項目的構建過程中變得非常複雜(請參閱下面的鏈接,您明顯已經閱讀過該鏈接)。

http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx

有超出沒有真正的答案。

相關問題