【问题标题】:Choosing between full .NET framework and .NET Core as ASP.NET Core target?在完整的 .NET 框架和 .NET Core 作为 ASP.NET Core 目标之间进行选择?
【发布时间】:2017-08-31 19:30:18
【问题描述】:

我正在扩展一个使用 .NET 4.5 的系统。我需要:

  1. 能够引用我的新 .NET Core 库的其他项目。
  2. 我的 .NET Core 项目能够引用我们的 .NET 4 库。

除了目标是哪一个的问题外,我还注意到 VS 2017 在创建新项目时甚至没有让我选择目标 .NET Core。

【问题讨论】:

    标签: asp.net .net visual-studio asp.net-core visual-studio-2017


    【解决方案1】:

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

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

    如果您的完整框架类以 .net 框架 4.5 为目标,那么为了也能够在 .net 核心 1.0 中使用它们,您需要使您的库使用 .net 标准 1.1。

    如果您已经运行了一个完整的框架 Web 应用程序,并且您想以 .net 标准构建库。你真正应该这样做的唯一原因是如果..

    • 您打算在不久的将来将您的 WebApp 转换为 .net 核心。
    • 您正在构建一个可用于其他 .net 核心项目的类库。

    如果您在可预见的情况下坚持为您的网络应用程序使用完整的框架,那么实际上没有任何必要在 .net 标准中构建东西(特别是如果您必须为标准的非常精简的版本拍摄,例如1.1)。

    至于为什么在创建 .net 核心项目时不能“定位”框架。如果您愿意,这是一个已知的“错误”。或者更多的是,当您创建 .net 核心项目时,下拉菜单是多余的。它只会在您的机器上使用最新版本的 .net 核心 SDK(默认情况下)。

    延伸阅读:

    【讨论】:

    • 你说得对,我在创建 .NET Core 项目时为下拉菜单选择什么并不重要。
    • “你需要让你的库使用 .net 标准 1.1”是什么意思?我如何构建 .NET 标准,而不是 .NET 4.6 或 .NET Core 1.0?
    • 好的。所以我手动更改了 csproj 文件,现在 VS 显示了 .NET Standard 版本的列表,我可以从其他人那里引用我的 Core 项目。我还有一个问题:当我针对最新的 .NET Standard 而不是最新的 .NET Core 时,我错过了什么?为什么不是每个人都以 .NET Standard 的某个版本为目标?例如,无法在 Core 应用程序中引用 EF6
    • 阅读此dotnetcoretutorials.com/2017/01/13/…。 .net 标准就像所有 .net 平台之间的协议,它们将能够读取它(Xamarin、.net 核心、.net 框架等)。例如,XML 文档没有理由跨平台工作不同,因此它们使它们相同,这样您就可以构建可以在多个平台上使用的库,而不仅仅是一个平台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多