PathTooLongException エラーを解決する方法
原因
Xamarin.Android プロジェクトで生成されるパス名は、非常に長くなることがあります。 たとえば、ビルド中に次のようなパスが生成される可能性があります。
C:\Some\Directory\Solution\Project\obj\Debug\library_projects\Xamarin.Forms.Platform.Android\library_project_imports\assets
Windows の場合 (パスの最大長は 260 文字)、生成されたパスが最大長を超えた場合、プロジェクトをビルドするときに、PathTooLongException が発生する可能性があります。
固定
既定でこのエラーを回避するため、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 エラーが解決しない場合は、別の方法として、プロジェクトの .csproj ファイルで IntermediateOutputPath
を設定し、ソリューションのプロジェクトに対して共通中間出力ルートを指定します。 比較的短いパスを使用してください。 次に例を示します。
<PropertyGroup>
<IntermediateOutputPath>C:\Projects\MyApp</IntermediateOutputPath>
</PropertyGroup>
ビルド プロパティの設定について詳しくは、「ビルド プロセス」を参照してください。