我在构建Xamarin Forms Android模块应用程序时遇到了问题。 我经常遇到以下错误。
Severity Code Description Project File Line Suppression State
Error The "ConvertResourcesCases" task failed unexpectedly.
System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.InternalGetDirectoryName(String path)
at System.IO.Path.GetDirectoryName(String path)
at Xamarin.Android.Tools.Files.CopyIfChanged(String source, String destination)
at Xamarin.Android.Tasks.MonoAndroidHelper.CopyIfChanged(String source, String destination)
at Xamarin.Android.Tasks.ConvertResourcesCases.FixupResources(ITaskItem item, Dictionary 2 acwMap)
at Xamarin.Android.Tasks.ConvertResourcesCases.FixupResources(Dictionary 2 acwMap)
at Xamarin.Android.Tasks.ConvertResourcesCases.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder<ExecuteInstantiatedTask>d__26.MoveNext() EHG.EmployeeApp.Mobile.Android
请建议并帮助我,提前致谢。
答案 0 :(得分:0)
“ConvertResourcesCases”任务意外失败。 System.IO.PathTooLongException:指定的路径,文件名或两者都是 太长了完全限定的文件名必须小于260 字符和目录名称必须少于248个字符。
这意味着路径超出了Windows允许的最大值。尝试将解决方案移动到磁盘的根目录,以使路径更小。例如,将其移至:
D:\YourProject
编辑:
我只在发布模式下遇到此问题,如果我切换到调试模式正常工作。
我认为在发布模式下,Windows
具有更严格的检查机制。为了验证这一点,我创建了一个演示,这是项目路径:
C:\Users\username\Downloads\CollapsingToolbarLayout\CollapsingToolbarLayout123\CollapsingToolbarLayout1234\CollapsingToolbarLayoutasd\CollapsingToolbarLayoutaasda\App1
它在调试模型中工作正常,但在发布模式下面临完全相同的问题。
但是当我把这个项目移到:</ p>
C:\Users\username\Downloads\CollapsingToolbarLayout\CollapsingToolbarLayout123\App1
它在调试模型和发布模式下都能正常工作。所以你可以将你的项目转移到更短的路径,我认为这是一个永久的解决方案。
Windows具有最大路径长度限制。您可以在Windows Naming Files, Paths, and Namespaces中看到它:
最大路径长度限制在Windows API中(以下段落中讨论了一些例外),路径的最大长度为MAX_PATH,定义为260个字符。本地路径按以下顺序构成:驱动器号,冒号,反斜杠,由反斜杠分隔的名称组件以及终止空字符。例如,驱动器D上的最大路径是“D:\某个256个字符的路径字符串”,其中“”表示当前系统代码页的不可见的终止空字符。 (字符&lt;&gt;在此处用于视觉清晰度,不能是有效路径字符串的一部分。)这就是您遇到问题的原因。
另一种解决方案是使用长路径工具。正如PierceBoggan said:
避免此问题的最简单方法是将源移动到C:/驱动器(或路径中字符较少的其他位置)或安装长路径工具。