C# 如何在Visual Studio中为.NET核心项目在目标框架之间切换

C# 如何在Visual Studio中为.NET核心项目在目标框架之间切换,c#,.net,visual-studio,visual-studio-2015,asp.net-core,C#,.net,Visual Studio,Visual Studio 2015,Asp.net Core,假设您有一个.NET核心项目,其外观如下: "frameworks": { "net40": {}, "dotnet5.1": {} } 这是你的C代码: 现在,在Visual Studio中,当您查看.cs文件时,其中一个#if部分将灰显-DoSomething或DoSomethingElse。下面是它如何显示在我的笔记本电脑上: 有没有可能让VS在目标平台之间“切换上下文”,这样您就可以查看为特定平台编译的内容?例如,在实际构建解决方案之前,我可能希望检查每个框架是否有红

假设您有一个.NET核心项目,其外观如下:

"frameworks": {
    "net40": {},
    "dotnet5.1": {}
}
这是你的C代码:

现在,在Visual Studio中,当您查看
.cs
文件时,其中一个
#if
部分将灰显-
DoSomething
DoSomethingElse
。下面是它如何显示在我的笔记本电脑上:

有没有可能让VS在目标平台之间“切换上下文”,这样您就可以查看为特定平台编译的内容?例如,在实际构建解决方案之前,我可能希望检查每个框架是否有红色的曲线


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

编辑器顶部应该是导航栏。导航栏左侧有一个下拉菜单,可供选择上下文


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

已经提供的答案似乎基本正确。我只想强调一下目前存在的一些问题

截至今天,在VS 2015社区版14.0.25424.00更新3,global.json sdk 1.0.0-preview2-003121上,仅当启动项目是多目标“可执行”项目(例如控制台应用程序)时,导航栏才会显示多个目标

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

此外,当可以使用切换器时,编辑器中似乎没有正确突出显示“标准”条件定义:


为了正确突出显示条件定义块,必须切换上一个屏幕截图中以绿色突出显示的项目切换器。似乎出于这个目的,同一项目中的不同目标被视为不同的项目。而且,对于在编辑器中打开的任何文件,都可以独立地对其进行更改。

另一方面,为什么要选择
net40
?您的类库将与针对完整.NET Framework运行的.NET Core不兼容,因为支持的最低版本是.NET 4.5.1。您至少需要多目标
net451
net40
来支持4.0和(ASP.NET)内核与完整的.NET框架/Mono@Tseng请返回您链接的文档
dotnet5.1
将处理.NET 4.5、Windows 8和大多数其他平台
net40
将处理.NET4.0。@JamesKo由于大多数同步方法都被删除,而代之以异步替代方法(在套接字等中),因此将.NET4作为目标将很棘手。另外,.NET 4已经过时,.NET 4.5.2是新的基线。@LexLi是的,但对于不需要异步支持的简单库(),以.NET 4为目标并不是什么大问题。非常感谢!我认为这是我的主要问题,我不知道有导航栏可用,所以当VS说我可以使用导航栏切换上下文时,我感到困惑。请注意,这只会改变视图和智能感知。要选择要针对哪个目标运行,请检查“开始调试”按钮的下拉列表。(VS2017/2019)
public class Foo
{
    public static void Blah()
    {
#if DOTNET5_1
        DoSomething();
#elif NET40
        DoSomethingElse();
#endif
    }
}