TFS构建失败:路径/文件名过长导致.target文件无法复制文件
解决TFS构建中VSTO项目路径过长导致的复制失败问题
我之前也碰到过这个一模一样的坑——Windows传统的260字符路径限制在部署VSTO项目时特别容易触发,尤其是TFS构建会叠加工作区、项目目录、发布层级这些,很容易就超了。针对你遇到的报错,给你几个亲测有效的解决方案:
方案1:直接缩短关键路径
这是最直接快速的解决办法:
- 缩短工作区映射路径:把TFS工作区从长路径(比如
C:\TFS\MyCompany\BigTeam\LongProjectName\...)映射到更短的根目录,比如C:\TFS\Proj\。 - 修改项目输出路径:右键项目→属性→生成,把输出路径改成更短的格式,比如把
.\bin\Release\app.publish改成.\bin\Rel\pub;同时记得在TFS构建定义里同步更新输出目录的设置。 - 简化版本号目录:你报错里的
SI.TemplateDesignerOffice2007_4_1_9080_0199这个带长版本号的目录占了不少字符,可以考虑在项目属性里把版本号改短(比如用4.1.9080代替带四位修订号的格式)。
方案2:启用Windows长路径支持
如果你的构建服务器是Windows 10 1607+/Windows Server 2016+,可以开启系统级的长路径支持来绕过限制:
- 通过组策略设置:打开
gpedit.msc,导航到计算机配置 > 管理模板 > 系统 > 文件系统,找到「启用Win32长路径」并设置为「已启用」。 - 通过注册表设置:打开
regedit,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,新建或修改LongPathsEnabled的DWORD值为1。 - 注意:修改后需要重启服务器才能生效,且确保你的MSBuild版本是15.0+(VS2017及以上),旧版本MSBuild可能不支持长路径。
方案3:修改VSTO项目的发布配置
直接编辑项目的.csproj/.vbproj文件,调整发布相关的路径:
- 找到
<PublishUrl>和<InstallUrl>节点,把它们改成更短的相对路径,比如:<PublishUrl>..\..\ShortPublish\</PublishUrl> - 这样生成的
Application Files目录会放在更上层的短路径下,避免层级过深。
方案4:在TFS构建流程中加入临时复制步骤
通过构建任务中转输出,绕过长路径:
- 在TFS构建定义里添加一个「复制文件」任务,把项目
bin\Release目录下的所有内容复制到一个短路径的临时目录(比如C:\Temp\BuildOutput)。 - 后续的发布步骤(比如VSTO发布任务)直接指向这个临时目录,这样发布时生成的路径就会短很多。
另外提个小提醒:如果你用的是VS2015对应的MSBuild v14.0,它对长路径的支持有限,优先考虑方案1或方案4;如果能升级到VS2017+的MSBuild,配合方案2会更省心。
内容的提问来源于stack exchange,提问作者Mr. N. Das
相关产品推荐
相关产品推荐

