代码之家  ›  专栏  ›  技术社区  ›  DCNYAM

Visual Studio中的版本控制和解决方案结构

  •  1
  • DCNYAM  · 技术社区  · 15 年前

    我的系统有三个应用程序(一个Windows应用程序和两个Web应用程序)。这些应用程序共同共享两个程序集。因此,我总共有5个项目。在过去,我为每个项目都有一个单独的解决方案。这允许我在源代码管理中分别对每个程序集进行版本控制。但是,这有很大的开销,因为我必须分别打开每个解决方案,以查看我对某个公共程序集所做的更改是否破坏了任何应用程序。

    我曾经考虑过要移动到一个结构,其中一个解决方案包含所有项目。这允许我立即看到我所做的任何更改的影响,但它会导致版本控制问题。如果我只更改公共程序集,或者只更改其中一个应用程序,那么每个项目/程序集很快就会处于不同的版本级别。在源代码管理中,由于整个解决方案都在一起,所以在我的项目存储库中没有可使用的单一版本号。

    我读过的每一个讨论似乎都解决了一个或另一个问题。可以使用多个解决方案实现更简单的版本控制,也可以使用单个解决方案实现更简单的依赖性控制。

    当人们能够适当地对程序集进行版本化时,对于构建解决方案/项目,他们有什么建议?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Josh Sterling    15 年前

    我会坚持使用多种解决方案。你的Windows应用程序真的不需要(也不应该)知道你的Web应用程序中发生了什么。

    我使用一个类似的设置,其中我们有多个Web应用程序,它们之间共享公共程序集。每天(或者如果你的构建时间足够快的话持续)构建会有很大帮助。我们使用Nant和CruiseControl,但可用的选项和意见一样丰富。

    如果使用连续构建设置,则可以在共享库构建并通过单元测试后触发其他解决方案构建(Web应用程序等)。您仍然需要打开另一个解决方案,但是构建服务器可以告诉您是否需要。

        2
  •  0
  •   David    15 年前

    就我个人而言,我喜欢更容易控制依赖关系的解决方案。我更担心的是破坏变化,而不是在同一版本中拥有物品。

    我(个人)唯一关心版本的时间是我必须进行故障排除或修复错误。如果我必须修复bug,那么我最终将重新编译代码,并将得到最新的版本。老实说,如果有人在运行使用我开发的某个共享类库的旧版本的代码,那又是什么呢?如果它能用,如果是旧版本我该怎么办?可能是因为其他一些稍后编写的应用程序需要额外的功能。

    当然,这假定您遵循“不应更改共享程序集”的戒律,这样更改会破坏现有代码。“添加一个新函数是可以的。修改一个函数,使它在内部的工作方式不同,但返回相同的结果是可以的。更改一个函数,使其适用于新软件,但破坏现有软件是不好的。那么,对版本控制的担忧就变成了一个没有问题的问题。

    当然,这可能是因为我从来没有在一家商店工作过,那里有理由担心版本,所以我希望这个答案会受到惩罚,但即使是这样,我相信我会从评论中了解到为什么这个答案不好,这也是我喜欢这个网站的原因。