8

多数の異なるアプリケーションで構成される比較的大規模な .Net システムを使用しています。多数の異なる app.config ファイルを用意するのではなく、すべてのアプリ間で 1 つの構成ファイルを共有したいと考えています。

また、自分のマシンで開発する場合に 1 つのバージョン、自分のマシンで開発する他の誰かのために 1 つのバージョン、テスト システム用に 1 つのバージョン、ライブ システム用に 1 つのバージョンを用意したいと考えています。

これを行う簡単な方法はありますか?

4

5 に答える 5

6

複数のアプリケーションで必要となる大量の構成の場合、この構成を中央リポジトリ、たとえばデータベース、共通の場所にあるファイルに配置します。

さまざまな環境でさまざまなバージョンの構成ファイルを使用するには、さまざまな環境ごとにビルド構成を作成し、環境にちなんで名付けられた構成ファイルを作成します。例:

本番本番.app.configテストtest.app.config

次に、ビルド前のイベントを使用して、プロジェクトのデフォルトのapp.configに正しい構成をコピーできます。これは通常どおり出力ディレクトリにコピーされます。

ビルド前のイベントは上記のようになります。$(Configuration)を使用して、必要な環境に適したファイルを取得します。

これを上記と組み合わせて、ビルド固有の構成ファイル全体を各プロジェクトにコピーできます。

于 2008-09-30T21:43:44.883 に答える
2

構成ファイルのセクションに<add>要素を追加する代わりに、要素に属性を追加して、別のファイルからそのデータをロードするように指示できます。その後、共通設定をその共通ファイルに保持できます。<appSettings>file=<appSettings>

MSDN ライブラリのappSettings 要素 (全般設定スキーマ)を参照してください。

于 2008-09-30T22:58:22.660 に答える
2

次のように、「子」プロジェクトでビルド後のイベント (プロパティ -> ビルド イベント) を使用して、構成ファイルをマスター プロジェクトから他のプロジェクトにコピーできます。

copy /Y c:\path\to\master\project\app.config $(TargetPath).config
exit 0

(最後の行の「exit 0」はビルド エラーを防ぎます)。

ビルド ターゲット ("RELEASE"、"DEBUG" など) ごとに個別の構成ファイルを作成するには、NOTEPAD.EXE で .csproj ファイル (または .vbproj) を編集して、ターゲット グループごとに AppConfig タグを追加します。これ:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <AppConfig>debug.app.config</AppConfig>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>.\bin\Devel\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <AppConfig>release.app.config</AppConfig>
  </PropertyGroup>

各グループに存在する新しい<AppConfig>タグに注意してください。

于 2008-09-30T21:28:31.143 に答える
1

NTFS シンボリック リンクを使用して、.NET .config ファイルを共有できます。ASP.NET アプリケーション、コンソール アプリケーションなどで構成されるソリューションで、これがうまく使用されているのを見てきました。

于 2009-05-24T21:48:39.203 に答える
0

構成設定を machine.config に入れて、複数のアプリケーション間で共有することもできます。ただし、これにより展開がより問題になります。

于 2008-10-01T08:42:25.610 に答える