【问题标题】:.NET application from network share with Any CPU.NET 应用程序来自任何 CPU 的网络共享
【发布时间】:2013-11-25 19:01:58
【问题描述】:

我们的主要业务应用程序是使用 VS2008 混合 VB.NET 和 C# 编写的。后端是 SQL server Express 2005。

应用程序未安装在客户端计算机上。它驻留在(当前)Windows Server 2003 机器上的网络共享上,该机器也托管数据库。客户端通过快捷方式访问应用程序,并且有额外的服务器端可执行文件作为服务运行,客户端应用程序代码可以访问这些可执行文件。目前是完全 32 位的环境。

我们正在迁移到 Server 2008 R2 和 SQL Express 2008,并将我们的一些 32 位 Win7 客户端升级到 64 位。我已在所有组成应用程序并在它们上运行 PVerify 的所有 .EXE 和 .DLL 项目的编译选项中将目标 CPU 设置为“任何 CPU” - 它们完全是托管代码。

这就够了吗? 32 位和 64 位客户端能否无缝运行应用程序?

谢谢

【问题讨论】:

  • 您不需要更改目标 CPU。如果它保持为 32 位,它们都将在 64 位机器上以 32 位运行。
  • 谢谢马特。澄清一下,我并没有为这次升级练习更改设置 - 从一开始,它们就都是“任何 CPU”。
  • 好吧,我误解了。 @c45207 的回答似乎涵盖了这一点。
  • 如果您使用任何第三方控件/报告/等,请确保您可以获得 64 位版本。我知道很多用户的 2 个问题是 Crystal Reports(没有 64 位 dll)并在 64 位机器上连接到 MS Access。 (有一个解决方法,但你没有使用 MS Access 所以谁在乎)

标签: c# .net vb.net 32bit-64bit windows-server


【解决方案1】:

客户端应用程序应该在这种配置下工作,假设它们是纯托管代码,如您所说。你还没有说你是否测试过这个,但测试不应该那么难。 :-)

请注意,64 位版本的 Windows 具有可以运行 32 位应用程序的 WoW64 subsystem,因此您可能一开始就不必做任何事情。

What does the Visual Studio “Any CPU” target mean? 的问题可能值得一读,但看起来这里已经理解了。如果您需要能够同时生成 x86 和 x64 输出(例如,如果您有需要调用的非托管 DLL),那么问题Targeting both 32bit and 64bit with Visual Studio in same solution/project 可能会很有用。

【讨论】:

  • 谢谢。是的,我读过你提到的问题。我一直小心不要使用非托管代码,理论上 MSIL 的最大好处是它是 JIT,因此我根本不需要担心“目标”。我现在就开始设置我的服务器 2008 测试平台 :-)
猜你喜欢
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多