C# 如何在VS代码和/或.NET内核中设置编译器选项?

C# 如何在VS代码和/或.NET内核中设置编译器选项?,c#,.net-core,visual-studio-code,compiler-options,C#,.net Core,Visual Studio Code,Compiler Options,我正试图使用VS代码作为IDE,为在.NET内核上编写的C#library项目设置-checked编译器选项。如何执行此操作?当您使用VS代码打开项目/解决方案时,它将创建一个名为.vscode的目录,其中将有一个tasks.json文件 (此目录和文件是在VS代码中第一次按F5时创建的) 查看此文件,您会发现其格式与以下类似: { "version": "2.0.0", "tasks": [ { "label": "build",

我正试图使用VS代码作为IDE,为在.NET内核上编写的C#library项目设置-checked编译器选项。如何执行此操作?

当您使用VS代码打开项目/解决方案时,它将创建一个名为.vscode的目录,其中将有一个tasks.json文件

(此目录和文件是在VS代码中第一次按F5时创建的)

查看此文件,您会发现其格式与以下类似:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/project.csproj"
            ],
            "problemMatcher": "$tsc"
        }
    ]
}
(您可能有更多的任务条目)

通过将字符串添加到任务的
args
数组中,可以向每个任务添加单个参数。在上面的示例中,我调用CLI命令
dotnet
,并将参数
build
${workspaceFolder}/project传递给它。csproj
大多数(所有?)编译器选项都有相应的build参数。在要添加的参数之前,可以使用
-p:
(或
/p:
)标志将生成参数传递给
dotnet build
。然后使用
name=value
结构作为参数名和相应的值

从的文档中,对应的生成参数为

下面是PowerShell中使用
dotnet build
参数
CheckForOverflowUnderflow
的示例,该参数与
-checked
编译器选项的构建等效

PS C:\Users\me\source\repos\Solution\Solution.Models> dotnet build -p:CheckForOverflowUnderflow=true .\Solution.Models.csproj
Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  Solution.Models -> C:\Users\me\source\repos\Solution\Solution.Models\bin\Debug\netstandard2.0\Solution.Models.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:01.18
PS C:\Users\me\source\repos\Solution\Solution.Models>

这对于设置
dotnet
命令的选项很有用,但我不知道如何使用这些选项设置编译器标志。事实上,在控制台中键入
dotnet build--help
将打印所有选项的列表,并且没有与编译器标志相关的内容。这花了一些时间才找到,但这也是有条件地打开
-p:TreatWarningsAsErrors=true
的方法