Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 跨项目管理和版本控制公共库_Visual Studio 2008_Tfs_Version Control - Fatal编程技术网

Visual studio 2008 跨项目管理和版本控制公共库

Visual studio 2008 跨项目管理和版本控制公共库,visual-studio-2008,tfs,version-control,Visual Studio 2008,Tfs,Version Control,我们公司有很多解决方案。它们中的大多数都使用一组公共库来实现不同的功能(日志记录、缓存、数据访问) 我的问题是,你如何确保他们得到妥善管理 直接从windows app1引用跟踪项目 优点:你不必合并和分支 缺点:当您重新编译代码时,可能会在系统中引入问题。从现在起,它是用最新版本编译的 对每个项目进行分支跟踪,并每隔一段时间将它们合并一次 利与弊与fist选项完全相反 我可能完全不了解这些想法,但我相信一定有更好的方法。我们在这里所做的只是不断更新和改进我们的公共库,然后当我们对它感到满意并且

我们公司有很多解决方案。它们中的大多数都使用一组公共库来实现不同的功能(日志记录、缓存、数据访问)

我的问题是,你如何确保他们得到妥善管理

直接从windows app1引用跟踪项目

优点:你不必合并和分支

缺点:当您重新编译代码时,可能会在系统中引入问题。从现在起,它是用最新版本编译的

对每个项目进行分支跟踪,并每隔一段时间将它们合并一次 利与弊与fist选项完全相反


我可能完全不了解这些想法,但我相信一定有更好的方法。

我们在这里所做的只是不断更新和改进我们的公共库,然后当我们对它感到满意并且需要在应用程序中使用它时,我们会根据更改的数量升级主要或次要版本,为它构建安装程序,并在源代码管理中标记它

我们只需在需要更改应用程序时将其升级到最新版本即可处理旧应用程序

我为公共库构建了一个SDK和可再发行的安装程序。SDK面向所有开发人员,包括源代码、模板、文档,将DLL放在他们的驱动器上,还将DLL放在他们的GAC中。可再发行文件只是将DLL放在GAC中。我们在服务器上安装了可再发行版本

我们很快就会采用一种不产生可再发行债券的方法。我们将只生成一个SDK,其中SDK将是公共库的合并模块。当开发人员使用该库并准备将其应用程序转移到生产环境中时,他们将为其构建一个安装程序,并在该安装程序中包含合并模块,这样应用程序的部署始终具有公共库的正确版本,我们不必担心先在服务器上安装它


我对您的环境一无所知,所以我不知道这些技术如何适用于您,但它目前对我们来说非常有效。

我们在这里所做的只是不断更新和改进我们的公共库,然后当我们对它感到满意并需要在应用程序中使用它时,我们根据更改的数量更新主要版本或次要版本,为其构建安装程序,并在源代码管理中对其进行标记

我们只需在需要更改应用程序时将其升级到最新版本即可处理旧应用程序

我为公共库构建了一个SDK和可再发行的安装程序。SDK面向所有开发人员,包括源代码、模板、文档,将DLL放在他们的驱动器上,还将DLL放在他们的GAC中。可再发行文件只是将DLL放在GAC中。我们在服务器上安装了可再发行版本

我们很快就会采用一种不产生可再发行债券的方法。我们将只生成一个SDK,其中SDK将是公共库的合并模块。当开发人员使用该库并准备将其应用程序转移到生产环境中时,他们将为其构建一个安装程序,并在该安装程序中包含合并模块,这样应用程序的部署始终具有公共库的正确版本,我们不必担心先在服务器上安装它


我对您的环境一无所知,所以我不知道这些技术如何适用于您,但它现在对我们来说运行得非常好。

一个重要的区别是,如果服务器上的两个子项目运行不同版本的“共享”代码,这是否重要。图书馆,你可能没事。共享服务?可能不会。如果是后者,那么分支就成了一个更大的问题,因为每个人都很容易失去同步。如果您能够同时运行不同的版本,那么我会选择分支方法,因为它使每个项目/区域能够更好地控制何时接受更改

您没有提到的一个选项是在源代码管理中存储通用项目的二进制文件,并使用二进制引用。这与第二个选项(分支)具有类似的属性。与直接项目参考相比,您会遇到更少的问题,因为只有已知的良好(或至少可编译)版本可用。这样做的一个缺点是,在使用它的同时编辑共享项目可能有点痛苦

这也将有助于避免更大的解决方案出现混乱


您还可以使用此设置进行一些巧妙的操作,例如使用自定义生成后任务在共享项目上设置CI生成,以检入新的二进制文件。

一个重要的区别是,如果服务器上的两个子项目运行不同版本的“共享”代码,这是否重要。图书馆,你可能没事。共享服务?可能不会。如果是后者,那么分支就成了一个更大的问题,因为每个人都很容易失去同步。如果您能够同时运行不同的版本,那么我会选择分支方法,因为它使每个项目/区域能够更好地控制何时接受更改

您没有提到的一个选项是在源代码管理中存储通用项目的二进制文件,并使用二进制引用。这与第二个选项(分支)具有类似的属性。与直接项目参考相比,您会遇到更少的问题,因为只有已知的良好(或至少可编译)版本可用。这样做的一个缺点是,在使用它的同时编辑共享项目可能有点痛苦

这也将有助于避免更大的解决方案出现混乱

您还可以使用此设置执行一些巧妙的操作,例如设置CI