获得64位版本的machine.config

Lar*_*eau 5 c# configuration configurationmanager machine.config

现在,我打电话给以下一行

System.Configuration.Configuration cnf = ConfigurationManager.OpenMachineConfiguration();
Run Code Online (Sandbox Code Playgroud)

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

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

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

有没有办法获得64位版本而不需要使用ConfigurationFileMaps - 例如 来自Msdn的配置示例

更新评论

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

Ada*_*itt 1

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