在 Visual Studio 2019 中切换编译器指令?

Roy*_*mir 3 c# compiler-directives visual-studio visual-studio-2019

我正在使用 Visual Studio 2019 和基于 SDK 的项目,具有多个目标:

<TargetFrameworks>netstandard2.0;net45;net46</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当我编写条件代码时,我(显然)看到一些灰色代码和一些常规颜色代码:

在此输入图像描述

问题:

哪些设置决定哪些部分将呈灰色,哪些部分不会?因为现在,如果我想编辑“ NETFULL”部分(因为我是多目标),它都是灰色的,而且我没有智能感知。

我如何告诉 VS:现在让我们切换到NETFULL模式?

注意:当然我可以删除该条件,但我想知道为什么它是灰色的以及如何在它们之间切换(因为我是多目标)

Ste*_*edy 5

要在您定位的框架之间切换,请使用代码窗格左上角的下拉菜单:

在此输入图像描述 在此输入图像描述


条件编译符号在 .csproj 文件中声明:

<PropertyGroup Condition="'$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net46'">
  <DefineConstants>NETFULL</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

或者您可以使用预定义符号,例如NETFRAMEWORKNETSTANDARDNETCOREAPP(或版本化预定义符号,例如NETSTANDARD2_0)。