为Visual Studio解决方案的命名约定和项目
我们想组织我们的大项目是这样的:为Visual Studio解决方案的命名约定和项目
\trunk [CompanyName] [Product1] [Project1] CompanyName.Product1.Project1.csproj [Project2] CompanyName.Product1.Project2.csproj CompanyName.Product1.sln [Product2]
我们试图按照微软的建议,即命名空间名称遵循文件夹结构,但没有作出任何缺点这样呢? 您应用的解决方案和项目的命名约定是什么?
如果你问我,这看起来不错。特别是以全名命名你的项目,包括全名空间部分。当有许多项目时,我发现这很有帮助,特别是如果碰巧有不同产品的类似项目。
如何以及是否拆分产品和项目(其中我承担项目更像是不是一个解决方案项目的应用)是非常下降到您的组织的规模,这是化妆和你的喜好。
看起来像从学校的书。这通常是我的解决方案如何建立起来的,而且我发现它多年来运行良好。
对我很好。
这是一个一点要注意,在默认情况下,在Visual Studio项目的默认命名空间就是项目名称。当然,这表明命名你的项目像你的名字空间是“Visual Studio的方式”。
解决方案最自然地以产品/项目命名。像你指出的那样。
对于文件名 - 我喜欢我的项目文件名,因为它使得它更容易知道什么生产什么匹配输出程序集名称。做一个目录列表要比在一棵树中搜索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