获取 machine.config 的 64 位版本

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
有没有一种方法可以获取64位版本,而不必诉诸于ConfigurationFileMaps - 例如Msdn的配置示例 评论更新:
- 现在,平台设置为任何CPU - 我正在运行从标准应用程序的System.Configuration.Install.Installer继承的类中的代码 - 该代码所在的项目正在Visual Studio Installer设置项目中作为自定义操作运行

1
你在项目设置中将“平台目标”设置为什么了? - Adam Gritt
已更新工单并附上您的答案 - 已设置为任何平台。 - Lareau
2
这是一个标准应用程序还是Web应用程序?如果是Web应用程序,那么应用程序池的“启用32位应用程序”设置是什么? - Adam Gritt
我正在运行代码,该代码位于继承自标准应用程序的System.Configuration.Install.Installer类的类中。 - Lareau
1
这是作为安装应用程序的一部分包含还是通过InstallUtil.exe运行的? - Adam Gritt
这个项目中的代码是作为 Visual Studio 安装程序设置项目中的自定义操作运行的。 - Lareau
1个回答

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

感谢您解决了这个问题。由于我需要在旧服务器上使用它,我可能会开始尝试一些路径字符串(也称为框架到framework64),并尝试ConfigurationFileMap。 - Lareau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接