.net Core 多目标和 .net Standard 有啥区别?

Posted

技术标签:

【中文标题】.net Core 多目标和 .net Standard 有啥区别?【英文标题】:What is the difference between .net Core multi target and .net Standard?.net Core 多目标和 .net Standard 有什么区别? 【发布时间】:2017-05-21 08:50:05 【问题描述】:

.Net Standard 用于在不同类型的项目中使用同一个库,例如 WPF、xamarin、UWP...等。

.Net Core 默认不能,但是在.net Core 编辑csproj 文件时可以配置多目标,所以我可以设置多个目标。在我完成的一项测试中,如果我设置为目标 net47,我可以在我的 WPF 项目中使用这个 .net Core 库。

所以,如果我可以对 .net Core 多目标和 .net 标准做同样的事情。有什么区别,什么时候用一个,什么时候用另一个?

谢谢。

【问题讨论】:

你能停下来一次又一次地发布同样的问题吗?有了这个,我们在 4. 这不是同一个问题,第一个问题是通用的,我问的是 .net Core 的一个特定功能,即多目标。在第一个问题中没有人提到多目标,所以如果你能告诉我如何在同一个问题中提出这个问题,我会感谢你。 这不是“.NET Core 中的多目标”——它会在一个 csproj 文件中有多个目标,其中一个可能是 .NET Core,而其他目标是 .NET Core。 NET 标准等 如果你能说出你想要达到的目标会更清楚。 【参考方案1】:

您需要在 csproj 文件中定位多个框架。在 Visual Studio 2017 的最初发布中,没有用于此的 UI,但您可以手动完成。我相信在更新中会有 UI 支持。

只需将<TargetFramework> 元素更改为<TargetFrameworks> 并使用分号分隔的目标列表即可。例如,在野田时间我有:

<TargetFrameworks>net45;netstandard1.3</TargetFrameworks>

你可以:

<TargetFrameworks>netcoreapp1.0;netstandard1.3</TargetFrameworks>

但是,如果您想(有条件地)利用某些仅在 .NET Core 中可用而在 .NET Standard 中不可用的功能,您只会想要这样做。

【讨论】:

符合.net标准的也可以像.net Core一样在linux和mac上使用? @ÁlvaroGarcía 是的,正如我在另一个问题中解释的那样 - 因为 .NET Core 实现了 .NET Standard。

以上是关于.net Core 多目标和 .net Standard 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 csproj 多目标 .NET Core 类库?

多目标 .NET Core 控制台的 Azure DevOps (VSTS) 托管 macOS 代理失败

Net Core

.NET Core 之 Nancy 基本使用

当前的 .Net SDK 不支持针对 .Net Core 2.2 目标 .Net Core 2.1 或更低版本 [重复]

.Net Core WebApi 目标框架“net5.0”在构建应用程序时解释为“net50”