.NET和64位应用程序

时间:2010-04-07 04:01:16

标签: .net 64-bit

我希望使现有的.NET应用程序(WinForms和WebForms)在64位计算机上运行,​​并进行优化以利用64位计算机上可用的更多内存。我需要对应用程序做些什么才能利用内存?我只选择目标CPU为64位吗?选择目标与仅为所有CPU编译应用程序并让.NET在本地优化应用程序有什么好处?

Crystal Reports(在VS 2008中)是否会针对64位进行优化并利用高端内存?

3 个答案:

答案 0 :(得分:7)

您可以将目标CPU设置为“AnyCPU”。这将是x86机器上的x86代码和x64机器上的x64代码。请记住,您引用的任何非托管DLL都很可能会导致问题。我不知道Crystal Reports是否对非托管DLL有任何依赖(它曾经是ActiveX废话的瘦包装,现在还不确定。)

如果您的应用程序仅引用为AnyCPU编译的托管代码,那么您应该没问题。

预先指定CPU架构没有真正的“优势”。这是一种处理这样一个事实的方法,即您可能需要确保应用程序仅将JIT用于一个特定的体系结构。例如,如果您使用Microsoft Jet OLEDB提供程序并且您的应用程序是针对AnyCPU编译的,则在x64操作系统上它将在运行时失败,因为它将作为x64进程运行,并且Jet没有x64 OLEDB驱动程序。

在这种情况下,您可以强制它以x86为目标,然后即使在x64操作系统上,应用程序仍然可以JIT到x86。

答案 1 :(得分:0)

除非您需要条件编译才能在不同的体系结构上交换需要本机支持的第三方组件,否则我通常建议将其留给运行时(任何CPU)。

目标计算机上的框架将处理它,它使您的生活更轻松,而不必管理各种环境的构建配置。

答案 2 :(得分:0)

有两种CR运行时:

  • Crystal Reports(完整版运行时)
  • Crystal Reports Basic(与VS 2005,2008捆绑在一起)

您的64位支持取决于您为应用程序选择的版本。

Crystal Reports XI Release 2或Crystal Reports 2008没有64位dll。只有.NET 2005(CR 10.2)和.NET 2008(CR 10.5)捆绑包(CR Basic)是64位。如果需要为CR XI或CR 2008使用完整的Crystal Reports运行时,则必须以32位模式(x86)编译应用程序。

SAP link 1

SAP link 2