在 Visual Studio 2019 年的编译器指令之间切换?

Switching between compiler directives in Visual Studio 2019?

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

<TargetFrameworks>netstandard2.0;net45;net46</TargetFrameworks>

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

问题:

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

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

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

重新定义 TargetFrameworks。使用相同的语法,只需输入其他目标即可。

这是您在项目属性中定义的条件编译符号的问题。

导航到项目的属性选项卡和 select 构建选项卡。在那里你可以定义那些符号。

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


Conditional-compilation 符号在 .csproj 文件中声明:

<PropertyGroup Condition="'$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net46'">
  <DefineConstants>NETFULL</DefineConstants>
</PropertyGroup>

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