将C#迁移到64位需要更改哪些代码?

时间:2014-11-20 10:59:33

标签: c# .net 32bit-64bit

我了解到一个工作的32位C#Windows(或控制台)应用程序在编译为64位时可能会表现出不同的功能行为(通过取消选择' Prefer 32-bit&#39 ; Visual Studio 2013中的编译器选项)。有关详细信息,请参阅:What causes significant loss of FP precision when compiling for 64-bit?

由于需要多次更改代码(在编译为32位或64位时创建功能相同的代码)而感到惊讶,我在这里询问具体问题是否有人来过跨越其他问题,需要更改现有的C#代码,以使其作为64位应用程序正常运行。

注意:在这两种情况下,Windows 7(或更高版本)64位都用作操作系统。

2 个答案:

答案 0 :(得分:4)

代码更改,没有。 .NET代码编译为MSIL,它与平台无关。

您必须做的唯一更改是使用64位引用的程序集而不是32位版本(或用C ++编写的native assemblies)。例如,针对特定体系结构编写的ADO.NET提供程序就是这种情况。

答案 1 :(得分:0)

没有变化,因为C#被编译成通用中间语言(CIL,MSIL是旧名称),它独立于体系结构。

除非您使用P / Invoke魔术,否则:

[DllImport("advapi32.dll", SetLastError=true)]
static extern bool AbortSystemShutdown(string lpMachineName);

在Windows或第三方DLL上,当在运行时以64位模式运行的C#程序调用32位DLL时,可能会遇到麻烦。