【发布时间】:2012-07-11 03:54:18
【问题描述】:
我在构建 WPF 解决方案时遇到了问题。每次我尝试构建它时,都会收到以下错误消息:
未知的构建错误,'指定的路径、文件名或两者都太 长。完全限定的文件名必须少于 260 个字符, 并且目录名称必须少于 248 个字符。'
有人可以帮助我吗?我已经验证了所有字段及其扩展路径都可以。这可能是 TortoiseSVN 或类似的问题吗?我最近在我的解决方案中添加了一个文件夹,可以用这个吗?
【问题讨论】:
我在构建 WPF 解决方案时遇到了问题。每次我尝试构建它时,都会收到以下错误消息:
未知的构建错误,'指定的路径、文件名或两者都太 长。完全限定的文件名必须少于 260 个字符, 并且目录名称必须少于 248 个字符。'
有人可以帮助我吗?我已经验证了所有字段及其扩展路径都可以。这可能是 TortoiseSVN 或类似的问题吗?我最近在我的解决方案中添加了一个文件夹,可以用这个吗?
【问题讨论】:
这是 Windows win32 api 中众所周知的限制。您存储项目的目录嵌套太深。文件的完整路径名不能超过 259 个字符。除此之外,由于缓冲区溢出,许多使用 MAX_PATH 的 C 代码开始失败。
将您的解决方案移至另一个目录,即更接近根目录的目录。
【讨论】:
不用担心....这个错误是因为路径名太长,假设您的项目文件夹名称是“myproject”。
您只需更改项目文件夹的位置...将您的项目“myproject”放入 D:\myproject 或 F:\myproject 驱动器。然后您再次发布..它的工作...
快乐编码...
【讨论】:
构建定义工作区“构建代理文件夹位置”存在问题 VS 添加路径示例: $(SourceDir)E:\Somedirectory\ProjectName\ 只需保留 $(SourceDir) 归档
【讨论】:
我遇到了同样的问题。我的结帐路径比我的 CI 服务器上使用的路径短。它在 CI 服务器和我所有同事的机器上都可以构建。我们的路径长度相同,因为我们公司有固定长度的用户名。由于路径很长,我是唯一无法构建解决方案的机器。
如果您转到这些文件夹:
C:\Windows\Microsoft.NET\Framework
C:\Windows\Microsoft.NET\Framework64
C:\Users\[用户名]\AppData\Local\Temp
找到您在解决方案中使用的 .NET 版本,然后从您认为影响构建的版本中删除“临时 ASP.NET 文件”文件夹。
您可以将它们全部删除,您下一次构建 Web 项目可能需要更长的时间,因为不会有预编译的程序集...
此解决方案适用于包含 ASP.NET 项目的解决方案 - 它不适用于其他人在其答案中提到的 WPF 项目,除非他们的解决方案还包含 ASP.NET 项目。
搜索错误字符串 VS 让你把我带到这里,所以我认为它可能会帮助其他人,如果不是有 WPF 构建问题的 Op。
如果这些失败 - 您可以尝试通过执行以下操作递归搜索解决方案根目录中路径大于 260 的文件/文件夹:
打开 Powershell
cd <path to solution root>
cmd /c dir /s /b |? {$_.length -gt 260} > output.txt
这会将路径 > 260 的文件列表传送到 output.txt 文件,该文件将在您的解决方案的根目录中新创建。
这将帮助您找到解决方案中过长的文件。
【讨论】:
我遇到了类似的问题,编译器报告说文件 ASPNETCOMPILER 存在问题。实际问题是该解决方案包含一个 node_modules 文件夹,而该文件夹可能包含非常长的路径,并且看起来编译器无法处理。
Windows 8.1 和 10 可以选择增加 Win32 路径限制:
这可能允许您暂时将问题文件夹移出构建,这可能允许您成功构建,然后您可以将文件夹重新添加到解决方案中而不会影响任何内容。
更多参考请参见此处 - https://www.microfocus.com/documentation/filr/filr-4/filr-desktop/t47bx2ogpfz7.html
【讨论】:
这个问题是由于 Windows 操作系统对处理长度大于 260 的长路径的限制造成的。VS2019 的这个问题的解决方案非常简单。但是,对于 VS2017 用户,我们可以使用变通方法来解决问题。
VS 2019
run窗口(windows-key + r),然后输入regedit并回车。HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
LongPathsEnabled,双击它,将值从0更改为1
一般解决方法(VS2017/VS2019)
我们可以创建一个原始较长路径到较短路径的链接。然后,VS会将较短的路径作为项目根目录,问题就解决了。
"D:\project" 目录mklink /D "D:\project\myProject" "YOUR_ACTUAL_LONG_PATH_PROJECT_ROOT_DIRECTORY" [如果上述命令执行失败,您可能需要以管理员身份打开 cmd]
"D:\project\myProject" 目录打开 VS 项目,它应该可以工作了。【讨论】: