我正在构建一个加载 32 位 COM dll 的 C# 应用程序。编译后的应用程序在 32 位 Windows 上运行良好,但在 64 位 Windows 上运行不佳,因为它无法加载 32 位 COM。有没有办法在 VC# 2008 Express Edition 中设置 32 位构建目标?
或者,有没有办法强制编译到AnyCPU构建目标的 .NET 应用程序在 64 位 Windows 上以 32 位模式运行?
我正在构建一个加载 32 位 COM dll 的 C# 应用程序。编译后的应用程序在 32 位 Windows 上运行良好,但在 64 位 Windows 上运行不佳,因为它无法加载 32 位 COM。有没有办法在 VC# 2008 Express Edition 中设置 32 位构建目标?
或者,有没有办法强制编译到AnyCPU构建目标的 .NET 应用程序在 64 位 Windows 上以 32 位模式运行?
对于后代,这里是链接到的论坛帖子阿德里安:
在 VC# Express 中,缺少此属性,但如果您知道在哪里查找,您仍然可以创建 x86 配置。
它看起来像一长串步骤,但是一旦你知道这些东西在哪里,它就会容易得多。任何只有 VC# Express 的人可能会发现这很有用。了解 Configuration Manager 后,下次会更加直观。
- 在 VC# Express 2005 中,转到工具 -> 选项。
- 在“选项”对话框的左下角,选中“显示所有设置”框。
- 在左侧的树视图中,选择“项目和解决方案”。
- 在右侧的选项中,选中“显示高级构建配置”框。
- 单击确定。
- 转到构建-> 配置管理器...
- 在项目旁边的平台列中,单击组合框并选择“”。
- 在“新平台”设置中,选择“x86”。
- 单击确定。
- 单击关闭。
在那里,现在您有了 x86 配置!非常简单!:-)
我还建议使用 Configuration Manager 来删除 Any CPU 平台。如果您曾经依赖于 32 位本机 DLL(甚至是间接依赖),您真的不希望这样。
您不能在 VS Express 的 UI 中将其显式设置为 32 位,但显然(我手头只有专业版)可以通过一些设置来完成。此论坛帖子详细介绍了如何执行此操作。
您还可以使用.Net Framework SDK附带的CorFlags工具将编译后的输出设置为以 32 位运行。要使用 CorFlags 设置 32 位标志,请从命令行运行:
CorFlags.exe /32BIT+ yourapp.exe
这将在您的 exe 标头中设置一个标志,以向 .Net 发出信号,表明它应该以 32 位运行。