結論
Visual Studio Community2022を17.7.6にダウングレードすれば解決。
詳細と駄文
当方、Visual Studio Community 2022で開発するプロジェクトを基本Google Drive上に置きっぱなしにして生きております。
先日、VSCommunity2022のバージョンを更新したところ、C#プロジェクト1のビルド時に以下のエラーが出て何もできなくなりました。
MSB4018 "CreateAppHost" タスクが予期せずに失敗しました。
System.IO.IOException: 要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFileSecurity memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(FileStream fileStream, String mapName, Int64 capacity, MemoryMappedFileAccess access, MemoryMappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability, Boolean leaveOpen)
場所 Microsoft.NET.HostModel.ResourceUpdater.Update()
場所 Microsoft.NET.HostModel.AppHost.HostWriter.<>c__DisplayClass2_0.<CreateAppHost>b__1()
場所 Microsoft.NET.HostModel.RetryUtil.RetryOnIOError(Action func)
場所 Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost(String appHostSourceFilePath, String appHostDestinationFilePath, String appBinaryFilePath, Boolean windowsGraphicalUserInterface, String assemblyToCopyResourcesFrom, Boolean enableMacOSCodeSign)
場所 Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore()
場所 Microsoft.NET.Build.Tasks.TaskBase.Execute()
場所 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
場所 Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() *** C:\Program Files\dotnet\sdk\8.0.303\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets 709
(一部伏字)
Google Drive外であればエラーは出ないので、完全にネットワークドライブがらみ。(おそらくOne DriveやRAM Diskでも起こると推測)
Microsoft様は非常にクソな面倒なことをやらかしてくれたので、wingetを用いてダウングレードしましょう。
Visual Studio Installer単体でできないのもクソ
【VS2022】ダウングレード、winget で Visual Studio 2022 のバージョンをダウングレードする方法あたりを参考に。
ダウングレード手順の簡単な説明
リンクが死んでると悲しい思いをするので一応記載。
- wingetがインストールされていない人はマイクロソフトストアからアプリインストーラーというアプリをインストール
- 以下のコマンドでインストール可能なバージョンの一覧表示
winget show Microsoft.VisualStudio.2022.Community --versions
- 以下のコマンドでVSCommunity2022をアンインストール
winget uninstall --id Microsoft.VisualStudio.2022.Community
- 以下のコマンドでバージョンを指定してインストール
winget install --id Microsoft.VisualStudio.2022.Community --version 17.7.6
現状確認済みのバージョンは以下。2
バージョン | 大丈夫か |
---|---|
17.3.2(古すぎ) | OK |
17.7.6 | OK |
17.8.0 | NG |
17.8.6 | NG |
17.10.4 | NG |
17.10.5 | NG |
17.8.0は.Net8に初めて対応したバージョンなので早く修正してほしいところ。