我最近開始了一項新工作,並且我注意到每個人都在談論的第一件事情之一是將我們的.NET應用程序更新爲全部 x64。我最初認爲這很奇怪,因爲我們都知道.NET編譯爲平臺不可知的IL,並且特定的CLR運行代碼。什麼時候在Visual Studio中定位到x64
看遠一點,我發現this helpful article和this SO post這有助於解釋的事情。
所以,現在我明白了IL沒有改變,只是元數據基本上是說在WOW64在x64系統上運行或不(簡而言之)。
所以,如果我是一個x64系統上,我可以指定「任何CPU」到本地運行,但不支持32位的DLL;我可以指定支持32位dll的「x86」(因爲它們都將在WOW64下運行); 但我何時會指定「x64」?似乎64位dll將在x64系統的「任何CPU」方案中得到支持。如果我想阻止某人在32位系統上運行我的應用程序,或者在嘗試加載32位dll時確保失敗,這是否是這種情況?
在我看來,如果你有一些第三方的dll在你的項目中擔心,你會想只有需要將它設置爲「任何CPU」以外的東西。是否最好將其作爲任何其他項目的「任何CPU」,而不處理其他dll?
如果我碰巧把我的目標設置爲「x86」是因爲我有一個32位的第三方dll,那麼我的應用程序實際上是否被認爲是在64位系統下運行,如果是在64位系統下的WOW64?
您不能在安裝程序中忽略它。如果您有x64要求,則必須將安裝程序的TargetPlatform設置設置爲x64。如果你不這樣做,它將無法正確安裝。由於安裝程序現在已確保可以使用64位操作系統,因此現在它不再是您爲EXE項目選擇的內容。不妨使用AnyCPU。 –