2009-04-17 85 views
4

我们使用Team Foundation Server并拥有大量ASP.NET Web应用程序项目。每个Web应用都使用我们自行开发的自定义内容管理系统。 CMS本身就是一个ASP.NET Web应用程序。如何版本跨项目共享的资源

部署时,CMS驻留在子目录中,如“/ Admin”。 CMS由.aspx和ascx文件组成,当然,相应的程序集放在bin中。

目前,CMS文件分别存在于源代码管理中的每个Web App。换句话说,每个依赖于CMS的Web应用程序都存在一个“Admin”文件夹。这带来了明显的挑战,因为CMS的更新必须分发到每个相关站点。我的工作是自动化/简化流程。

我们目前不执行任何自动构建。我对TFS中源代码控制分支的知识有限,我不确定它适用于这种情况。确保依赖项目从CMS项目获得最新程序集和标记的最佳方法是什么?提前致谢。

听起来像#2(来自'竹子')是我追求的解决方案。鉴于共享代码已经存在于每个单独的项目中,您能否简要描述一下我将通过“分支/共享”CMS的流程?另外,值得注意的是,我不希望.cs文件传播到依赖项目,只是标记和程序集。这是否改变了战略?我应该首先在共享项目上创建一个生成事件,以将必需的文件复制到“发布”文件夹,然后分发发布文件夹?

回答

7

这是一对夫妇流行的方式来处理这种情况。

  1. 将共享内容的TFS项目映射到每个应用程序工作区,然后在每个应用程序解决方案中包含共享项目。如果您希望所有团队/应用程序在构建时立即获取共享更改,请使用此方法,因为它们也将获得最新的共享内容。

  2. 分支/共享共享的东西到每个应用程序源代码控制树中。这在TFS中很容易实现。如果每个团队/应用想要控制何时获得最新的共享内容,这真的很不错。这使得团队能够做好自己的事情,直到他们准备好整合共享的东西。

我总是比较喜欢#2。但这取决于你需要/想要工作的具体细节。

+0

听起来像#2是我追求的解决方案。鉴于共享代码已经存在于每个单独的项目中,您能否简要描述一下我将通过“分支/共享”CMS的流程?再次感谢。 – betitall 2009-04-17 20:07:38

0

不确定TFS,但在大多数源代码管理系统中,您可以在多个位置共享代码。所有共享副本的更改都会反映出来。在Visual Studio级别,它们将显示为独立的代码片段。

您的每个Web应用程序(解决方案)都包含一个完全由共享代码组成的项目。通常,源代码被共享并成为构建过程的一部分。您可以共享生成的DLL,但大多数人不会获取控制DLL。

如果您没有共享部分的源代码,可能在GAC中安装代码成为您创建共享部分的唯一选项。

0

我们有一个共享库,与我们的几个项目一起使用。然后,我们添加对共享库的引用,而不是实际的项目...

然后,您必须将引用的路径添加到build xml,以便您的TFS服务器知道.dll所在的位置。每次为项目完成新构建时,都会将最新版本的共享复制到项目的容器中。

我们所有的项目,包括共享都有4个分支:开发,集成,分段和生产。因此,当我们需要对共享库进行更改时,我们会在开发分支中执行此操作,因为它是独立的。一旦我们感到高兴,我们就会将我们的改变融入整合。我们构建共享集成,然后构建受变更影响的项目。这是我们开始测试其他应用程序以查看我们的更改是否导致了任何错误。所以......

  1. 一个地方,使我们的更改共享库
  2. 合并到一个单一的分支,在每个项目不多个分支。
  3. 共享的使用与添加参考一样简单
  4. 可将单个项目和Shared版本从开发推送到生产,而不会影响任何其他项目。共享的.dll版本被复制到项目bin文件夹中。一旦完成了另一个项目的更改,它将通过其分支机构获取最新版本。