リリースモードでビルドするときに別のapp.configを自動的に使用する方法はありますか?
つまり、あるapp.configでテストし、別のapp.configでリリースしたいのです。
現在、app.config.productionと呼ばれる別のコピーを保持し、リリース用にビルドした後、bin\Release\Application.exe.configを手動で上書きしています。
コンテキストメニューからソリューションエクスプローラーでプロジェクトをアンロードします。
.csproj
コンテキストメニューからファイルを追加し、次を追加します。
<PropertyGroup>
<AppConfig>App.$(Configuration).config</AppConfig>
</PropertyGroup>
私は最近、同様の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には明示的なビルド後のイベントはありません!
シンプルで速い方法は、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
は手動でビルドする必要がありますが、この機能を切り替えるのは非常に簡単です。
App.configの変換にはSlowCheetahを強くお勧めします。こちらのこのnuget gemにアクセス Visual Studio Gallery
これが役立つかどうかはわかりませんが、app.configは$(Configuration)などの標準のMSBUILD置換文字列を認識します。