【问题标题】:assembly naming conventions程序集命名约定
【发布时间】:2010-02-02 23:48:17
【问题描述】:

假设您有一个对公司中多个项目有用的命名空间,格式为“MyCompany.Core”,您是否有一个以完全相同的方式命名的程序集或只是“Core”。为什么或为什么不?

【问题讨论】:

    标签: c# naming-conventions shared-libraries


    【解决方案1】:

    使用标准 .NET 命名约定,程序集名称为 covered here。我将为您保存(短)阅读:

    请为您的程序集 DLL 选择名称 这表明大块 System.Data 等功能。 程序集和 DLL 名称不必 对应于命名空间名称,但它 遵循命名空间是合理的 命名程序集时的名称。

    考虑根据 以下模式:
    <Company>.<Component>.dll
    其中<Component> 包含一个或多个 点分隔子句。

    例如,Contoso.WebControls.dll。

    【讨论】:

    • 任何关于进行程序集名称重构(Resharper?)的技巧,至少在同一个 VS 解决方案中?
    • 项目 + 属性,应用程序选项卡,程序集名称。
    【解决方案2】:

    我认为最好(这里有意见!)在它包含的根命名空间之后命名程序集,在您的情况下为 MyCompany.Core.dll。您永远不知道该文件是否会在公司之外传播,并且通常更容易跟踪它。

    想象一下,如果 Microsoft 将 System.Core 命名为 Core.dll(System.Core),那么您有 Core.dll(MyCompany.Core)....想象一下它是如何快速变得毛茸茸的。

    【讨论】:

      【解决方案3】:

      我会将程序集命名为与根命名空间相同的名称。这样可以很容易地找出哪些代码在哪个程序集中,并防止与可能也使用模糊名称“Core.dll”的其他项目(来自其他公司)发生冲突。

      【讨论】:

        【解决方案4】:

        我更喜欢 MyCompany.ApplicationName.Core.DLL,如果有两个或多个来自 MyCompany 的应用程序,这消除了冲突的可能性。

        【讨论】:

          【解决方案5】:

          如果在企业环境中开发,此约定可能有用:

          命名空间遵循 [DomainEntityName].[AssemblyName].[Purpose].[RelatedPurpose] 格式,其中 DomainEntityName 是根业务功能名称,AssemblyName 是支持业务需求的功能名称。

          【讨论】:

            【解决方案6】:

            基于微软DLL naming conventions,我更喜欢以下模式:

            <Company>.<AppName>.<FeatureName>.<Layer>.dll
            

            例如:

            MyCompany.Sandwichery.Ordering.API

            MyCompany.Sandwichery.Ordering.Domain

            MyCompany.Sandwichery.Ordering.Infrastructure

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-10-14
              • 2015-06-29
              • 1970-01-01
              • 1970-01-01
              • 2020-01-12
              • 1970-01-01
              • 2011-03-07
              • 1970-01-01
              相关资源
              最近更新 更多