C# 如何在具有大量库的CVS中管理软件版本

C# 如何在具有大量库的CVS中管理软件版本,c#,.net,visual-studio,svn,C#,.net,Visual Studio,Svn,我们正在开发一个大型软件项目,其中包括大量的项目、组件和库。我们的管理层已决定,对于每次部署,必须保存整个系统的快照,以便在出现问题时,我们可以轻松获得整个系统的确切版本。通常的解决方案是在每次部署之后分支项目。顺便说一下,我们使用的是VS2008,C和SVN。但是,对于大量的子项目和库来说,这是不实际的,因为它们也有自己的版本并被修改 这个问题的一个答案是向后兼容,并且总是在主干版本上修复问题,但是在我们的情况下,不可能测试系统的更改(软件是ITS系统的一部分,一旦部署了系统,我们就不能再做任

我们正在开发一个大型软件项目,其中包括大量的项目、组件和库。我们的管理层已决定,对于每次部署,必须保存整个系统的快照,以便在出现问题时,我们可以轻松获得整个系统的确切版本。通常的解决方案是在每次部署之后分支项目。顺便说一下,我们使用的是
VS2008
C
SVN
。但是,对于大量的子项目和库来说,这是不实际的,因为它们也有自己的版本并被修改

这个问题的一个答案是向后兼容,并且总是在主干版本上修复问题,但是在我们的情况下,不可能测试系统的更改(软件是ITS系统的一部分,一旦部署了系统,我们就不能再做任何集成测试)

更糟糕的是,我们的部门是模块化的,所以每次部署不同的组件组合时,都会进行本地化


你是如何解决这些问题的?有什么工具可以帮上忙吗?

我曾经做过这样的项目

我们曾经对每个候选版本进行分支,并将应用于RC分支的错误修复报告到主干上。这并不是很方便,但在我们决定将projet拆分为许多由类似maven的系统管理的小而可爱的项目之前,我们找不到合适的替代方案


也许使用一些与强大的测试例程相关联的持续集成管理工具也会有所帮助。

我曾经从事过这样的项目

我们曾经对每个候选版本进行分支,并将应用于RC分支的错误修复报告到主干上。这并不是很方便,但在我们决定将projet拆分为许多由类似maven的系统管理的小而可爱的项目之前,我们找不到合适的替代方案


也许使用一些与强大的测试例程相关联的持续集成管理工具也会有所帮助。

您可以使用一个依赖关系管理系统,如-这基本上保留了您正在使用的每个dll的每个版本的记录


作为一个(非常)简要的概述,当您进行构建(例如使用nant)时,您可以挂接ivy来解析所有依赖项,从而获得所需的特定版本的DLL。由于常春藤配置将在svn中,如果您得到的是较旧版本的代码,那么您也会得到一个较旧版本的常春藤配置。

您可以使用一个依赖关系管理系统,如-这基本上保留了您正在使用的每个dll的每个版本的记录


作为一个(非常)简要的概述,当您进行构建(例如使用nant)时,您可以挂接ivy来解析所有依赖项,从而获得所需的特定版本的DLL。由于常春藤配置将在svn中,如果您得到的是较旧版本的代码,那么您也会得到较旧版本的常春藤配置。

这可以与svn一起使用吗?Ivy可以从SVN获取Dependendacy的特定版本吗?是的,但通常Ivy不会从SVN检索内容,您将拥有一个Ivy存储库,就像存储DLL的共享位置一样。例如,log4net可能是一个依赖项(不在svn中),但位于X:\Ivy\log4net\v1.2.10\。。。等。版本号存储在项目的常春藤配置中,因此当您获得较旧版本的代码时,也会获得较旧版本的常春藤配置。当ivy解析依赖项时,它可以得到所需的DLL的确切版本。这可以与SVN一起使用吗?Ivy可以从SVN获取Dependendacy的特定版本吗?是的,但通常Ivy不会从SVN检索内容,您将拥有一个Ivy存储库,就像存储DLL的共享位置一样。例如,log4net可能是一个依赖项(不在svn中),但位于X:\Ivy\log4net\v1.2.10\。。。等。版本号存储在项目的常春藤配置中,因此当您获得较旧版本的代码时,也会获得较旧版本的常春藤配置。当ivy解析依赖项时,它可以获得所需的DLL的确切版本。