51

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

つまり、1 つの app.config でテストし、別の app.config でリリースしたいと考えています。

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

4

7 に答える 7

9

簡単で迅速な方法は、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手動でビルドする必要がありますが、この機能を切り替えるのは非常に簡単です。

于 2015-11-26T10:01:55.863 に答える
8

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

于 2016-08-18T15:50:41.843 に答える
4

一番上の回答に似ていますが、このアプローチでは、必要に応じて実際のファイルを見ることができ、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>
于 2020-04-27T05:57:17.793 に答える
1

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

于 2016-01-15T16:40:08.160 に答える