5

现在,我正在调用以下行

System.Configuration.Configuration cnf = ConfigurationManager.OpenMachineConfiguration();

结果如下 cnf.FilePath == C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

我在 32 位 2003 服务器和 64 位 2008 R2 服务器上得到以下结果。理想情况下,当安装在 64 位服务器上时,我想返回 64 位文件夹。

又名 - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config

有没有办法在不求助于 ConfigurationFileMaps 的情况下获得 64 位版本 - 例如 来自 Msdn 的配置示例

更新评论

  • 现在,平台设置设置为 Any Cpu
  • 我在继承自标准应用程序的 System.Configuration.Install.Installer 的类中运行代码
  • 该代码所在的项目正在作为 Visual Studio 安装程序安装项目中的自定义操作运行
4

1 回答 1

1

基于上述答案,我创建了一个 Visual Studio 安装程序。默认情况下,安装程序似乎作为 32 位进程运行。因此,您作为自定义安装程序操作运行的任何 .NET 代码都将以 32 位运行,这就是为什么您只看到 32 位 Machine.Config 而不是 64 位版本的原因。这篇MSDN 文章解释了如何将安装程序创建为 64 位安装程序。32 位安装程序可以安装 64 位项目,但 64 位安装程序只能安装在 64 位操作系统上。如果您想保持简单,您可能需要创建两个安装程序(32 位和 64 位),然后让用户使用适当的版本。在我对安装程序的 TargetPlatform 进行更改后,它在 TaskManager 中显示为 64 位进程。

于 2011-05-13T15:03:17.470 回答