我正在将操作系统更新为Windows 7 x64,我只有运行32位操作系统的经验。有没有人对64位环境有任何糟糕/良好的体验?
作为参考,我使用的工具是:
答案 0 :(得分:21)
在64位操作系统上运行会产生许多副作用,这些副作用在某种程度上是显而易见的。最常见的问题:
在Visual Studio中编辑并继续将无法正常工作。您可以通过强制.NET应用程序以32位模式运行来解决此问题。 Project + Properties,Build选项卡,Platform Target = x86。已在VS2013中解决。
如果您在.NET应用程序中使用任何ActiveX控件或COM组件,您可能会发现您的程序不再有效,因为您的计算机没有相应的64位版本的COM服务器。您将收到错误0x80040154,REGDB_E_CLASSNOTREG,“未注册的类”。与上述相同。
64位调试器不支持混合模式调试,您必须提交“仅托管”或“仅本机”调试。与上面相同的修复,只要您没有64位特定问题。已在VS2010中解决。
声明在需要IntPtr的情况下声明uint或int的P / Invoke声明写得不好将在64位模式下停止工作。您通常会收到AccessViolation异常或失败返回代码。或PInvokeStackImbalance MDA警告。找到错误不应该有任何麻烦,只需修改声明即可。
64位版本中没有几个传统的报废Microsoft库。这通常是Microsoft Access数据库的问题。与上述相同。
您必须使用正确版本的Regasm.exe来注册[ComVisible]程序集。从Framework或Framework64中选择一个,具体取决于客户端程序是以64位还是32位模式运行。或两者都是如果您希望服务器可用。
一些COM类型库在其方法声明中包含依赖于位的参数。 ADO 2.8是值得注意的。一定要使用正确的Tlbimp.exe位来生成正确的COM互操作程序集,Visual Studio将不会这样做。与Regasm.exe相同的方法
32位程序具有与64位程序不同的注册表视图。特别是HKCR和HKLM \ Software荨麻疹是虚拟化的。在Regedit.exe中,可以在HKLM \ Software \ Wow6432Node键下看到32位可见键。这可能会导致使用注册表的程序出现许多细微问题。 .NET 4 RegistryKey.OpenBaseKey()允许指定所需的视图。
对于COM,您将使用Regsvr32.exe的正确位数来注册非托管COM服务器(不是.NET服务器,它们使用Regasm.exe)。对于64位服务器,请使用c:\ windows \ system32中的一个,对于32位服务器,请使用c:\ windows \ syswow64。
文件系统中的文件夹是虚拟化的,特别是c:\ windows \ system32和c:\ program files。 32位程序将显示c:\ windows \ syswow64和c:\ program files(x86)。
安装人员需要考虑上述所有问题。
答案 1 :(得分:1)
如果每个程序都有x64下载链接,我不会太担心,然后使用它。如果没有,那么您的代码将通过WOW64仿真运行。而且你似乎觉得它正常运行。
请参阅this related question我在5分钟前回答。
WOW64指的是windows64上的windows32 它是一个透明的模拟 laywer,允许x86程序运行 在x64操作系统上。 WOW64会 如果你运行一个自动使用 x86 Windows上的x86 Windows程序 操作系统。
答案 2 :(得分:1)
我正在运行Windows 7 Ultimate x64。
我没有经验的其他人。
答案 3 :(得分:0)
我使用的大多数软件都没有x64的问题,自XP x64问题已经过去几年了,人们似乎已经赶上了x64。
x64中开发的主要问题是,在Visual Studio中以x64模式运行时,在调试时无法编辑代码。
您必须使用x86作为目标平台才能执行此操作。
这是Visual Studio 2010的测试版之一默认目标平台为x32而不是任何平台的原因之一...