0

我正在处理几个共享的 .NET 程序集和一个通用 Web 应用程序,我希望在我们的 CC.NET/NAnt 构建环境中更好地处理它们。

目前,我们有几个 .NET 程序集(我们在客户端项目中使用的共享公共代码),它们存在于我们 SCM 的不同存储库中的不同 .NET 解决方案中(顺便说一下 Vault)。它们都在 CC.NET 下单独配置,因此我们目前对它们的构建和部署有相当大的控制权。

我们开发了一个 CMS 系统,该系统使用一些 .NET 程序集,包括一个公共管理网站项目和一个模板网站示例项目。在这个解决方案中,我们有以下需要单独管理的元素:

  • 管理界面与 .NET 无关,因此它是基于模板的,我们目前正在为其开发 PHP 后端。
  • CMS 共享程序集建立在我们其他常见的公司范围程序集之上。
  • 控制每个主要 CMS 构建/发布中的功能。

我希望这个解决方案的构建输出成为一个 Visual Studio 模板,当我们向代码库添加功能时,我们可以使用它来开发其他客户端站点并更好地管理 CMS 本身内的版本更改。

对于这一切,我有一个粗略的方法,并且认为它是可以实现的,但是,我想打开这个话题进行讨论,看看其他人在管理多个解决方案的构建和部署时都在做什么。

我们的主要考虑因素是:

  • 我们是否利用 CC.NET 中的集成队列功能来确保构建顺序并在构建时将 CMS 所需的程序集组合在一起?
  • 在 CMS 客户端站点内进行调试,即当客户端解决方案是基本 CMS 系统的一个版本并因此是独立的时,单步执行共享程序集的代码。
  • 在使用共享程序集时开发和扩展 CMS,即我们是否在开发期间(跨源代码控制存储库)将程序集项目添加到主干解决方案,然后依赖构建将其拉到一起,还是我们完全使用不同的方法?
  • 人们可能遇到的任何其他问题可能会改变我们的思维方式?

希望这个问题不是太含糊,你们中的一些人会处理这些问题。期待听听大家的经验。

非常感谢!蒂姆

4

1 回答 1

1

不幸的是,我无法回答您的所有观点,但让我从这个开始:

  • 我们是否利用 CC.NET 中的集成队列功能来确保构建顺序并在构建时将 CMS 所需的程序集组合在一起?

简短的回答是——是的,你应该这样做。queue 属性确保 CC.NET 运行实例中的构建顺序,并为您提供相互依赖的构建的序列化。要指定哪些项目相互依赖,您应该使用项目触发器。不要依赖此任务的 queuePriority。

您很可能会在构建时拉出构建所需的部分。除非您对个人构建有一些时间限制。

回覆:

  • 在使用共享程序集时开发和扩展 CMS,即我们是否在开发期间(跨源代码控制存储库)将程序集项目添加到主干解决方案,然后依赖构建将其拉到一起,还是我们完全使用不同的方法?

我基本上反对在主干中分发二进制文件,除非它是一些不需要经常更新/更改的库。如果您自己构建共享程序集,您应该考虑从构建服务器上的工件中提取它们。

于 2009-01-29T19:02:51.400 回答