You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:26:31