ソリューションファイルをビルドした後、いくつかのファイルを圧縮する必要があるという要件があります。
リリース/デバッグモードでプロジェクトをビルドすると、これは自動的に達成されますか?
通常、Zipファイル、インストーラー、NuGetパッケージなどを実際のプロジェクトに作成することはありません。
なぜ?そこに置くと、毎回実行されるためデバッグ中などに、Visual Studioでプロジェクトをビルドしています。
しかし、Zipファイル、インストーラーなどは、リリースするときにのみ必要です。 Visual StudioでF5キーを押すたびに再生成されます。
リリースを作成するには、通常、リリースを作成するために必要なすべてのものを作成する MSBuildプロジェクトファイル を実行するバッチファイルを作成します。
Zipファイルを作成するIMOは、そのMSBuildプロジェクトファイルにも属します。
私が必要とするすべての情報は、これら2つの以前の回答で見つけることができます。
さらに、 MSBuildプロジェクトファイルの例は次のとおりです 私のプロジェクトの1つで、次のことを行います。
このアプローチの優れた点は、1回のクリック(バッチファイルの実行)で、今リストしたばかりのすべてを含むリリースを作成できることです。
これらすべての作成にはしばらく時間がかかりますが、これはVisual Studioソリューションの一部ではないため、Visual Studioでビルドを実行するたびに実行されるわけではありません。本当に必要な場合にのみ実行します。
PowerShellを使用して、リリースビルドを実行する場合のみ:if $(ConfigurationName) == Release (powershell Compress-Archive -Path '$(TargetDir)*.dll', '$(TargetDir)*.pdb', '$(TargetDir)*.config' -DestinationPath '$(SolutionDir)PublishOutput\YourNameHere.Zip' -Force)
Dll、pdb、configファイルのみを圧縮します。-Force
は、各ビルドでZipファイルを上書きするために使用されます。
プロジェクトのプロパティに移動し、[ビルドイベント]タブの[ビルド後のイベント]領域にコマンドを記述します。そこでのコマンドは、Cmdバッチファイルと同じように(またはCmdバッチファイルとして)実行されます。
また、いくつかの「マクロ」が利用可能であり、プロジェクトフォルダなどを参照するのに役立ちます。確認してください。
また、Jasonのコメントに追加するには、バッチファイル自体をビルド後のコマンドとして呼び出すこともできます。
(ビルド後のイベントに関する1つの警告:ビルド後に実行されます。ただし、CSCターゲットがある場合は、ビルド後にコンパイルされますandビルド後のイベントの後。これらのCSCターゲットの出力ファイルは、post-compile
イベント。)