发布MVC 4应用程序时出现PathTooLongException。指定的路径,文件名或两者都太长

时间:2015-06-22 17:34:08

标签: c# asp.net-mvc visual-studio-2012 msbuild

尝试使用VS2012发布我的MVC 4项目时出现以下错误:

  

错误8" CollectFilesinFolder"任务意外失败。   System.IO.PathTooLongException:指定的路径,文件名或两者   太长了完全限定的文件名必须小于260   字符和目录名称必须少于248个字符   在System.IO.PathHelper.GetFullPathName()
      在   System.IO.Path.NormalizePath(String path,Boolean fullCheck,Int32   maxPathLength,Boolean expandShortPaths)
      在   System.IO.Path.GetFullPathInternal(String path)
  在   System.Security.Util.StringExpressionSet.CanonicalizePath(String path,   Boolean needFullPath)
  在   System.Security.Util.StringExpressionSet.CreateListFromExpressions(字符串[]   str,Boolean needFullPath)
  在   System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess   access,AccessControlActions控件,String [] pathListOrig,Boolean   checkForDuplicates,Boolean needFullPath,Boolean copyPathList)
  在   System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess   访问,字符串路径)
  在System.IO.FileSystemInfo.get_FullName()

构建解决方案(调试或发布)时不会发生错误,它只是在发布(文件系统)时发生。

我无法确定导致问题的文件,目录或路径。

我如何或在哪里可以看到导致问题的原因?

这是输出窗口的输出。我很感激任何帮助来解决这个问题。谢谢!

  

错误8" CollectFilesinFolder"任务意外失败。   System.IO.PathTooLongException:指定的路径,文件名或两者   太长了完全限定的文件名必须小于260   字符和目录名称必须少于248个字符   在System.IO.PathHelper.GetFullPathName()
  在   System.IO.Path.NormalizePath(String path,Boolean fullCheck,Int32   maxPathLength,Boolean expandShortPaths)
  在   System.IO.Path.GetFullPathInternal(String path)
  在   System.Security.Util.StringExpressionSet.CanonicalizePath(String path,   Boolean needFullPath)
  在   System.Security.Util.StringExpressionSet.CreateListFromExpressions(字符串[]   str,Boolean needFullPath)
  在   System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess   access,AccessControlActions控件,String [] pathListOrig,Boolean   checkForDuplicates,Boolean needFullPath,Boolean copyPathList)
  在   System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess   访问,字符串路径)
  在System.IO.FileSystemInfo.get_FullName()
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.CollectAllFiles(字符串   rootPath,DirectoryInfo dirinfo,布尔递归,List`1结果,   Boolean defaultInclude,Regex [] fullPathMatchs,Regex []   relativePathMatchs,Regex [] excludeFullPathMatchs,Regex []   excludeRelativePathMatchs)
  在   Microsoft.Web.Publishing.Tasks.CollectFilesinFolder.Execute()
  在   Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
  在   Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()0 0 Nop.Web

2 个答案:

答案 0 :(得分:1)

当您的解决方案包含名称很长和/或具有大量嵌套命名空间和/或位于深层子文件夹中的项目时,就会发生这种情况。

尝试将其移近根文件夹,如X:\ Projects \甚至X:。如果这还不够,您将被迫重命名命名空间

答案 1 :(得分:0)

在VS2015中发布ASP.NET Core MVC解决方案时遇到了同样的问题。事实证明,在[解决方案名称] \ bin \ Release \ PublishOutput内部有一个流氓 bin 文件夹,其中包含以下内容:

  

[Rogue bin   文件夹] \ BIN \发布\ PublishOutput \ BIN \发布\ PublishOutput ...

我不知道它去了多长时间但我删除了它,问题就消失了。