Dot-Net
Microsoft.NETFramework 和 Microsoft.NETFramework64 有什麼區別?
我想知道 .NET 模式 x86 和 x64 之間的區別。
- 兩種模式有什麼區別?
- 例如,我可以使用 .NET x64 和 .NET x86 編譯我的庫嗎?
- 如果我選擇 x64 而不是 x86,對我來說會有什麼不同嗎?
- .NET x64 的優勢是什麼?
- 如果我想使用 .NET x64,我必須安裝任何特殊的東西嗎?
複雜的問題,我會盡量簡化:
- 任何 .Net 應用程序都可以同時針對 x86(32 位)和 x64(64 位)進行編譯。實際上,它們預設情況下會這樣做。您可以通過在項目屬性的建構選項卡中更改目標 CPU 來更改此設置。支持的目標是“Any”(將根據作業系統支持即時編譯為 32 位或 64 位),“x86”將編譯為適用於所有平台的 32 位,“x64”將編譯為 64 -bit 僅適用於 64 位平台。
- 是的。往上看。另請注意,有時會執行第二級編譯,即 NGEN。它為特定的 CPU 類型創建本機映像。但是,如果你搞砸了,你已經知道了。
- 對於 .dll,為它們選擇“任何”CPU。對於 .EXE(入口點),您必須選擇 Any、x86 或 x64。有一些事情需要考慮: x86 .Net 應用程序訪問本機 Windows .dll 文件 (interpo) 需要 x86 .dll 文件。因此 64 位應用程序無法訪問 32 位 API 呼叫,反之亦然。這通常是 .Net 應用程序在 64 位作業系統上失敗的原因。解決此問題的方法是引用正確的 .dll 或簡單地將 .Net 應用程序設置為屬性下的 x86(32 位)。如果將所有其他依賴項設置為“任何”,則在即時編譯期間所有其他依賴項將自動變為 32 位。
- 64 位的優點是複雜的。根據您的應用程序的功能,有優點和缺點。最明顯的優勢是您的應用程序可以突破 2GB 記憶體障礙。缺點如 #3 中所述,如果您引用 64 位 .dll,您的應用程序將無法在 32 位作業系統上執行。
- 一切都是開箱即用的。除了上面所有的東西,別擔心。:)