Visual studio Visual Studio解决方案和项目的命名约定

Visual studio Visual Studio解决方案和项目的命名约定,visual-studio,naming-conventions,Visual Studio,Naming Conventions,我们正考虑以这种方式组织我们的大型项目: \trunk [CompanyName] [Product1] [Project1] CompanyName.Product1.Project1.csproj [Project2] CompanyName.Product1.Project2.csproj CompanyName.Product1.sln [Product2] \树干 [公司名称]

我们正考虑以这种方式组织我们的大型项目:

\trunk [CompanyName] [Product1] [Project1] CompanyName.Product1.Project1.csproj [Project2] CompanyName.Product1.Project2.csproj CompanyName.Product1.sln [Product2] \树干 [公司名称] [产品一] [项目1] CompanyName.Product1.Project1.csproj [项目2] CompanyName.Product1.Project2.csproj CompanyName.Product1.sln [产品2] 我们试图遵循Microsoft的建议,即命名空间名称遵循文件夹结构,但这样做有什么缺点吗?
您应用的解决方案和项目的命名约定是什么

如果你问我的话,那看起来不错。特别是用项目的全名命名,包括全名空间部分。我发现,当有许多项目时,这很有用,尤其是在不同产品中碰巧有类似的项目时


如何以及是否在产品和项目(我认为项目更像是一个应用程序而不是解决方案项目)上进行划分,在很大程度上取决于您的组织规模、构成和您的偏好。

看起来像是从学校的书本上取下来的。我的解决方案通常就是这样设置的,多年来我发现它运行得很好。

对我来说很不错

需要注意的是,默认情况下,VisualStudio项目中的默认名称空间只是项目名称。当然,这表明将项目命名为名称空间是“VisualStudio方式”


解决方案通常以产品/项目命名。正如您所指出的。

关于文件名,我更希望我的项目文件名与输出程序集名称匹配,因为这样可以更容易地知道是什么产生了什么。执行目录列表比在树中搜索csproj文件以查找生成我所关心的程序集的文件要快得多

我对解决方案文件不感兴趣,因为它们不会影响我们的构建环境,所以我最终创建了自己的解决方案文件,以获得我想要的确切范围(以及特定的每个解决方案项,如测试元数据)

关于文件夹结构,我不太担心项目文件的文件夹是否与名称空间匹配。我希望我的代码以对项目最有意义的方式放在磁盘上。有时这意味着测试代码和产品代码位于同级目录中,有时这意味着它们之间的距离要远得多。有时,有一个名称空间是由多个团队贡献的(不提倡这种设计,只是一种现实),但这些团队出于任何原因都希望生活在自己的文件夹中

不要忘记版本控制分支策略在整个项目设计中的重要性。公司和产品边界可能是分支机构,因此不一定需要表示为磁盘上的目录


但不要让这成为分析瘫痪的根源。做出合理的选择。使用版本控制。如果您错了,您随时可以稍后更改。

我使用的另一种方法是将所有解决方案文件放在同一目录中

\trunk [CompanyName] CompanyName.Product1.sln CompanyName.Product2.sln [Product1] [Project1] CompanyName.Product1.Project1.csproj [Project2] CompanyName.Product1.Project2.csproj [Product2] [Project3] CompanyName.Product2.Project3.csproj \树干 [公司名称] CompanyName.Product1.sln CompanyName.Product2.sln [产品一] [项目1] CompanyName.Product1.Project1.csproj [项目2] CompanyName.Product1.Project2.csproj [产品2] [项目3] CompanyName.Product2.Project3.csproj
我认为这是更好的< /P>
\trunk
  [CompanyName]
    [Product1]
      CompanyName.Product1.sln
      [Main] --Optional
        CompanyName.Product1.csproj
      [Project1]
        CompanyName.Product1.Project1.csproj
      [Project2]
        CompanyName.Product1.Project2.csproj
    [Product2]
      CompanyName.Product2.sln
      [Main] --Optional
        CompanyName.Product2.csproj
      [Project1]
        CompanyName.Product2.Project3.csproj
      [Project2]
        CompanyName.Product2.Project2.csproj
      [Project3]
        CompanyName.Product2.Project2.csproj

为什么??因为当您从存储库中获取代码时,例如,您会得到“Product1”目录,它包含您需要工作的所有内容。[Main]目录包含默认的基本命名空间,通常是exe或主项目。它是可选的。

对于在该过程中产生的诸如CompanyName.PoductName.ProjectName.exe之类的笨拙程序集名称,该怎么办?我读过,但对我来说,这看起来像是肮脏的黑客行为,或者需要使用额外的工具(MSBuild),这看起来并不琐碎。理想情况下,您可以使用snappier产品或项目名称。显然,并非总是可能的。然后可以考虑缩写或昵称,例如MSFFT.A.WiDOWSServer,但是如果您查看NuGube,答案似乎仍然是真实的,并且通常遵循大多数项目。