Как устранить ошибку PathTooLongException?
Причина
Созданные имена путей в проекте Xamarin.Android могут быть довольно длинными. Например, во время сборки может быть создан следующий путь:
C:\Some\Directory\Solution\Project\obj\Debug\library_projects\Xamarin.Forms.Platform.Android\library_project_imports\assets
В Windows (где максимальная длина пути — 260 символов), PathTooLongException может появиться при построении проекта, если размер созданного пути превышает максимальную длину.
Fix
Чтобы обойти эту ошибку по умолчанию, для свойства UseShortFileNames
MSBuild установлено значение True
. Если это свойство имеет значение True
, процесс сборки использует более короткие имена путей, чтобы снизить вероятность создания PathTooLongException.
Например, если UseShortFileNames
имеет значение True
, то приведенный выше путь сокращается до пути, аналогичного следующему:
C:\Some\Directory\Solution\Project\obj\Debug\lp\1\jl\assets
Чтобы задать это свойство вручную, добавьте следующее свойство MSBuild в файл проекта .csproj:
<PropertyGroup>
<UseShortFileNames>True</UseShortFileNames>
</PropertyGroup>
Если установка этого флага не приводит к устранению ошибки PathTooLongException, другой подход заключается в указании общего промежуточного корневого каталога для проектов в решении путем установки IntermediateOutputPath
в файле проекта .csproj. Попробуйте использовать относительно короткий путь. Например:
<PropertyGroup>
<IntermediateOutputPath>C:\Projects\MyApp</IntermediateOutputPath>
</PropertyGroup>
Дополнительные сведения о настройке свойств сборки см. в статье Процесс сборки.