2008-10-09 74 views
4

可以編爲「任何CPU」 WinForms應用程序進行配置而無需重新編譯應用程序在64位服務器上爲「86」運行?具體來說,我正在尋找一個app.config設置或控制面板小程序來完成此目的。客戶的所有客戶都是86,但服務器是x64和我們喜歡在服務器上安裝的WinForms應用程序爲管理員配置和監控系統。我們寧願不爲服務器重新編譯。能WinForms應用程序配置爲「86」,不需要重新編譯運行?

回答

11

http://www.request-response.com/blog/PermaLink,guid,34966ef8-3142-46b2-84e0-372b5c36ddcc.aspx

你可以,但是,控制和 覆蓋此默認行爲甚至 你的代碼後,已編制。 有一個方便的工具叫做 corflags.exe存在於SDK中, 允許你強制'anycpu'編譯 代碼在64位世界上使用32位進程。

該實用程序的用法在此處http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx

+0

我想這一點,我們的客戶的服務器上,並且它出色的工作!謝謝。我唯一的抱怨是,在Windows Server 2003計算機上安裝Windows SDK時,曾經非常奇怪。 – flipdoubt 2008-10-09 20:43:38

1

沒有配置找着什麼,如果你正確地寫你的託管代碼被需要。只要64位機器安裝了適當的框架,JIT流程就會處理32位和64位之間的任何差異。

你需要關心你自己的代碼的唯一的事情是,如果你在做任何的P/Invoke。在這種情況下,任何時候你調用利用手柄或void *的類型的API函數,你需要確保你總是使用System.IntPtr,而不是System.Int32。在.NET世界中,即使在64位機器上,int數據類型也總是32位。同樣,無論什麼架構,long總是64位。

而且IntPtr的但始終無效*的大小等適當JIT的,這取決於你的機器上運行的架構不同的大小。

相關問題