1

私の目標は、別のアプリケーションに属する .config ファイルをプログラムで更新することです。

次のような単純な構成ファイルから始めます...

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="Test1" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

次に、コードを実行して、という名前の接続文字列を更新し、Test1名前をTest2...に変更します。

var configMap = new ExeConfigurationFileMap() { ExeConfigFilename = @"test\app.config" };
var externalConfiguration = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

externalConfiguration.ConnectionStrings.ConnectionStrings[1].Name = "Test2";
externalConfiguration.Save(ConfigurationSaveMode.Minimal, true);

これにより構成ファイルが保存されますが、ファイルを見ると、他のデータが追加されていることがわかります...

ConfigurationSaveMode.Minimal

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="Test2" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <trust level="Full" />
    <webControls clientScriptsLocation="/aspnet_client/{0}/{1}/" />
  </system.web>
</configuration>

ConfigurationSaveMode.Modified

変更された設定を使用すると、さらに多くの「もの」が得られます...

    <configuration>
      <appSettings />
      <configProtectedData />
      <system.diagnostics />
      <system.windows.forms />
      <uri />
      <connectionStrings>
        <add name="Test2" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
          providerName="System.Data.SqlClient" />
      </connectionStrings>
      <system.net>
        <authenticationModules />
        <connectionManagement />
        <defaultProxy />
...snip...

このデータは何で、どこから来たのですか? さらに重要なのは、ファイルに書き込まれないようにするにはどうすればよいですか?

4

2 に答える 2

0

ConfigurationSaveMode をから変更してみてください

ConfigurationSaveMode.Minimal 

ConfigurationSaveMode.Modified

Modified は、変更したプロパティのみを保存します。

MSDN から:

Full
すべてのプロパティが構成ファイルに書き込まれます。これは主に、情報構成ファイルを作成したり、あるマシンから別のマシンに構成値を移動したりするのに役立ちます。

最小限
継承された値とは異なるプロパティのみが構成ファイルに書き込まれます。

Modified
値が継承された値と同じ場合でも、変更されたプロパティのみが構成ファイルに書き込まれます。

于 2013-07-23T08:33:32.917 に答える