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

Posted

技术标签:

【中文标题】如何在 Visual Studio 中切换 .NET Core 项目的目标框架【英文标题】:How to switch between target frameworks for .NET Core projects in Visual Studio 【发布时间】:2016-07-07 05:25:00 【问题描述】:

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

"frameworks": 
    "net40": ,
    "dotnet5.1": 

这是你的 C# 代码:

public class Foo

    public static void Blah()
    
#if DOTNET5_1
        DoSomething();
#elif NET40
        DoSomethingElse();
#endif
    

现在,在 Visual Studio 中,当您查看 .cs 文件时,#if 部分之一将变灰 - DoSomethingDoSomethingElse。这是它在我的笔记本电脑上的显示方式:

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

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

【问题讨论】:

顺便说一句,你为什么要定位net40?您的类库将与针对完整 .NET Framework 运行的 .NET Core 不兼容,因为受支持的最低版本是 .NET 4.5.1。 github.com/dotnet/corefx/blob/master/Documentation/architecture/… 您至少需要多目标 net451net40 才能同时支持 4.0 和 (ASP).NET Core 对抗完整的 .NET Framework/Mono @Tseng 返回您链接的文档。 dotnet5.1 将负责 .NET 4.5、Windows 8 和大多数其他平台。 net40 将负责 .NET 4.0。 @JamesKo 由于大多数同步方法已被删除以支持异步替代方案(在套接字等中),因此针对 .NET 4 将是棘手的。 .NET 4 也即将结束,.NET 4.5.2 是新的基线。 @LexLi 是的,但对于不需要异步支持的简单库 (like this),针对 .NET 4 并不是什么大问题。 【参考方案1】:

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

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

【讨论】:

非常感谢!我认为这是我的主要问题,我不知道有可用的导航栏,所以当 VS 说我可以使用“导航栏切换上下文”时,我感到很困惑。 请注意,这只会更改视图和智能感知。要选择要运行的目标,请检查“开始调试”按钮的下拉列表。 (VS2017/2019)【参考方案2】:

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

截至今天,在 VS 2015 Community Ed, Version 14.0.25424.00 Update 3, global.json sdk 1.0.0-preview2-003121 上,导航栏仅在启动项目时显示多个目标是一个多目标“可执行”(例如控制台应用程序)。

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

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

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

【讨论】:

以上是关于如何在 Visual Studio 中切换 .NET Core 项目的目标框架的主要内容,如果未能解决你的问题,请参考以下文章

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

visual studio 2015怎样切换团队tfs账号

如何在 Visual Studio 2012 设计视图中的页面编辑模式和模板编辑模式之间切换?

如何在 Visual Studio 2019 中为 C# WPF 切换 XAML 中的行注释

当我保存然后切换文件时,Visual Studio 冻结

在 Visual Assist 或 Vanilla Visual Studio 中切换枚举的自动完成功能