1

我有一个 .Net 控制台应用程序,它有一个 App.Config / MyApplicationConsole.exe.config 文件。这个包含通过 VS 的属性管理器设置的设置,基本上看起来像这样:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="My.Applications.Namespace.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <My.Applications.Namespace.Properties.Settings>
      <setting name="SettingsKeyABC" serializeAs="String">
        <value>SomeOtherValue</value>
      </setting>
      <setting name="SettingsKeyXYZ" serializeAs="String">
        <value>True</value>
      </setting>
    </Siemens.Med.CTE.PMP.Applications.JobExecutor.Properties.Settings>
  </applicationSettings>
  <system.diagnostics>
    <trace>
      <listeners>
        <add name="Gibraltar" type="Gibraltar.Agent.LogListener, Gibraltar.Agent" />
      </listeners>
    </trace>
  </system.diagnostics>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
</configuration>

现在我想要/需要做的是修改“SettingsKeyXYZ”设置的(“True”)值,最好是通过powershell(作为我的同事设置)。有谁知道如何做到这一点?我发现的只是 Web.Configs 的示例,它们似乎与 VS 创建的示例略有不同。

4

1 回答 1

2

首先,xml 文本无效。第 10 行标记 (My.Applications.Namespace.Properties.Settings) 的结束标记在哪里。我更改了第 10 行以匹配结束标记。

加载文件(作为 xml),您必须将“My.Applications.Namespace.Properties.Settings”标签放在引号中,否则 powershell 将尝试将点之间的每个值解析为标签),将值更新为 False,然后保存文件。

[xml]$xml = Get-Content c:\App.Config
$xml.configuration.applicationSettings.'My.Applications.Namespace.Properties.Settings'.setting.value='False'
$xml.Save('c:\App.Config')
于 2012-07-27T11:06:13.660 回答