我想让我的.NET应用程序在带有.NET1.1的64位计算机上作为32位进程运行。目标平台选项是在VS(2005)的更高版本中引入的,但我使用的是VS2003和.NET1.1,并且没有机会使用其他VS或.Net
这可能吗?
P.S。我不知道这是否相关,但是我的一位同事说我应该使用“cor flags”或“核心标志”,但谷歌搜索它没有提出任何有趣的结果
答案 0 :(得分:3)
您可以告诉Windows以32位运行应用程序。
尝试:corflags myassembly.exe /32bit+
请参阅the docs of the corflags.exe utility。
StackOverflow有一个excellent summary of CorFlags here。
答案 1 :(得分:2)
您可能需要手动使用编译器并指定目标平台:
http://msdn.microsoft.com/en-us/library/zekwfyz4(v=vs.80).aspx
答案 2 :(得分:2)
您无需做任何事情。 .NET 1.1不支持在64位模式下运行托管代码。直到.NET 2.0才能使用。使用VS2003编译的任何EXE程序集都会询问1.1版本的CLR,它会自动以32位模式运行托管代码。
同样,您也没有Corflags.exe实用程序。它最初随.NET 2.0 SDK一起提供,现在使用Windows SDK。 Visual Studio 2005及更高版本允许您通过在项目选项中选择“平台目标”来设置Corflags.exe操作的cor标头中的选项位。
请注意没有安装.NET 1.1的64位计算机。他们将使用版本2 CLR运行您的应用程序,并且将以64位模式运行。在Vista和更高版本中实现的UAC也会带来麻烦,您的EXE将没有清单,Windows会像传统程序一样对待它。当效果不佳时,很难诊断出来。并且VS2003在XP之后的操作系统上不受支持。有一个缺陷列表,其中大多数是调试问题。使用客户的操作系统功能更新工具非常重要,8年是狗年和软件工具的长期工作。
答案 3 :(得分:0)
在配置管理器中,您应该能够选择平台为x86 - 我认为这样做,因为我无法想到其他任何有益的东西。
编辑:哦,这是一个optimization thing。 Damnit,现在我的名声永远不会有一个数字......
答案 4 :(得分:0)
如果不做任何事情,它不应该这样做吗? 1.1仅为32位。如果.NET 1.1不存在,你的程序将以版本存在运行,但是框架可能足够智能,知道1.1应用程序只能运行32位。
其他你可以尝试在机器上安装1.1,这样你的应用程序就可以绑定到它并且只能以32位运行。
http://technet.microsoft.com/en-us/library/cc785813(WS.10).aspx
这似乎证实了我的理论:
http://blogs.artinsoft.net/pdermody/archive/2005/04/07/153.aspx
加载.NET 1.1应用程序 Windows 64位
我很惊讶地发现 - 你可能会惊讶地听到 - 微软决定不允许 甚至是纯粹的.NET应用程序 建立在具有一定特权的32位机器上 要运行的Visual Studio版本 64位CLR。