2010-04-09 55 views
0

我有一個依賴本機DLL的.NET應用程序。我有.NET應用程序設置爲AnyCPU。 在生成後步驟中,我計劃從某個目錄(x86或AMD64)複製正確的本機DLL,並將其放置在目標路徑中。使用本地DLL(構建管理)的.NET應用程序

但是,這不起作用。在64位機器上,Visual Studio中的環境變量PROCESSOR_ARCHITECTURE爲「x86」。

我現在的選擇是創建一個輸出處理器體系結構的小工具。這將在後期構建步驟中使用。

有沒有更好的選擇? (注意:部署/打包應用程序時,正確的本地DLL被複制到正確的平臺,但這意味着我們有兩個單獨的x86和AMD64版本文件夾,這是可以的,因爲這是用於設備驅動程序。該應用程序是驅動程序的實用工具)。

回答

2

Visual Studio是32位應用程序,因此運行在64位系統上的WoW64層中。我認爲這就是爲什麼PROCESSOR_ARCHITECTURE在那裏產生「x86」的原因 - 兼容性:應用程序應該真的認爲它是一個32位系統。

您可以檢查PROCESSOR_ARCHITEW6432變量的存在和值,即使實際應用程序在WoW64下執行,它也會是AMD64。請注意,該變量在32位Windows上不存在,也未在64位Windows上爲64位進程定義。

相關問題