リリース モードでビルドするときに別の app.config を自動的に使用する方法はありますか?
つまり、1 つの app.config でテストし、別の app.config でリリースしたいと考えています。
現在、私は app.config.production という別のコピーを保持しており、リリース用にビルドした後に手動で bin\Release\Application.exe.config を上書きしています。
リリース モードでビルドするときに別の app.config を自動的に使用する方法はありますか?
つまり、1 つの app.config でテストし、別の app.config でリリースしたいと考えています。
現在、私は app.config.production という別のコピーを保持しており、リリース用にビルドした後に手動で bin\Release\Application.exe.config を上書きしています。
簡単で迅速な方法は、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
一番上の回答に似ていますが、このアプローチでは、必要に応じて実際のファイルを見ることができ、intellisense は csproj ファイルで文句を言いません:
<Target Name="SetAppConfig" BeforeTargets="Compile">
<Copy SourceFiles="debug.config" DestinationFiles="app.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " />
<Copy SourceFiles="release.config" DestinationFiles="app.config" OverwriteReadOnlyFiles="true" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " />
</Target>
これが役立つかどうかはわかりませんが、app.config は $(Configuration) などの標準の MSBUILD 置換文字列を認識します。