visual-studio - 寻找有关 Microsoft Visual Studio 解决方案和项目命名约定的建议

标签 visual-studio naming-conventions projects-and-solutions

似乎没有任何经过验证的、真正的最佳实践集来指导您如何设置您的解决方案、项目和它们输出的程序集。微软好像有tried回到 VS.net 时代,但他们已经停用了这个内容。对于我读到的每一种方法,我都读过另一种声称相反更好的方法,或者一篇只关注“如果微软会……”但实际上没有提供任何解决方案的帖子。

似乎有很多方法可以做到这一点,而且似乎都适用于不同群体在他们的情况下,因此我想我会问你使用什么约定以及为什么它们在你的情况下对你有用。

我希望这将为不同的情况、小型开发组和项目以及位于不同位置的大型开发组和项目提供几个很好的约定。

你用什么约定...

  • 命名您的解决方案,为什么?
  • 命名你的项目,为什么?
  • 命名你的程序集,为什么?
  • 知道何时创建新项目或添加到现有项目,为什么?
  • 知道何时将解决方案拆分为更小的解决方案,为什么?
  • 知道何时将一个项目分解为多个项目,为什么?

  • 需要明确的是,在这些答案中,WHY 与 HOW 一样重要。关于如何在这里和其他地方发布了很多答案,很少有人说为什么他们使用一种约定而不是另一种约定。

    最佳答案

    这是一个非常广泛的问题,但很好。我将从一个用于 ASP.Net Web 项目的简单结构开始(MVC 看起来完全不同)。

    解决方案命名对我来说没什么大不了的。我倾向于为特定目的创建解决方案,并将现有项目添加到解决方案中。如果您的解决方案超过 15 个项目(只是一个粗略的数字),请考虑添加其中一些项目作为引用。大多数人一次不需要处理超过 15 个项目。

    项目命名对我来说很重要。

    // class library that supports the site itself and abstracts
    // more complicated UI logic into a separate place
    Company.ProductName.Web;
    
    // website
    Company.ProductName.Web.UI;
    
    // main business object library for product
    //
    // of course, you can have as many of these as needed.
    Company.ProductName;
    

    我尝试在我的项目中使用足够的文件夹,以便无需滚动解决方案资源管理器即可轻松查看文件夹中的所有文件。

    我的典型 Web 项目看起来像这样。请注意表示命名空间/可编译资源与那些不是的不同的大小写。
  • 客户端(css、javascript)
  • config(私有(private)、自定义配置文件,如果有)
  • 内容(母版页、ASPX 和 ASCX,分为逻辑文件夹)
  • 处理程序(ASHX 等)
  • 图片
  • MSBuild(构建脚本)
  • WebServices(这些应该只是与相关站点直接相关的小型服务。否则,将它们分解为一个单独的项目)。

  • 我已经开始越来越多地使用分部类来创建可以做很多事情而不会使代码困惑的综合类。例如,我最近创建了一个 Web 服务,其唯一目的是将 JSON 返回给客户端,但其逻辑分布在几乎十几个部分类中以更好地组织它。

    希望这能让你开始。

    关于visual-studio - 寻找有关 Microsoft Visual Studio 解决方案和项目命名约定的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3874859/

    相关文章:

    visual-studio - Visual Studio 解决方案是否在 Visual Studio Mac 中打开?

    c++ - RC 文件更改会默默失败; "Cannot open the resource file for edit"

    java - 是否应该为 Java 中的线程命名以便于调试?

    visual-studio - 广泛安装 Nuget 包解决方案

    c# - 在 Visual Studio 中更改 SQL Server 数据库最大大小以便在 Azure 中上传

    c# - 关于连接字符串覆盖的运行设置文件的建议

    objective-c - 密集使用 GCD 的命名约定

    c# 具有相同数据但类型不同的变量的命名约定

    visual-studio-2012 - VS2012:“属性页”未打开:对象引用未设置为对象的实例

    visual-studio - 在 Visual Studio IDE 中显示解决方案/文件路径