【问题标题】:.NET naming conventions for solution with .NET Standard, .NET Core and .NET Framwork Projects.NET Standard、.NET Core 和 .NET Framework 项目解决方案的 .NET 命名约定
【发布时间】:2017-06-04 10:25:40
【问题描述】:

我在网络上没有找到任何关于 .NET 解决方案可接受的命名约定的信息,该解决方案包含 .NET Standard、.NET Core 和 .NET Framework 项目。

在我的例子中,我们的 .NET Framwork 项目中有以下约定:

[CompanyName].[TechnologyName].[Feature]

现在我们要将其移植到 .NET Standard 和 .NET Core。并非该功能中的所有类都适用于所有类,因此我们有一个 .NET 标准项目,它被 .NET Core 项目引用。 .NET Core 项目随后被 .NET Framework 项目引用。我们现在应该如何命名我们的项目。

一种解决方案是在命名空间中包含 Standard 或 Core 的名称:

[CompanyName].Standard.[TechnologyName].[Feature]
[CompanyName].Core.[TechnologyName].[Feature]
[CompanyName].[TechnologyName].[Feature]

[CompanyName].[TechnologyName].[Feature].Standard
[CompanyName].[TechnologyName].[Feature].Core
[CompanyName].[TechnologyName].[Feature]

但我们想知道是否有一个全局命名约定。

【问题讨论】:

  • 我不太相信您需要技术名称作为项目命名的一部分。为什么底层框架的类型与您的项目命名相关?从你的角度来看,根据它为你做什么来命名你的东西。可能是在 .NET Core 上运行的项目对您来说是跨平台的,在这种情况下,名称可能类似于 [CompanyName].[Product].[Windows].[Feature][CompanyName].[Product].[Cross-Platform].[Feature] 等。
  • @nawfal:一个原因可能是为了区分针对不同底层框架的项目的多个变体。
  • @O.R.Mapper 我认为这将是一种极其罕见的情况,请考虑会导致多少代码重复。在任何情况下,当命名[CompanyName].[Product].[Framework].[Feature][CompanyName].[Product].[Feature].[Framework] 之类的东西时,它是有意义的,因为从您的产品的角度来看是这样。只需遵守其中一项约定即可。无论如何,OP的情况不同。
  • @nawfal:实际上,我认为这是一个非常常见的场景。不同的目标需要不同的依赖版本,因此每个目标框架一个项目文件通常是要走的路。没有代码重复,因为所有项目都包含相同的文件。
  • @O.R.Mapper 是有道理的。不过几乎没有遇到过情况。我认为随着时间的推移,这样的框架限制越来越多。反正我明白你的意思。

标签: .net .net-core naming .net-standard


【解决方案1】:

我认为最初的指导方针仍然有效。取样Microsoft.AspNetCore.Mvc。那是公司,产品以及以下任何内容。 .NET Standard 或 .NET Core 版本应该以相同的名称发布,只是为其目标框架名字对象打包。以Newtonsoft.Json 为例。如果 API 表面/功能集发生变化,请进行重大版本更改或更改产品名称。

不要对 Microsoft 产品名称中的核心添加感到困惑。他们选择制作 ASP.NET Core、.NET Core 和 EF Core 新产品,以避免对更高产品版本的误导性假设:ASP.NET 5。

聆听 ASP.NET 社区站会,我可以告诉你,这个话题出现了,他们得出的结论是,并非所有东西都应该添加核心命名部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多