🐷
ASP.NET core のアプリをWebDeployする時に特定のファイル・ディレクトリを除外したい
はじめに
VisualStudioからサーバーにアプリをデプロイする際に特定のファイル・ディレクトリを除外したい状況になったので方法を調べました。
VisualStudioからWebDeployする設定は完了済みの前提です。
環境
- Visual Studio 2022
対処方法
.pubxml に追記
Properties/PublishProfiles/
の配下にWebDeployの設定ファイルがあると思います。 .pubxml
とか .pubxml.user
とかです。
今回は .pubxml.user
に追記します。
Properties/PublishProfiles/hogehoge.pubxml.user
<Project>
<PropertyGroup>
~~(省略)~~
</PropertyGroup>
<ItemGroup>
<!-- この設定でディレクトリの除外 -->
<MsDeploySkipRules Include="CustomSkipFolder">
<ObjectName>dirPath</ObjectName>
<AbsolutePath>wwwroot\\hogehoge</AbsolutePath>
</MsDeploySkipRules>
<!-- この設定でファイルの除外 -->
<MsDeploySkipRules Include="CustomSkipFile">
<ObjectName>filePath</ObjectName>
<AbsolutePath>appsettings.Development.json</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Project>
パスを指定する際の""はエスケープしないと駄目な様なので注意が必要です。
パスの指定はパターン記述も可能な様子です。
詳しくは以下を参照ください。
上記例では、MsDeploySkipRules
を利用している為、対象のファイルが既にサーバー上に存在する場合はそのまま残ります。 削除は行われません。
既存のファイルを削除したい場合は、Content
を利用する様です。
以下の様に記述すると、対象ファイルが削除されるとの事です。
※試せていません。
<ItemGroup>
<Content Update="Views/Home/About?.cshtml" CopyToPublishDirectory="Never" />
</ItemGroup>
さいごに
環境毎に異なる設定ファイル等の配置を手作業で行っていると面倒なので、助かります。
尚、逆に含めるファイルも指定できる様子なのでまた必要になった時に試したいと思います。
Discussion