web-dev-qa-db-ja.com

Visual Studio:デバッグモードとリリースモードでapp.configを区別する

リリースモードでビルドするときに別のapp.configを自動的に使用する方法はありますか?

つまり、あるapp.configでテストし、別のapp.configでリリースしたいのです。

現在、app.config.productionと呼ばれる別のコピーを保持し、リリース用にビルドした後、bin\Release\Application.exe.configを手動で上書きしています。

38
Korey

コンテキストメニューからソリューションエクスプローラーでプロジェクトをアンロードします。

.csprojコンテキストメニューからファイルを追加し、次を追加します。

<PropertyGroup>
    <AppConfig>App.$(Configuration).config</AppConfig>
</PropertyGroup>
22
trueboroda

私は最近、同様のSOトピック: https://stackoverflow.com/a/27546685/2798367 への非常に遅れた応答を投稿しました

わかりやすくするために、ここで繰り返します。

これはパーティーにいくらか遅れますが、web.transformファイルにapp.configアプローチを実装する素晴らしい方法を偶然見つけました。 (つまり、名前空間http://schemas.Microsoft.com/XML-Document-Transformを使用します)

純粋なxmlアプローチであり、サードパーティのソフトウェアを必要としないので、「いい」と思います。

さまざまなビルド構成に応じて、親/デフォルトのApp.configファイルが派生します。これらの子孫は、必要なものだけをオーバーライドします。私の意見では、これは、他の回答のように全体がコピーされるx個の構成ファイルを維持する必要があるよりもはるかに高度で堅牢です。

ウォークスルーがここに投稿されています: http://mitasoft.wordpress.com/2011/09/28/multipleappconfig/


ほら、ママ-IDEには明示的なビルド後のイベントはありません!

15
ne1410s

シンプルで速い方法は、2番目のファイル「App.release.config」を作成し、この事前ビルドイベントを挿入することです。

IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.config" "$(ProjectDir)App.debug.config"
IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.release.config" "$(ProjectDir)App.config"

そして、このポストビルドイベント:

IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.debug.config" "$(ProjectDir)App.config"

これは少し変わっているかもしれませんが、.SettingsにリンクされているApp.configファイルをデバッグ設定として引き続き使用できます。 App.release.configは手動でビルドする必要がありますが、この機能を切り替えるのは非常に簡単です。

7
Martin Braun

App.configの変換にはSlowCheetahを強くお勧めします。こちらのこのnuget gemにアクセス Visual Studio Gallery

5
Rudy Hinojosa

これが役立つかどうかはわかりませんが、app.configは$(Configuration)などの標準のMSBUILD置換文字列を認識します。

1
Dave