使用Web Deploy/VS部署.NET Core应用:保留特定文件/文件夹方法咨询
嘿,这两个都是Web Deploy部署.NET Core MVC应用时经常碰到的需求,我结合实际项目经验给你梳理下可行的解决办法:
问题1:使用Web Deploy部署.NET Core MVC Web应用时,如何保留目标端的特定文件?
有两种常用方式,分别适合不同的场景:
方法1:通过Visual Studio发布界面可视化配置
这是最直观的方式,适合快速配置少量文件:
- 右键项目选择「发布」,进入发布配置页面
- 切换到「设置」标签,找到「文件发布选项」区域
- 点击「更多选项」,在弹出的窗口里勾选「保留目标上的额外文件」,接着点击「指定要保留的文件」,添加你需要保留的文件路径(比如
appsettings.Production.json、uploads/avatar.png) - 注意:如果只勾选「保留目标上的额外文件」,会保留所有目标端存在但本地没有的文件;如果要精准控制,一定要手动指定具体文件。
方法2:手动修改发布配置文件(.pubxml)
这种方式更灵活,适合需要精细控制或批量配置的场景:
- 找到项目下
Properties/PublishProfiles文件夹里对应的.pubxml文件(比如WebDeployProfile.pubxml) - 在
<PropertyGroup>节点内添加<SkipFiles>配置,指定要保留的文件:
<SkipFiles> <File>appsettings.Production.json</File> <File>uploads/user-1001.jpg</File> </SkipFiles>
- 要是想保留某个文件夹下的所有文件,还能用到通配符:
<SkipFiles> <File>uploads/**</File> </SkipFiles>
问题2:勾选「删除目标端不匹配文件」时,如何保留特定文件夹不被删除?
当你勾选这个选项后,Web Deploy会清理目标端所有本地项目不存在的内容,这时候要保留特定文件夹,就得通过添加跳过删除规则来实现:
方法1:通过发布界面添加规则
- 进入发布配置的「设置」标签,点击「更多选项」
- 在「部署规则」区域点击「添加」,规则类型选择「跳过删除」
- 在「目标文件或路径」里输入文件夹路径,比如
uploads/**(表示uploads文件夹下所有内容都不会被删除) - 保存配置后,部署时就会自动跳过对该文件夹的删除操作。
方法2:手动修改.pubxml文件添加跳过规则
这种方式适合批量配置多个文件夹,或者需要更精准的规则:
- 打开对应的
.pubxml文件,在<PropertyGroup>节点外添加以下配置:
<ItemGroup> <MsDeploySkipRules Include="SkipDeleteUploadsFolder"> <SkipAction>Delete</SkipAction> <ObjectName>dirPath</ObjectName> <AbsolutePath>uploads</AbsolutePath> </MsDeploySkipRules> </ItemGroup>
- 参数说明:
SkipDeleteUploadsFolder是自定义的规则名称,方便识别SkipAction设为Delete,表示跳过删除操作ObjectName设为dirPath,表示规则针对文件夹路径AbsolutePath是目标端的文件夹路径,比如要保留wwwroot/static就写wwwroot/static
- 如果要保留多个文件夹,直接添加多个
<MsDeploySkipRules>节点即可:
<ItemGroup> <MsDeploySkipRules Include="SkipDeleteUploadsFolder"> <SkipAction>Delete</SkipAction> <ObjectName>dirPath</ObjectName> <AbsolutePath>uploads</AbsolutePath> </MsDeploySkipRules> <MsDeploySkipRules Include="SkipDeleteLogsFolder"> <SkipAction>Delete</SkipAction> <ObjectName>dirPath</ObjectName> <AbsolutePath>logs</AbsolutePath> </MsDeploySkipRules> </ItemGroup>
内容的提问来源于stack exchange,提问作者youen
相关产品推荐
相关产品推荐

