VS 2017使用Web Deploy发布时无法删除服务器文件
解决Web Deploy发布到Azure时文件不同步的问题
我之前也碰到过一模一样的困扰,VS2017确实砍掉了那个直观的“发布时删除所有文件”选项,但还有几个靠谱的办法能搞定这个同步问题:
方法1:手动修改发布配置文件(.pubxml)
直接编辑项目的发布配置文件,给Web Deploy加上强制同步的规则:
- 在VS里右键项目 → 发布 → 点击“编辑”按钮打开发布配置
- 切换到“设置”标签页,点击“文件发布选项”里的“打开发布配置文件”
- 在打开的
.pubxml文件的<PropertyGroup>节点中,添加这段配置:
<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline> <MSDeployDeleteRule>DeleteAll</MSDeployDeleteRule>
这段配置会让Web Deploy先把应用设为离线状态,然后删除服务器上所有本地已不存在的文件,实现完全同步。
方法2:通过Azure门户用FTP/SFTP手动清理
如果不想改配置文件,也可以直接连接到服务器手动清理冗余文件:
- 登录Azure门户,找到你的App Service
- 在左侧菜单“部署”下点击“中心部署选项”,选择“FTP”或“SFTP”获取连接信息
- 用FTP工具(比如FileZilla)连接服务器,手动删掉那些本地已删但服务器还留着的文件
- 重新发布一次,后续发布应该就能保持同步了
方法3:用Azure CLI命令强制同步
习惯命令行的话,用Azure CLI可以一键完成清理+部署:
- 打开命令提示符或PowerShell,先登录Azure CLI:
az login - 切换到你的目标订阅:
az account set --subscription <你的订阅ID> - 执行清理部署命令:
az webapp deploy --resource-group <资源组名称> --name <App Service名称> --clean true --src-path <本地项目打包后的zip路径>--clean true参数会强制删除服务器上与本地包不一致的文件,确保完全同步。
方法4:检查VS的默认排除规则
有时候VS会默认排除某些文件,导致这些文件的删除操作没被同步到服务器。你可以打开项目的.csproj文件,看看有没有类似这样的排除规则:
<ItemGroup> <Content Remove="**/*.log" /> <Content Remove="**/*.tmp" /> </ItemGroup>
如果有不需要的排除规则,删掉后重新发布试试。
这些方法我都亲测有效,你可以根据自己的习惯选一个尝试。
内容的提问来源于stack exchange,提问作者Steve Olson
相关产品推荐
相关产品推荐

