TL;DR 版本
我正在构建一个针对 netstandard1.6
中的框架 dnxcore50
+ project.json
的 .NET Core lib。我的二进制文件内置于名称匹配的文件夹中。 MSDN's Nuget naming convention 说 dnxcore50
是一个“已弃用”的框架 - 所以我应该将我的文件夹重命名为 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 版本(对吗?)。当我构建时,我得到一个目录结构,如:为了将多框架库发布到 nuget,MSDN 说你需要遵循某个 naming convention 。
遗憾的是,
dnxcore50
在 naming convention 文章中被标记为“已弃用的框架”。这是否意味着:dnxcore50
重命名为 netcore50
并发布它? 最佳答案
恐怕这只是我的意见(实际上是一个哲学问题),尽管我觉得它可以被视为对问题的相关答案:
一般来说,你应该要求你实际使用的东西,而不是更多。这意味着最旧版本的框架和您使用其功能的语言。提供与较新版本完全兼容(理想情况下,在这种情况下,您也应该定期在所有较新框架版本上测试您的代码)。如果不是,但您仍然想支持它(因为您和/或其他属于您的目标受众的人可能仍在旧代码支持中使用它),您应该考虑为不同的平台构建单独的版本,有时这甚至可能意味着维护代码某些部分的并行版本。
我的意思不是说你应该故意限制自己使用的功能只是为了支持旧的框架和/或语言(这是一个单独的、主观的和上下文相关的问题)。我的意思是这样的情况,比如当一个人在 Windows XP 机器上用 C# 3.0 编码整个项目,然后他的公司给他买了带有 Windows 10 和 Visual Studio 2017 的新的 Shiny 笔记本电脑,他开始单独针对 .NET Framework 4.6.2仅仅因为他可以,尽管他甚至不知道此框架中添加的任何新功能。
我认为上述理念的合理异常(exception)是框架的预发布(alpha、beta、ctp、rc 等)版本 - 正是您的情况,据我所知 。一旦发布发布,开发人员最好尽快切换到它(但不要早于 ©)。
然而,只要理性和灵活性与试图达到实际(或更高)程度的逻辑形式主义(为了更有效的决策)结合在一起,就会出现异常中的异常,在这种情况下,它们是: