When publishing ASP.NET Core web apps, it will publish/deploy the:
- Build artifacts
- files with
.config
extension - files with
.json
extension - everything inside
wwwroot
folder
At certain times you may need to exclude some specific file or folder from deployment content.
There are two ways you can exclude files from publishing.
Content Tag
If you need to prevent multiple files from being copied to deployed folder, you can use
globbing patterns
to cover a range of matching files.
Content
tag will be used to specify the action on the file. For example, the following Content
element will exclude all (.txt)
files
in the wwwroot\content
folder and its subfolders.
<ItemGroup> <Content Update="wwwroot/content/**/*.txt" CopyToPublishDirectory="Never" /> </ItemGroup>
Note that it will delete all (.txt)
files that are already exists at the deployed site within specified folder path.
You can specify different globbing patterns as per your requirement. Another version of pattern coud be like this:
<ItemGroup> <Content Update="wwwroot/content/Site*.css" CopyToPublishDirectory="Never" /> </ItemGroup>
This will match all css files in wwwroot/content
folder with file name starts with Site e.g. SiteAdmin.css, SiteCustomer.css, etc...
You can add this markup to a publish profile (.pubxml file)
or the .csproj file
. Since .csproj file
operates at the global level,
if you add this tag to the .csproj file
, the rule will be applied to all publish profiles in the project.
MsDeploySkipRules Tag
Another way to exclude file or folder is to use MsDeploySkipRules
tag.
The following tag excludes all files/folders from the wwwroot\content
folder:
<ItemGroup> <MsDeploySkipRules Include="CustomSkipFolder"> <ObjectName>dirPath</ObjectName> <AbsolutePath>wwwroot\\content</AbsolutePath> </MsDeploySkipRules> </ItemGroup>
Note that unlike Content
tag, this will not delete the targeted file or folder if that are already exists on the deployed site.
Similarly you can specify a single file in AbsolutePath
tag, but you need to change the ObjectName
tag to
filePath
rather than dirPath
, and also change the value of Include
attribute from CustomSkipFolder
to CustomSkipFile
.
<ItemGroup> <MsDeploySkipRules Include="CustomSkipFile"> <ObjectName>filePath</ObjectName> <AbsolutePath>wwwroot\\content\\Site.css</AbsolutePath> </MsDeploySkipRules> </ItemGroup>
No comments:
Post a Comment