如何在Visual Studio中切换.NET Core项目的目标框架

Jam*_* Ko 8 .net c# visual-studio visual-studio-2015 asp.net-core

假设您有一个如下所示的.NET Core项目:

"frameworks": {
    "net40": {},
    "dotnet5.1": {}
}
Run Code Online (Sandbox Code Playgroud)

这是你的C#代码:

public class Foo
{
    public static void Blah()
    {
#if DOTNET5_1
        DoSomething();
#elif NET40
        DoSomethingElse();
#endif
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在Visual Studio中查看.cs文件时,其中一个#if部分将显示为灰色 - DoSomething或者DoSomethingElse.以下是我在笔记本电脑上的显示方式:

在此输入图像描述

是否有可能让VS在目标平台之间"切换上下文",以便您可以查看为特定平台编译的内容?例如,我可能想在实际构建解决方案之前检查每个框架的任何红色波浪线.

任何帮助将不胜感激,谢谢!

mst*_*sen 15

在编辑器的顶部应该是导航栏.导航栏左侧是一个下拉菜单,可让您选择上下文.

如果导航栏被隐藏,您可以通过进入工具>选项>文本编辑器> C#启用它,然后选中导航栏复选框.


sup*_*jos 7

已提供的答案似乎大多正确.我想强调目前存在的一些问题.

截至今天,在VS 2015 Community Ed,版本14.0.25424.00 Update 3,global.json sdk 1.0.0-preview2-003121上,只有当启动项目是多目标"可执行"项目时,导航栏才会显示多个目标(例如控制台应用程序)

多目标切换器可见

如果在多目标类库上设置启动,则不会列出目标开关(绿色箭头旁边的标签也不同):

多目标切换器不可见

此外,当可以使用切换器时,似乎构建系统提供的 "标准"条件定义未在编辑器中正确突出显示:

在此输入图像描述

为了看到正确突出显示的条件定义块,必须切换项目切换器,在最后一个屏幕截图中以绿色突出显示.似乎同一项目中的不同目标被视为此目的的不同项目.对于在编辑器中打开的任何文件,可以独立更改.