可以将WinForms应用程序配置为以“x86”运行而无需重新编译吗?

时间:2008-10-09 14:54:54

标签: .net winforms configuration x86 x86-64

为“任何CPU”编译的WinForms应用程序是否可以配置为在64位服务器上以“x86”运行而无需重新编译应用程序?具体来说,我正在寻找app.config设置或控制面板小程序来完成此任务。所有客户的客户端都是x86,但服务器是x64,我们希望在服务器上安装WinForms应用程序,以便管理员配置和监控系统。我们宁愿不为服务器重新编译。

3 个答案:

答案 0 :(得分:11)

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

  

然而,你可以控制和   甚至覆盖此默认行为   在编译代码之后。   有一个方便的工具叫做   SDK中存在corflags.exe   允许你强制编译'anycpu'   代码在64位中使用32位进程   世界。

此实用程序的使用位于http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx

答案 1 :(得分:1)

如果您正确编写了托管代码,则无需进行任何配置。只要64位计算机安装了适当的框架,JIT进程就会处理32位和64位需求之间的任何差异。

在你自己的代码中你唯一需要关注的是你正在做任何P / Invoke。在这种情况下,只要您调用使用HANDLE或void *类型的API函数,就需要确保始终使用System.IntPtr,而不是System.Int32。在.NET世界中,int数据类型总是32位,即使在64位机器上也是如此。同样,无论采用何种架构,长总是64位。

然而IntPtr总是大小为void *,因此JIT可以根据您运行的机器的体系结构而设置不同的大小。

答案 2 :(得分:1)

我发现此链接也很有用: http://blogs.intesoft.net/2007/12/default.aspx