在Visual C#2008 Express Edition中设置32位x86构建目标?

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

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

您无法在VS Express中的UI中将其显式设置为32位,但显然(我手边只有Professional版本)可以使用一些设置来完成。 这篇论坛post详细介绍了如何做到这一点。

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

CorFlags.exe /32BIT+ yourapp.exe 

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

对于后代,这里是adrian链接到的论坛post:

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

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

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

在那里,现在你有一个x86配置! 非常简单! 🙂

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