Поделиться через


Как устранить ошибку 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>

Дополнительные сведения о настройке свойств сборки см. в статье Процесс сборки.