2014-01-21 32 views
1

我想創造一個功能是通過一個64位的DLL執行的Web服務。當我嘗試構建此服務時,出現錯誤「試圖加載格式不正確的程序」。 但是,當我運行一個32位的DLL它工作正常。試圖加載程序格式不正確的錯誤

我想在C#.NET的框架4中的Visual Studio 2012運行

我試圖改變在IIS應用程序池的設置和改變建立平臺的目標任何CPU。無法確定問題來自何處。請爲您提供幫助。謝謝

回答

0

如果你的Web服務引用64個DLL必須編譯到x64

+0

我試圖改變這個平臺到x64,但它仍然沒有工作。 – snab

2

右鍵點擊你正在使用的應用程序池,去Advanced Settings。在(General)下有一個名爲Enable 32-Bit Applications的設置。如果您在64位操作系統上運行,並且設置爲true,則應用程序池將是32位進程,因此您的64位DLL將不會加載。將其設置爲false以使您的應用程序池成爲64位進程。

此外,檢查你正在構建爲64位的DLL的依賴。它可能使用一個32位的dll /程序集。如果您的代碼中有任何[DllImport]屬性,請查看它們所引用的.dll並確保它們與64位兼容。

+0

我曾試過,但它不工作。 – snab

+0

@ user2055227 - 我已經添加了另一個建議。 – Sean

+0

你能告訴我如何確保dllimport是64位? – snab

0

儘量不要使用32位或64位的DLL混合AnyCPU彙編(DLL可以編譯爲32位或64位或兩者) - 行爲將依賴於平臺,在某些環境中,將工作,在一些不是。

+0

謝謝GregS,但我已將其更改爲x64 – snab

+0

你有什麼改變? VS中的目標平臺?或IIS設置? - 我在幾年前得到了相同的問題,正確的編譯設置幫助,也嘗試在配置文件中指定目標框架 - 「supportedRuntime」和「requiredRuntime」。你說,32位的DLL工作,但64不 - 即使編譯目標框架設置爲X64? – GregS

+0

VS中的目標平臺和啓用32位應用程序爲False。更改爲x64時,32位不運行 – snab

相關問題