【问题标题】:Getting 64 bit version of machine.config获取 machine.config 的 64 位版本
【发布时间】:2011-08-24 23:28:54
【问题描述】:

现在,我正在调用以下行

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 位版本 - 例如 Configuration examples from Msdn

更新评论

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

【问题讨论】:

  • 您在项目设置中将“平台目标”设置为什么?
  • 用您的答案更新了票证 - 它设置为任何平台。
  • 这是标准应用程序还是网络应用程序?如果是 Web 应用程序,应用程序池的“启用 32 位应用程序”设置是什么?
  • 我在一个继承自标准应用程序的 System.Configuration.Install.Installer 的类中运行代码。
  • 这是作为安装应用程序的一部分包含的还是通过 InstallUtil.exe 运行的?

标签: c# configuration configurationmanager machine.config


【解决方案1】:

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

【讨论】:

  • 感谢您解决这个问题。由于我需要它用于旧服务器,我可能会开始使用一些路径字符串(又名框架到 framework64)并尝试 ConfigurationFileMap。
猜你喜欢
  • 2015-01-18
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 2021-07-08
  • 2011-01-20
  • 2022-01-13
相关资源
最近更新 更多