无法在具有安装卷的WSL中​​构建.Net Core

Jac*_*ong 5 visual-studio-code windows-subsystem-for-linux .net-core-3.0

描述错误

我正在使用VS Code,WSL和.net core 3.0预览版,在WSL中构建一个示例Web API项目,该项目存储在C驱动器中。但是它抛出一个带有异常错误的异常

"/mnt/c/temp/test/test.csproj" (default target) (1:7) ->
                   (_CreateAppHost target) ->
                     /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018: The "CreateAppHost" task failed unexpectedly. [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018: System.IO.IOException: Invalid argument [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at System.IO.MemoryMappedFiles.MemoryMappedView.CreateView(SafeMemoryMappedFileHandle memMappedFileHandle, MemoryMappedFileAccess access, Int64 requestedOffset, Int64 requestedSize) [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size, MemoryMappedFileAccess access) [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.NET.HostModel.AppHost.HostWriter.<>c__DisplayClass2_0.<CreateAppHost>g__RewriteAppHost|0() [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.NET.HostModel.RetryUtil.RetryOnIOError(Action func) [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.NET.HostModel.AppHost.HostWriter.CreateAppHost(String appHostSourceFilePath, String appHostDestinationFilePath, String appBinaryFilePath, Boolean windowsGraphicalUserInterface, String assemblyToCopyResorcesFrom) [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.NET.Build.Tasks.CreateAppHost.ExecuteCore() in /_/src/Tasks/Microsoft.NET.Build.Tasks/CreateAppHost.cs:line 68 [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.NET.Build.Tasks.TaskBase.Execute() in /_/src/Tasks/Common/TaskBase.cs:line 38 [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [/mnt/c/temp/test/test.csproj]
                   /usr/share/dotnet/sdk/3.0.100-preview9-014004/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(370,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [/mnt/c/temp/test/test.csproj]
Run Code Online (Sandbox Code Playgroud)

重现

重现此问题的步骤:1.在Windows 10和WSL上同时使用此版本的ASP.NET Core'3.0.100-preview9'2.在Windows 10 + cd c:\ temp + dotnet新的webapi中3.转到WSL, (/ mnt / c / temp)3.运行dotnet build 4.看到错误

预期行为

成功运行“ dotnet构建”,并且可以从VSCode在WSL中运行/调试应用程序

alv*_*alv 7

在 Windows 10 上的 WSL 2 下全新安装的 Ubuntu (20.04) 上设置 dotnet 我The "CreateAppHost" task failed unexpectedly.在运行时遇到了上述错误以及一堆与文件系统相关的权限错误dotnet build- 但是sudo dotnet build工作得很好......

我的解决方案是关闭/重新启动所有正在运行的 WSL 实例,从 Windows 命令提示符列出所有正在运行的实例;

C:\> wsl -l --running
Windows Subsystem for Linux Distributions:
docker-desktop-data (Default)
Ubuntu
docker-desktop
Run Code Online (Sandbox Code Playgroud)

然后关闭您想要用于 dotnet 的正在运行的程序;

C:\> wsl --terminate Ubuntu
Run Code Online (Sandbox Code Playgroud)

然后重新运行/重新启动发行版;

C:\> wsl -d Ubuntu
Run Code Online (Sandbox Code Playgroud)

然后神奇地dotnet build在没有添加的情况下工作sudo,也通过 vscode WSL 远程插件工作...希望这个简单的“重新启动解决方案”对其他人有帮助!