我正在構建一個加載32位COM DLL的C#應用程序。已編譯的應用程序在32位Windows上運行正常,但在64位Windows上運行條形碼,因爲它無法加載32位COM。有沒有辦法在VC#2008 Express Edition中設置32位構建目標?在Visual C#2008 Express Edition中設置32位x86構建目標?
另外,是否有辦法強制.NET應用程序編譯爲AnyCPU構建目標在64位Windows上以32位模式運行?
我正在構建一個加載32位COM DLL的C#應用程序。已編譯的應用程序在32位Windows上運行正常,但在64位Windows上運行條形碼,因爲它無法加載32位COM。有沒有辦法在VC#2008 Express Edition中設置32位構建目標?在Visual C#2008 Express Edition中設置32位x86構建目標?
另外,是否有辦法強制.NET應用程序編譯爲AnyCPU構建目標在64位Windows上以32位模式運行?
你不能在VS Express中的UI中明確地將它設置爲32位,但顯然(我只有專業版本),它可以使用一些設置完成。 This論壇帖子詳細介紹瞭如何做到這一點。
您還可以做的是使用.Net Framework SDK附帶的CorFlags工具將編譯輸出設置爲32位運行。要使用CorFlags設置32位標誌,在命令行運行此:
CorFlags.exe /32BIT+ yourapp.exe
這將在您的exe的報頭中設置一個標誌來通知.NET,它應該運行爲32位。
對於後人,這裏是論壇的帖子阿德里安鏈接到:
在VC#Express中,這個屬性是 失蹤,但你仍然可以創建一個 x86的配置,如果你知道去哪裏 的樣子。
它看起來像一長串的步驟, ,但一旦你知道這些東西 是哪裏,這是更容易。只有 有VC#Express的人可能會發現 這個有用。一旦你瞭解了配置管理器 ,下一次將會更直觀地得到 。
- 在VC#Express 2005中,轉至工具 - >選項。
- 在選項對話框的左下角,選中 說的「顯示所有設置」框。
- 在左側的樹形視圖中,選擇「項目和解決方案」。
- 在右側的選項中,選中顯示「顯示高級 構建配置」的框。
- 單擊確定。
- 轉到生成 - >配置管理器...
- 在項目旁邊的平臺列中,單擊組合框並選擇 「」。
- 在「新平臺」設置中,選擇「x86」。
- 單擊確定。
- 單擊關閉。
那裏,現在你有一個x86 配置!易如反掌! :-)
我還推薦使用配置 管理器來刪除Any CPU 平臺。如果您曾經依賴32位的 原生DLL(甚至是間接的 依賴項),那麼您真的不想要這樣的 。
請注意,在Visual Studio 2010中,在「Build」菜單出現之前,您需要單擊「工具>設置>專家設置」。另外,我不認爲2010年的步驟#1〜5是必要的。 – Fred 2011-07-13 23:54:36
這正是我正在尋找的。謝謝 :) – 2013-05-09 16:07:54
非常感謝。鏈接頁面上的指示非常好。 - 允許我從GUI中選擇32位 – 2009-09-05 00:22:41
CorFlags.exe也可以工作。謝謝! – 2009-09-07 23:30:19