4

相互リンクされた.Net3.5アプリケーションのスイートがあります。一部はWebサイト、一部はWebサービス、一部はWindowsアプリケーションです。現在、各アプリには独自の構成ファイル(app.configまたはweb.config)があり、複数のアプリが同じ構成値を必要とするため、現在、構成ファイル全体に重複するキーがいくつかあります(現時点では手動で同期されています)。また、このアプリケーションスイートは、さまざまな環境(開発、テスト、ライブなど)に展開されます。

単一の構成ソースからこれらの複数のアプリの構成を管理して、必要に応じて構成値を複数のアプリ間で共有できるようにするための最良のアプローチは何ですか?また、環境ごとに個別の構成を用意したいのですが(したがって、デプロイするときに、接続文字列などの環境固有の特定の構成値を手動で変更する必要はありません)、同時に複数の大きな構成を維持したくありません。新しい構成キーを追加するときにこれを同期しておくと、ファイル(環境ごとに1つ)が面倒になります。

4

5 に答える 5

7

Visual Studio には、既存のアイテムをリンクとして追加できる比較的目立たない機能があり、探しているものを実現する必要があります。詳細については、このトピックに関するDerik Whittaker の投稿をご覧ください。

Visual Studio では、このオプションをより見やすくする必要があります。「追加」ボタンの横にある小さな矢印をクリックしようとは誰も考えていません。

于 2008-09-18T20:07:19.463 に答える
3

App.config を複数の構成ファイルに分割できます。config セクションを含むファイルの名前を指定するだけです。

app.config を変更します。

<SomeConfigSection>
  <SettingA/>
  <SettingB/>
</SomeConfigSection>
<OtherSection>
  <SettingX/>
</OtherSection>

app.config と SomeSetting.xml に:

<SomeConfigSection file="SomeSetting.xml" />
<OtherSection file="Other.xml" />

SomeSetting.xml には次のものが含まれます。

これで、ある種のビルドまたはデプロイ スクリプトを使用して、さまざまなセクション ファイルから app.config を作成できます。例えば:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml
于 2008-09-18T20:18:11.840 に答える
1

MyApp.config.templateやMyWeb.config.templateなどのファイルテンプレートを、環境間で異なるビットのNAntプロパティとともに使用します。したがって、テンプレートファイルは次のようになります。

<MyAppConfig>
    <DbConnString>${DbConnString}</DbConnString>
    <WebServiceUri uri="${WebServiceUri}" />
</MyAppConfig>

ビルド中に、NAntスクリプトで各環境をループし、各環境のNAntプロパティ${DbConnString}と${WebServiceUri}の値を変更するだけで、さまざまな環境のすべての構成を生成します(実際、これらはすべて各環境のセクションを含む単一のファイル)、およびプロパティを展開するオプションをオンにしてNAntコピーを実行します。

セットアップには少し時間がかかりましたが、さまざまなバージョンの構成ファイルをいじくり回す時間を節約できたため、少なくとも10倍の利益が得られました。

于 2008-09-18T20:19:27.000 に答える
1

次の 2 つの質問が役立つ場合あります。

于 2008-09-19T04:27:35.547 に答える
0

Microsoft のパターンとプラクティス グループのプリズム フレームワークを確認してください。

于 2008-09-18T20:10:08.083 に答える