【问题标题】:Referencing build artifacts from an svn:external build in .Net project引用来自 svn 的构建工件:.Net 项目中的外部构建
【发布时间】:2010-09-14 23:10:57
【问题描述】:

这是上一个问题I have asked的延续问题

我现在在项目树的根目录中有一个 /externals 目录。在这里面,我引用了另一个项目。我可以在主项目 NAnt 脚本中编写所有外部组件的构建脚本。这些构建的结果如下:

/externals/external-project1/build/buildartifacts/{dlls|html|js}

/externals/external-project2/build/buildartifacts/{dlls|html|js}

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

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

希望这已经足够清楚了。写下来至少对我来说澄清了这个问题:-)。

--编辑--

谢谢各位。我想我将实施“签出修订版”,但由于构建速度如此之快,我不会签入任何构建工件。还要弄清楚如何处理外部项目的依赖关系(例如:原型、swfobject 等)。

【问题讨论】:

    标签: svn build-process nant


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-11-17
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 1970-01-01
        • 2011-12-12
        • 2018-06-09
        相关资源
        最近更新 更多