构建 Asp.Net Core 项目时出现 System.IO.PathTooLongException

Posted

技术标签:

【中文标题】构建 Asp.Net Core 项目时出现 System.IO.PathTooLongException【英文标题】:System.IO.PathTooLongException when building Asp.Net Core project 【发布时间】:2017-05-25 10:02:27 【问题描述】:

当我使用 Visual Studio 2016 update 3 Asp.Net Core 构建项目时,我收到此错误并终止构建:

严重性代码描述项目文件行抑制状态 错误 MSB4018 “FindConfigFiles”任务意外失败。 System.IO.PathTooLongException:指定的路径、文件名或两者都太长。完全限定文件名必须少于 260 个字符,目录名必须少于 248 个字符。 在 System.IO.Path.NormalizePath(字符串路径,布尔 fullCheck,Int32 maxPathLength,布尔 expandShortPaths) 在 System.IO.Path.GetDirectoryName(字符串路径) 在 System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler1 resultHandler, Boolean checkHost) 在 System.IO.Directory.EnumerateFiles(字符串路径) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func2 filter) at TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(String directoryPath, String projectPath, Func2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherFiles(字符串目录路径,字符串项目路径,Func`2 过滤器) 在 TypeScript.Tasks.FileHelpers.RecursiveGatherConfigFiles(字符串目录路径,字符串项目路径) 在 TypeScript.Tasks.FindConfigFiles.FindConfigFilesOnDisk() 在 TypeScript.Tasks.FindConfigFiles.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() D:\weblFront\frontWeb\src\frontWeb\frontWeb.xproj C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\Microsoft .TypeScript.targets 156

我不使用任何工具等。只有 Gulp。请问如何解决这个问题。

【问题讨论】:

您使用的是哪个 npm 版本? (在控制台中执行 npm -v) npm 版本为:4.1.1 【参考方案1】:

这看起来像是一个简单的错误,原因是路径(可能在依赖项中)对于 Windows 来说太长了。您可以通过使用您的代码缩短文件夹的路径来解决此问题。

例如尝试移动项目文件夹

来自 D:\weblFront\frontWeb\src\frontWeb\frontWeb\

到 D:\Code\frontWeb\

【讨论】:

感谢您的快速回复。现在可以了。我将 D:\weblFront\frontWeb\src\frontWeb\ 的内容移动到 D:\web 并且它可以工作。 经过一番谷歌搜索后,似乎有些人通过清除并重新安装他们的 NPM 包解决了类似的问题。不知道为什么会有帮助,但很容易尝试。 有时间我会试一试的。我希望我能尽快完成我的第一个 Asp.Net Core 项目。我创建了两次第一页,每次出现这个问题。当我移动到较短的文件夹名称时,它是固定的。我希望它不会再来了。 看起来它不接受任何正斜杠。如果我将项目的内容放在 d:\web\src 它不接受。同时,当我将它们放入 d:\webbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 时就可以了!!!我认为问题与所述 System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths) 有关。

以上是关于构建 Asp.Net Core 项目时出现 System.IO.PathTooLongException的主要内容,如果未能解决你的问题,请参考以下文章

将 asp.net core web api 部署到 aws elastic beanstalk 时出现错误 404

在 ASP.NET Core 中呈现 RDLC 报告时出现索引超出范围异常

将 asp.net core web api 部署到 IIS 7.5 时出现 500 错误

在 asp .net CORE / MVC 6 应用程序中设置 Swagger 时出现 500 错误

使用存储过程时出现 ASP.Net Core 3.1 MVC 错误

尝试对 ASP.NET Core 3.1 使用多个身份验证方案时出现异常