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

时间:2010-06-23 13:09:25

标签: .net projects-and-solutions version-control svn

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

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

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

在能够适当地对程序集进行版本化的过程中,人们有什么建议来构建解决方案/项目?

2 个答案:

答案 0 :(得分:1)

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

我使用类似的设置,我们有多个Web应用程序,它们之间共享通用程序集。每天(或者如果你的构建时间足够快)建立有助于大大提高。我们使用NAnt和CruiseControl,但可用的选项与意见一样丰富。

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

答案 1 :(得分:0)

就个人而言,我喜欢有利于更容易依赖控制的解决方案。我更担心的是打破变化而不是关于在同一版本#上使用项目。

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

当然,这假设您遵循诫命“您不应该更改共享程序集,这样更改会破坏现有代码。”添加新功能就可以了。修改一个函数,使其在内部工作方式不同,但返回相同的结果即可。更改一个功能,使其适用于新软件,但打破现有软件是不行的。然后担心版本控制就成了一个问题。

当然,这可能是因为我从未在一个有理由担心该版本的商店工作,所以我期待被这个答案打败,但即使我是,我也是我肯定会从关于为什么这是一个错误答案的评论中学习,这就是我喜欢这个网站的原因。