web-dev-qa-db-ja.com

configSourceで外部の.configファイルを使用すると、エラーが発生します

構成マネージャーを使用して、C#でWPFアプリケーションのApp.configファイルのカスタムセクションを読み書きする方法をいじっていました。 。NET 2.0 Configuration Demystified に関するこの優れた記事を読みましたが、構成ファイルの使用に大いに役立ちました。これが私が書いた最初のApp.configファイルで、正常に動作します。

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="example" type="CustomConfig.ExampleSection, CustomConfig" />
  </configSections>
  <example version="A sample string value." />
  <appSettings>
    <add key="version_string" value="1.01" />
  </appSettings>
</configuration>

しかし、configSourceに記載されている外部構成ファイルからカスタムセクションが読み取られるようにApp.configファイルを変更すると、VisualStudioでエラーが発生します。

ConfigSourceファイルの形式は、セクションの名前を含む要素である必要があります。

App.configファイルとexample.configファイルは次のとおりです

App.configを変更しました

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="example" type="CustomConfig.ExampleSection, CustomConfig" />
  </configSections>
  <example configSource="example.config" />
  <appSettings>
    <add key="version_string" value="1.01" />
  </appSettings>
</configuration>

example.config

<?xml version="1.0"?>
<example>
    <add key="version" value="blahblah" />
</example>
14
chaitanya

Visual Studioのエディター/インテリセンスには、configSource=属性について文句を言うという欠点がありますが、それは絶対に合法であり、機能します。毎日、さまざまな生産システムで使用しています。

私の推奨事項:試してみてください! :-)コードを実行します-私はそれが機能すると確信しています(あなたの設定は私には問題ないように見えます)。

更新: OK-<example>タグのスタイルを完全に変更しているようです。オリジナルのapp.configには、次のものがあります。

<example version="A sample string value." />

したがって、もちろん、外部化されたexample.configには同じ値と同じ構造が含まれている必要があります。

<?xml version="1.0"?>
<example version="A sample string value." />

このexample.configで試してみませんか??

3
marc_s

同じエラーが発生しました。私の場合、2つのファイルにキーがあり、appSettingsタグが重複していることを検出するためです。

web.configでプロジェクト関連のキーを保存し、別のファイルでパーソナライズされたキーを保存する必要がある場合(セキュリティ上の理由から推奨)、fileの代わりにconfigSourceプロパティを使用します。

web.configファイル:

<configuration>
  <appSettings file="../AppSettings.config">
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
  </appSettings>
</configuration>

AppSettings.configファイル:

<?xml version="1.0"?>

<appSettings>
  <add key="RutaBodega" value="D:\Test\Card"/>
  <add key="CodeLen" value="5"/>
</appSettings>

それが他の人を助けることを願っています!

9
equiman

私の問題は、同じタグにconfigSourceとキーを追加していたことです。

不正解:

<appSettings configSource="Appsettings.config">
    <add key="Setting1" value="May 5, 2014"/>
</appSettings>

「add」タグを削除するか、configSourceファイルに移動すると、エラーはなくなります。

正解:

<appSettings configSource="Appsettings.config" />
3
Brett Pennings

外部に作成するセクションがconfigSectionsで定義されている場合は、セクションを定義する要素にconfigSource属性を配置する必要があります。 appSettingsセクションとconnectionStringsセクション(configSectionsでの定義は不要)のみが、メイン構成ファイルの本体にconfigSourceのタグを付ける必要があります。

1
KeithS