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

23

假如你有一个类似这样的 .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 部分将被变灰- 要么是 DoSomething,要么是 DoSomethingElse。以下是它在我的笔记本电脑上的显示方式:

输入图像描述

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

感谢您的任何帮助!


顺便问一下,为什么你的目标是 net40?你的类库将无法与运行在完整 .NET Framework 上的 .NET Core 兼容,因为最低支持版本是 .NET 4.5.1。https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md 你需要至少多目标 net451net40 来同时支持 4.0 和 (ASP).NET Core 对于 Full .NET Framework/Mono。 - Tseng
@Tseng 请参考您链接的文档。dotnet5.1 将处理 .NET 4.5、Windows 8 和大多数其他平台。net40 将处理 .NET 4.0。 - James Ko
@JamesKo 由于大多数同步方法都被异步替代(在套接字等方面),因此针对.NET 4会比较棘手。而且.NET 4已经到了生命周期末期,.NET 4.5.2是新的基线。 - Lex Li
1
@LexLi 是的,但对于不需要异步支持的简单库(例如此类),针对 .NET 4 并不是太大的问题。 - James Ko
谢谢你的提问!直到现在我还没找到答案。真的帮了很多忙。 - Jossean Yamil
3个回答

34

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

如果导航栏被隐藏了,你可以进入“工具” > “选项” > “文本编辑器” > “C#”,勾选导航栏复选框来启用它。


非常感谢!我认为那是我的主要问题,我不知道有一个可用的导航栏,因此当VS说我可以使用“nav bar to switch context”时我很困惑。 - James Ko
请注意,这只会更改视图和智能感知。要选择要运行的目标,请检查“开始调试”按钮的下拉列表。(VS2017/2019) - joe

18

已经提供的答案看起来大部分是正确的。我想强调一下目前存在的一些问题。

截至今天,在VS 2015社区版本,版本14.0.25424.00更新3,global.jsonsdk 1.0.0-preview2-003121中,只有启动项目为多目标"可执行"项目(例如控制台应用程序)时,导航栏才会显示多个目标。

multi-target switcher visible

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

multi-target switcher not visible

此外,当可以使用开关器时,似乎编辑器没有正确突出显示“标准”条件定义由构建系统提供的

enter image description here

为了正确突出显示条件定义块,必须切换项目开关器,如上图所示的绿色标记。对于编辑器中打开的任何文件,似乎将同一项目中的不同目标视为不同的项目。这可以独立地更改。


0
我来到这个问题是因为我正在开发 MAUI 项目。要在目标之间进行选择,请单击“调试”按钮右侧的三角形图标,然后选择“框架”,再选择您想要使用的环境。

enter image description here

在您的选项卡栏下面还有另一个选择:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接