作为ASP.NET Core的目标,选择完整的.NET框架或.NET Core?

3
我正在扩展一个使用.NET 4.5的系统,需要实现以下目标:
  1. 其他项目可以引用我的新的.NET Core库。
  2. 我的.NET Core项目可以引用我们的.NET 4库。
除了选择使用哪个版本外,我还注意到在创建新项目时,VS 2017甚至没有给我提供针对.NET Core的选项。enter image description here
1个回答

5

.net Core的库实际上是.net标准库。因此,当您创建一个.net标准库时,它可以被完整框架类引用,但前提是您使用的.net标准版本是正确的。听起来有点混乱?

简单来说,请看这里的图表https://github.com/dotnet/standard/blob/master/docs/versions.md

enter image description here

如果你的完整框架类针对 .net framework 4.5,那么为了能够在 .net core 1.0 中使用它们,你需要使你的库使用 .net standard 1.1。
如果您已经运行了一个完整的框架 Web 应用程序,并且希望在 .net standard 中构建库。你真正需要这样做的唯一原因是...
- 您打算在不久的将来将您的 WebApp 转换为 .net core。 - 您正在构建一个可能在其他 .net core 项目中使用的类库。
如果您在可预见的将来坚持使用完整的框架作为您的 Web 应用程序,那么实际上没有必要在 .net standard 中构建东西(特别是如果您必须追求非常简化的标准版本,如 1.1)。
至于为什么在创建 .net core 项目时无法“定位”框架。这是已知的“错误”,如果你愿意这么说的话。或者更准确地说,当您创建 .net core 项目时,下拉菜单是多余的。它将简单地使用您机器上最新版本的 .net core SDK(默认情况下)。
进一步阅读:

你说得对,创建.NET Core项目时选择下拉菜单中的选项并不重要。 - lfk
“你需要使你的库使用 .NET Standard 1.1”是什么意思?与 .NET 4.6 或 .NET Core 1.0 相比,我如何在 .NET Standard 中构建项目? - lfk
https://learn.microsoft.com/en-us/dotnet/articles/core/tutorials/libraries - MindingData
好的。所以我手动更改了csproj文件,现在VS显示了.NET Standard版本列表,我可以从其他项目引用我的Core项目。我仍然有一个问题:当我将目标设置为最新的.NET Standard而不是最新的.NET Core时,我错过了什么?为什么不是每个人都将目标设置为某个版本的.NET Standard呢?例如,EF6无法在Core应用程序中引用。 - lfk
我理解 .NET Standard 只是一个标准,而不是实际存在的东西。但是难道没有一种情况是优先选择针对 .NET Core x.x 而不是针对 x.x 支持的最新 .NET Standard 的吗? - lfk
显示剩余3条评论

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