从.Net项目中的svn:external build引用构建工件

时间:2008-10-02 23:11:39

标签: svn build-process nant

这是上一个问题I have asked

的延续问题

我现在在项目树的根目录中有一个/ externals目录。在这里我有一个参考另一个项目。我能够在主项目NAnt脚本中编写所有外部脚本的脚本。这些构建的结果如下:

/外部对象/外部PROJECT1 /建造/ buildartifacts / {的DLL | HTML | JS}

/外部对象/外部项目2 /建造/ buildartifacts / {的DLL | HTML | JS}

这一切都很好,但现在我很好奇我的主项目应该如何引用这些构建工件。例如,假设外部项目构建了一些我的代码库所依赖的DLL。我应该简单地引用构建工件目录中的DLL,还是应该实现另一个将这些复制到/ thirdparty / libs /文件夹的NAnt任务?

这意味着我的构建现在依赖于构建此外部项目的能力(可以是内部项目,也可以是第三方)。检查最新的构建工件集是否是一个好主意,以确保主构建不会因依赖构建中断而中断?

希望足够清楚。写下来对我来说问题最少: - )。

- 编辑 -

谢谢你们。我想我将实施“结帐修订”,但由于构建速度很快,我不打算检查任何构建工艺。还需要弄清楚如何处理外部项目的依赖关系(例如:prototype,swfobject等)。

2 个答案:

答案 0 :(得分:1)

我会说构建它们一次并检查/ public / ext / some_dependency / ref中的构建工件(显然,该文件夹的命名取决于你:-))并从那里引用它们。

我的主要原因是,每次构建产品时,很少需要构建外部依赖项。通常,外部依赖性应该很少改变。此外,您需要严格控制何时选择外部依赖项更改,以避免在编码阶段引入不稳定性。

作为对此的扩展,我将添加一个单独的CI任务,该任务仅构建外部依赖项,并在某些外部条件下在上述文件夹中检查它们 - 依赖项源文件夹中的提交或其他内容。

答案 1 :(得分:1)

我提出的一个建议(我认为它来自Mike Mason的实用版本控制书)来引用外部的特定修订版,以便您始终获得相同版本的外部依赖项,直到您明确选择改变它。

此时,您可能已经交互式地构建了一次以确保它正常工作,因此每次依赖它来构建并不是真正的问题,这避免了在构建任务中添加一些间接的需要。

如果您选择间接,并且出于某种原因,构建在外部上失败,则可能会错过,因为下一个nant任务将获取前​​一个二进制文件。