2008-10-09 75 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的,这取决于你的机器上运行的架构不同的大小。

相关问题