最近 Xamarin.Forms のプロジェクトを新規作成したあとにビルドエラーになるというかプロジェクト作成すらままならないという状況に出会うことが増えました。
まぁ本質的にはパスの長さの問題なので別にXamarinに限った話ではないのですが辛いところですね。 (Windows 10の最新バージョンではグループポリシーエディターでパス長の制限解除できるけど、それがVS2017で有効になるのかは知らない)
とまぁTwitterで愚痴ったところ、私以外にも起きてるという人がいるということなので共有しておきます。
なんか色々なパターンがあるのですが、例えばちょっと長めのプロジェクト名をつけてデフォルトのC:\Users\<username>\Documents\Visual Studio 2017\Projects
以下に作成しようとするとこんな感じのメッセージが出たりします。
--------------------------- Microsoft Visual Studio --------------------------- サブ プロジェクト 'LongLongPathApplicationSample.Client.UWP' の作成中にエラーが発生しました。ファイル名または拡張子が長すぎます。 (HRESULT からの例外:0x800700CE) --------------------------- OK ---------------------------
対処法1
とりあえず短いパスのフォルダに作るようにする。
まぁパスが長いのが問題ですからね…。でもデフォルトのパスを出来れば使いたい。
対処法2
邪道かもしれませんが、標準のフォルダパスでファイルを管理するが、substコマンドで、ドライブ直下にあるように見せかけて作業してました。
— afterain (@cclwkmt) 2017年9月7日
ただ、Windows 10でできるか未確認ですが。
ということなので以下のようなコマンドをうってみました。
subst d: C:\Users\kaota\Documents
これでDドライブがドキュメントフォルダになります。そして、Visual Studio 2017でDドライブの下のVisual Studio 2017\Projects
にプロジェクトを作ると無事成功!!
とはなりませんでした。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー "ResolveLibraryProjectImports" タスクが予期せずに失敗しました。 System.IO.PathTooLongException: 指定されたパス、ファイル名、またはその両方が長すぎます。完全限定型名は 260 文字未満で指定し、ディレクトリ名は 248 未満で指定してください。 場所 System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost) 場所 System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost) 場所 System.IO.Directory.CreateDirectory(String path) 場所 Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(DirectoryAssemblyResolver res, ICollection`1 jars, ICollection`1 resolvedResourceDirectories, ICollection`1 resolvedAssetDirectories, ICollection`1 resolvedEnvironments) 場所 Xamarin.Android.Tasks.ResolveLibraryProjectImports.Execute() 場所 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 場所 Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() LongLongPathApplicationSample.Client.Android
まだ長いのか…。ならばこうだ
subst /D d: subst d: "C:\Users\kaota\Documents\Visual Studio 2017\Projects"
開きなおして実行すると、やったね!!
まとめ
緩募。もっといい方法とかあれば。