TL;DR 版本

我正在构建一个针对 netstandard1.6 中的框架 dnxcore50 + project.json 的 .NET Core lib。我的二进制文件内置于名称匹配的文件夹中。 MSDN's Nuget naming conventiondnxcore50 是一个“已弃用”的框架 - 所以我应该将我的文件夹重命名为 netcore50 还是应该完全针对另一个框架?

我正在使用 VS 2015 社区和 DotNetCore.1.0.1 SDK。

长版

我维护一个名为 FluentFTP 的 FTP 库。我已经成功地使用 VS 2015 社区为 .NET 核心编译了一个版本。我的 project.json 看起来像这样:

{
  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "System.IO": "4.3.0.0",
    "System.Net.NameResolution": "4.3.0.0",
    "System.Net.Sockets": "4.3.0.0",
    "System.Net.Security": "4.3.0.0"
  },
  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    },
    "dnxcore50": {
    }
  }
}

我复制了另一个项目的 frameworks 部分,因为我不知道要使用什么格式。如您所见,我的目标是 .NET Core 5.0(显然)和 .NET Standard 1.6。我可以成功构建,所以我假设我已经构建了 .NET Standard 1.6 和 .NET Core 5.0 版本(对吗?)。当我构建时,我得到一个目录结构,如:
  • dnxcore50
  • netstandard1.6
  • net20
  • net40

  • 为了将多框架库发布到 nuget,MSDN 说你需要遵循某个 naming convention

    遗憾的是,dnxcore50naming convention 文章中被标记为“已弃用的框架”。这是否意味着:
  • 我正在为错误/过时的框架类型构建?
  • 我只需要将文件夹 dnxcore50 重命名为 netcore50 并发布它?
  • 最佳答案

    恐怕这只是我的意见(实际上是一个哲学问题),尽管我觉得它可以被视为对问题的相关答案:

    一般来说,你应该要求你实际使用的东西,而不是更多。这意味着最旧版本的框架和您使用其功能的语言。提供与较新版本完全兼容(理想情况下,在这种情况下,您也应该定期在所有较新框架版本上测试您的代码)。如果不是,但您仍然想支持它(因为您和/或其他属于您的目标受众的人可能仍在旧代码支持中使用它),您应该考虑为不同的平台构建单独的版本,有时这甚至可能意味着维护代码某些部分的并行版本。

    我的意思不是说你应该故意限制自己使用的功能只是为了支持旧的框架和/或语言(这是一个单独的、主观的和上下文相关的问题)。我的意思是这样的情况,比如当一个人在 Windows XP 机器上用 C# 3.0 编码整个项目,然后他的公司给他买了带有 Windows 10 和 Visual Studio 2017 的新的 Shiny 笔记本电脑,他开始单独针对 .NET Framework 4.6.2仅仅因为他可以,尽管他甚至不知道此框架中添加的任何新功能。

    我认为上述理念的合理异常(exception)是框架的预发布(alpha、beta、ctp、rc 等)版本 - 正是您的情况,据我所知 。一旦发布发布,开发人员最好尽快切换到它(但不要早于 ©)。

    然而,只要理性和灵活性与试图达到实际(或更高)程度的逻辑形式主义(为了更有效的决策)结合在一起,就会出现异常中的异常,在这种情况下,它们是:

  • 在放弃对仍然广泛使用的任何内容的支持之前,请三思。在现实世界中,当旧版本/预发布版本比新版本/发布版本被更广泛地采用时,会发生这种情况,并且版本之间可能存在破坏性更改,客观上阻碍了升级过程。 这也可能是你的情况 ,我真的不知道这种情况下的变化有多严重(升级现有代码需要多少工作),有多少人像现在一样使用旧的框架版本,您在库新版本中引入的修改有多重要(例如,如果它包含严重的错误修复或实际上非常有用的新功能和/或使迁移到新框架更容易)。
  • 如果这不需要花费大量的时间、精力、自由(例如使用您想要的新框架/语言功能)和其他资源,那么只要至少有些人选择保留,即使是过时的东西也可以继续支持使用它。如果您觉得自己开始无法享受支持,可以向其余用户发送支持终止通知信和/或将其发布在您的博客、推特等中。
  • 10-08 04:57