我在构建WPF解决方案时遇到了问题。每次尝试构建时,都会收到以下错误消息:
未知的构建错误,“指定的路径、文件名或两者都太长。完全限定的文件名必须少于260个字符,并且目录名必须少于248个字符。”
有人能帮我吗?我已经验证了所有字段及其扩展路径,一切正常。这可能是TortoiseSVN或类似问题导致的吗?我最近添加了一个文件夹到我的解决方案中,这可能与此有关吗?
我在构建WPF解决方案时遇到了问题。每次尝试构建时,都会收到以下错误消息:
未知的构建错误,“指定的路径、文件名或两者都太长。完全限定的文件名必须少于260个字符,并且目录名必须少于248个字符。”
有人能帮我吗?我已经验证了所有字段及其扩展路径,一切正常。这可能是TortoiseSVN或类似问题导致的吗?我最近添加了一个文件夹到我的解决方案中,这可能与此有关吗?
这是Windows win32 API中一个众所周知的限制。您存储项目的目录嵌套太深了。文件的完整路径名不能超过259个字符。如果超出此限制,许多使用MAX_PATH的C代码由于缓冲区溢出而开始失败。
将您的解决方案移动到另一个目录,靠近根目录。
我曾遇到一个类似的问题,编译器报告 ASPNETCOMPILER 文件有问题。实际上,问题出在解决方案中包含了 node_modules 文件夹,而该文件夹中可能包含非常长的路径,看起来编译器无法处理。
Windows 8.1 和 10 有一个选项可以增加 Win32 路径限制:
这可能允许您暂时将问题文件夹移出构建文件夹,这可能使您能够成功构建,然后您可以将文件夹添加回解决方案中,而不会影响任何内容。
请参阅此处以获得额外的参考 - https://www.microfocus.com/documentation/filr/filr-4/filr-desktop/t47bx2ogpfz7.html
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
mklink /D "D:\project\myProject" "YOUR_ACTUAL_LONG_PATH_PROJECT_ROOT_DIRECTORY"
[如果上述命令无法执行,您可能需要以管理员身份打开cmd]不用担心...这个错误是由于路径名太长引起的,假设您的项目文件夹名称为"myproject"。
只需更改项目文件夹的位置...将您的项目"myproject"放到D:\myproject或F:\myproject驱动器中。然后再次发布即可...它会正常工作...
编码愉快...
C:\Windows\Microsoft.NET\Framework
C:\Windows\Microsoft.NET\Framework64
C:\Users\[用户名]\AppData\Local\Temp
找到您正在使用的解决方案的.NET版本,然后删除您认为会影响构建的任何版本的“Temporary ASP.NET Files”文件夹。
您可以将它们全部删除,但是您下一次构建Web项目可能需要更长的时间,因为没有预编译的程序集...
对于包含ASP.NET项目的解决方案,此解决方案对我有效-它不适用于其他人在答案中提到的WPF项目,除非他们的解决方案也包含ASP.NET项目。
如果这些失败-您可以尝试通过执行以下操作递归搜索路径大于260的文件/文件夹来搜索您的解决方案根目录:
打开PowerShell
cd <解决方案根目录路径>
cmd /c dir /s /b |? {$_.length -gt 260} > output.txt
这将有助于你查找解决方案中路径过长的文件。
为此,您需要以管理员身份在Windows上运行Power Shell,然后键入:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
-Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
这解决了这个问题。