2013-02-07 25 views
2

我編譯的DLL是「任何CPU」,因此它們可以在x86和x64中運行,但是當我嘗試以調試模式運行時(x64),它會一直告訴我運行項目時出錯:無法加載文件或程序集「項目」或它的一個依賴項。試圖加載格式不正確的程序。但是,當我運行從Debug目錄創建的* .exe或在Visual Studio中運行而不進行調試時,它運行良好,如果我在x86調試模式下運行它,它也可以工作。爲什麼它可以在Visual Studio中的除調試模式之外的其他任何環境中工如何運行x64調試模式DLL是「任何CPU」?

該應用程序是一個桌面應用程序,因此沒有IIS應用程序池更改爲32位。

+0

什麼是 '項目' 集合的平臺? – Gray

+0

@Gray平臺設置爲x64 –

回答

0

我注意到,有時當您更改配置時,它不會更改所有項目。如果您轉到x64配置中的「生成」>「配置管理器」,是否將所有項目設置爲生成x64版本?

+0

是的,一切都設置爲x64。 –

0

使用corflags.exe獲取您的'項目'DLL的PE信息。如果它構建爲x64,它應該說是PE:PE32+32Bit:0。檢查以確保'項目'的調用者正在引用該項目,而不是其他地方的構建目錄中的流氓dll。

  • 檢查引用第一
  • 使用corflags檢查參考
  • 報告結果
+0

應該告訴我什麼?解決方案不運行的唯一時間是x64的調試模式。它在Release中運行,運行時不需要調試,並在運行exe時運行。 –

+0

您可能會在Visual Studio中引用未在本地複製的dll。一旦被確認,你可以檢查,看看有什麼在調試文件夾中的DLL被建成。它可能會提供一些洞察,爲什麼你會得到一個不好的圖像格式。這是很難調試這些東西的時候,你不知道環境是什麼樣的,所以我只是試圖消除一些變量。如果你不想檢查,那也沒問題。祝你好運。 – Gray

+0

corques是否適用於exes?因爲'Project'是啓動項目,所以它是一個exe文件。 –

相關問題