使用Web Deploy发布ASP.NET项目时目标文件夹为空如何解决
ASP.NET Framework 4.6.1 发布提示成功但目标文件夹为空问题
问题表现
- 基于.NET Framework 4.6.1的ASP.NET项目,无论发布到网络共享路径还是本地文件系统,构建环节可正常完成,执行到
Publishing folder /...步骤时无任何耗时直接推进,最终提示Web App was published successfully,但目标路径下无任何写入内容 - 勾选发布选项中的「Delete all existing files prior to publish(发布前删除所有现有文件)」时,程序可正常删除目标文件夹内已有文件,排除目标路径读写权限异常
- 数周前使用完全相同的发布配置文件,发布流程可正常运行,无该问题
现有发布配置文件内容
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <WebPublishMethod>FileSystem</WebPublishMethod> <LastUsedBuildConfiguration>Test</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <SiteUrlToLaunchAfterPublish /> <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> <ExcludeApp_Data>False</ExcludeApp_Data> <publishUrl>\\myserver\project\wwwroot</publishUrl> <DeleteExistingFiles>False</DeleteExistingFiles> </PropertyGroup> </Project>
修复方案
按优先级依次尝试以下操作:
- 清理编译与发布缓存
完全关闭Visual Studio后,删除以下路径的内容,重新打开VS重试发布:- 项目根目录下的
bin、obj文件夹 - 项目根目录下隐藏的
.vs文件夹 - 本地临时目录下的Web发布缓存:直接在资源管理器地址栏输入
%LOCALAPPDATA%\Temp\WebPublish回车,删除该目录下所有内容
- 项目根目录下的
- 补全发布配置缺失项
当前使用的.pubxml配置文件缺少文件系统发布必需的标识参数,在PropertyGroup节点内补充以下配置:
<publishProtocol>FileSystem</publishProtocol> <ProjectGuid>{替换为你项目的实际GUID,可在.csproj文件开头的<ProjectGuid>节点找到}</ProjectGuid>
保存配置后重新执行发布。
- 修复Web Deploy组件
该问题大概率是本地Visual Studio的Web发布组件损坏导致,打开Visual Studio Installer,找到对应安装的VS版本,选择「修改」,在单个组件列表中确认Web Deploy组件已勾选,执行修复安装,完成后重启VS重试。 - 命令行发布定位隐藏报错
如果以上操作都无效,打开对应版本的VS开发人员命令提示符,进入项目根目录执行以下命令,可输出VS发布弹窗隐藏的详细错误日志:
msbuild 你的项目文件名.csproj /p:DeployOnBuild=true /p:PublishProfile=你使用的发布配置文件名.pubxml /v:detailed
在输出日志中搜索Publishing folder相关的段落,即可看到具体的报错原因,对应处理即可。
内容的提问来源于stack exchange,提问作者Marc Spichtig
相关产品推荐
相关产品推荐

