MSBUILD 从tasks.json 失败,但从 VS Code 终端运行

Gad*_*man 5 .net-core visual-studio-code

我在 VS Code 1.32.3 下的 C# .net-core 项目的tasks.json 中有一个构建任务。如果我在tasks.json 中运行任务,它会失败并显示MSBUILD:错误MSB1001:未知开关。开关: --run-time linux-arm

Executing task: C:\Program Files\dotnet\dotnet.exe publish --runtime linux-arm --configuration Debug --self-contained false M:\ProjectsGit\HelloWorldVSCode/HelloWorldVSCode.csproj <

Microsoft (R) Build Engine version 16.0.385-preview+g966cdf2ac6 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

MSBUILD : error MSB1001: Unknown switch.
Switch: --runtime linux-arm
Run Code Online (Sandbox Code Playgroud)

如果我将相同的命令复制并粘贴到 VS Code 终端,它就可以工作了!--runtime 开关中的错误在哪里?

PS M:\ProjectsGit\HelloWorldVSCode> dotnet.exe publish --runtime linux-arm --configuration Debug --self-contained false M:\ProjectsGit\HelloWorldVSCode/HelloWorldVSCode.csprojMicrosoft (R) Build Engine version 16.0.385-preview+g966cdf2ac6 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 25.18 ms for M:\ProjectsGit\HelloWorldVSCode\HelloWorldVSCode.csproj.
C:\Program Files\dotnet\sdk\3.0.100-preview-010184\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(151,5): message NETSDK1057: You are using a preview version of .NET Core. See: https://aka.ms/dotnet-core-preview [M:\ProjectsGit\HelloWorldVSCode\HelloWorldVSCode.csproj]
  HelloWorldVSCode -> M:\ProjectsGit\HelloWorldVSCode\bin\Debug\netcoreapp3.0\linux-arm\HelloWorldVSCode.dll
  HelloWorldVSCode -> M:\ProjectsGit\HelloWorldVSCode\bin\Debug\netcoreapp3.0\linux-arm\publish\
PS M:\ProjectsGit\HelloWorldVSCode> 
Run Code Online (Sandbox Code Playgroud)

Bra*_*arp 6

确保用空格分隔您的论点。代替:

"args": [
   "publish",
   "${workspaceFolder}/HelloWorldVSCode/HelloWorldVSCode.csproj",
   "--runtime linux-arm",
   "--configuration Debug",
   "--self-contained",
],
Run Code Online (Sandbox Code Playgroud)

尝试这样的事情:

"args": [
   "publish",
   "${workspaceFolder}/HelloWorldVSCode/HelloWorldVSCode.csproj",
   "--runtime",
   "linux-arm",
   "--configuration",
   "Debug",
   "--self-contained",
   "false",
],
Run Code Online (Sandbox Code Playgroud)

这里的参数列表不太适合空格。或者,您可以利用 dotnet CLI=也允许使用的事实,因此以下内容也应该有效:

"args": [
   "publish",
   "${workspaceFolder}/HelloWorldVSCode/HelloWorldVSCode.csproj",
   "--runtime=linux-arm",
   "--configuration=Debug",
   "--self-contained=false",
],
Run Code Online (Sandbox Code Playgroud)