使用.NET编译时是否有意义明确指定为x64架构?

3

目前我正在为64位系统创建一个MSI,用于安装我的使用C#编写的软件。这是必要的,因为我生成一些注册表项,而我不想在程序中决定指向哪个注册表路径(避免WOW6432节点)。

在此期间,我在思考是否有必要明确地为x64系统编译我的软件(运行配置“x64”)。目前,我总是使用“Any CPU”在Visual Studio平台上进行编译。在我的源代码中,我没有区分x64和x86。

CIL代码由JIT编译器编译,因此我认为它将在运行时明确地将其编译为64位,或者我错了吗?

在Visual Studio中,明确的“x64”编译和平台无关的编译之间有什么区别? x64标志如何影响编译?


1
http://msdn.microsoft.com/en-us/library/ms241064.aspx - Habib
当您确定它只能在x64机器上运行时,请将其编译为x64。对于x86情况也是如此。只有当您想要享受这些文章所指示的AnyCPU的灵活性时,才应将其保留为AnyCPU。 - Lex Li
它必须在两个平台上运行。与语言无关的形式的替代方案是为几个目标编译并根据平台绑定二进制文件,但目前我认为这样做没有任何优势。 - martin
1个回答

2

如果您的程序(使用任何CPU)在64位平台上启动,它将以64位模式启动。这通常非常有效 - 例外情况是,如果您的程序依赖于本地库,而该库仅有32位版本可用,则在调用该库时它将无法加载(因此任何问题可能不会立即显现)。

还可以在运行时使用标志强制使用32位模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接