10

我正在构建一个加载 32 位 COM dll 的 C# 应用程序。编译后的应用程序在 32 位 Windows 上运行良好,但在 64 位 Windows 上运行不佳,因为它无法加载 32 位 COM。有没有办法在 VC# 2008 Express Edition 中设置 32 位构建目标?

或者,有没有办法强制编译到AnyCPU构建目标的 .NET 应用程序在 64 位 Windows 上以 32 位模式运行?

4

2 回答 2

26

对于后代,这里是链接到的论坛帖子阿德里安:

在 VC# Express 中,缺少此属性,但如果您知道在哪里查找,您仍然可以创建 x86 配置。

它看起来像一长串步骤,但是一旦你知道这些东西在哪里,它就会容易得多。任何只有 VC# Express 的人可能会发现这很有用。了解 Configuration Manager 后,下次会更加直观。

  1. 在 VC# Express 2005 中,转到工具 -> 选项。
  2. 在“选项”对话框的左下角,选中“显示所有设置”框。
  3. 在左侧的树视图中,选择“项目和解决方案”。
  4. 在右侧的选项中,选中“显示高级构建配置”框。
  5. 单击确定。
  6. 转到构建-> 配置管理器...
  7. 在项目旁边的平台列中,单击组合框并选择“”。
  8. 在“新平台”设置中,选择“x86”。
  9. 单击确定。
  10. 单击关闭。

在那里,现在您有了 x86 配置!非常简单!:-)

我还建议使用 Configuration Manager 来删除 Any CPU 平台。如果您曾经依赖于 32 位本机 DLL(甚至是间接依赖),您真的不希望这样。

于 2009-09-09T23:28:26.837 回答
12

您不能在 VS Express 的 UI 中将其显式设置为 32 位,但显然(我手头只有专业版)可以通过一些设置来完成。论坛帖子详细介绍了如何执行此操作。

您还可以使用.Net Framework SDK附带的CorFlags工具将编译后的输出设置为以 32 位运行。要使用 CorFlags 设置 32 位标志,请从命令行运行:

CorFlags.exe /32BIT+ yourapp.exe

这将在您的 exe 标头中设置一个标志,以向 .Net 发出信号,表明它应该以 32 位运行。

于 2009-09-04T23:45:04.003 回答