Visual Studio 2022发布项目到IIS提示找不到部分路径错误
Visual Studio 发布项目到IIS提示找不到路径问题排查
问题背景
- 项目从本地C盘整体迁移到G盘后,执行发布到IIS操作时触发复制文件报错
- 报错提示的源文件经核查确实存在于对应路径
- 已尝试修改注册表开启
accept long path长路径支持,问题未解决
报错详情
Could not copy "G:\Shared drives\Information Technology\Employee Folders\Application Development\ASP.net\Exposure Tracker\Exposure Tracker Files\ExposureTracker\wwwroot\Atlantis Theme\js\plugin\jqvmap\maps\continents\jquery.vmap.australia.js" to "G:\Shared drives\Information Technology\Employee Folders\Application Development\ASP.net\Exposure Tracker\Exposure Tracker Files\ExposureTracker\obj\Release\net6.0\PubTmp\Out\wwwroot\Atlantis Theme\js\plugin\jqvmap\maps\continents\jquery.vmap.australia.js". Beginning retry 8 in 1000ms. Could not find a part of the path 'G:\Shared drives\Information Technology\Employee Folders\Application Development\ASP.net\Exposure Tracker\Exposure Tracker Files\ExposureTracker\obj\Release\net6.0\PubTmp\Out\wwwroot\Atlantis Theme\js\plugin\jqvmap\maps\continents\jquery.vmap.australia.js'.
根因说明
报错里的目标路径总长度超过260字符,触发Windows传统Win32路径长度限制。之前单独修改系统注册表开启长路径未生效,是因为Visual Studio、MSBuild、.NET SDK默认没有同步开启长路径兼容,加上迁移后的G盘目录本身嵌套层级极深,叠加发布临时目录obj\Release\net6.0\PubTmp\Out的嵌套层级,直接触发了路径长度限制。
解决步骤
按优先级依次操作即可:
- 先清理项目缓存:关闭所有打开的Visual Studio窗口,手动删除项目根目录下的
bin、obj两个文件夹,重新打开VS后右键项目选择「重新生成」,再尝试发布 - 补全全链路长路径支持配置:
- 确认注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem下的LongPathsEnabled键值为1,修改后重启电脑生效 - 找到VS安装目录下的
devenv.exe.config文件(默认路径参考:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE,根据安装版本替换Community为Professional/Enterprise即可),在文件内的<runtime>节点下添加配置:
保存后重启Visual Studio<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
3. 给.NET 6项目开启长路径兼容:在项目根目录新建或编辑Directory.Build.props文件,添加如下配置:<Project> <PropertyGroup> <LongPathSupport>true</LongPathSupport> </PropertyGroup> </Project> - 确认注册表路径
- 若上述配置后仍报错,直接缩短项目所在路径层级:删除路径中冗余的中间文件夹,将项目移动到
G:\Dev\ExposureTracker这类层级更浅的短路径下,从根源规避路径过长问题 - 最后检查目录权限:给当前Windows登录账户、
IIS_IUSRS用户组授予项目所在目录的完全控制权限,避免权限不足导致发布进程无法创建深层嵌套目录
内容的提问来源于stack exchange,提问作者Veck
相关产品推荐
相关产品推荐

