【问题标题】:TFS - Workspace to build definition with only required filesTFS - 仅使用所需文件构建定义的工作区
【发布时间】:2014-06-06 12:46:21
【问题描述】:

在我们的项目中,我们正在构建具有 TFS 构建定义功能的项目。在 TFS 构建定义中,有一个选项,例如“工作区”,我们提到所有需要文件夹,其中包含用于成功构建项目的文件。根据要求,我们有单独的文件夹,其中包含不同的单元。该单元数量众多,因此当我们构建项目并提及工作区中的任何文件夹时,它会提取该特定文件夹中的所有文件。实际上,我们只需要其中的几个来构建项目,因为我们在每个项目中使用了不同的文件,但这些文件位于同一屋檐下。

任何人都可以帮助我们如何构建我们的项目只需要工作区中的文件而不是整个文件夹吗?

【问题讨论】:

  • 工作空间是在文件夹级别定义的,没有选项可以只定义文件。您可以为每个项目创建一个子文件夹并将相关文件移动到其中。你有什么理由混淆来自不同项目的文件吗?您想以如此详细的方式定义它是否耗费时间/空间?
  • 感谢您的回复,但是我们在 3-4 个文件夹中有很多文件,无法在子文件夹中重新排列它们,我们有 140 多个 exes 使用了 3-4 个文件夹中的文件。我的意思是一些常见的文件在 3-4 个文件夹中。当我们提供整个文件夹的引用时,tfs 自动构建会从该文件夹中检索所有文件,但我们只需要所需的文件,并且无法通过重新排列子文件夹中的文件来更改所有 140 多个应用程序中的引用。感谢您的建议,但我们需要文件解决方案

标签: tfs tfsbuild


【解决方案1】:

Status =Active 源代码管理文件夹 =$/Artiion/ADO/LibForms/Loginf.pas: Build agent Folder=$(SourceDir)\LibForms\Loginf.pas

上面的例子很好用

【讨论】:

    【解决方案2】:

    没有合理的方法可以做到这一点。当您告诉 TFS Build 要使用哪些源文件夹时,您就是在告诉它:获取这些文件夹。理论上,我想您可以修改或编写自己的流程模板并提供自定义字段,您可以在其中向构建流程提供有关构建所需文件的数据,然后创建一些自定义操作来调用,然后替换流程模板中的标准 TFS Get 函数。但目的是什么?如果您有某些文件要包含在解决方案构建中,那么只需拥有包含相应文件的单独解决方案或项目。然后根据您需要的子组件构建特定的解决方案,然后只会构建这些文件并将其复制到放置位置。当然,它们仍然会在构建代理的工作区中被检索到,但它们不会在实际构建中使用或放置在放置位置。如果这还不够好,并且您实际上需要在每次构建时获取不同的文件组,那么您应该重新排列文件,以便将必要的文件放在适当的子文件夹中。

    【讨论】:

    • 我们在 3-4 个文件夹中有很多文件,无法在子文件夹中重新排列它们,我们有 140 多个 exes 使用了 3-4 个文件夹中的文件。我的意思是一些常见的文件在 3-4 个文件夹中。当我们提供整个文件夹的引用时,tfs 自动构建会从该文件夹中检索所有文件,但我们只需要所需的文件,并且无法通过重新排列子文件夹中的文件来更改所有 140 多个应用程序中的引用。感谢您的建议,但我们需要文件解决方案
    • 在这种情况下,我首先要指出,据我所知,上面的答案仍然是正确的答案。 TFS 构建不提供获取特定文件的能力,所以如果这确实是一个要求(我仍然有点怀疑),那么您需要编写自己的构建过程模板,包括 TFS Get 函数以返回提供的特定文件作为论据。到那时,您最好使用 Jenkins 或 TeamCity 等不同的构建工具,它们可能(或可能不)提供更具体的过滤器来从版本控制中获得什么。
    猜你喜欢
    • 2017-01-10
    • 2017-09-28
    • 1970-01-01
    • 2012-10-08
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2011-10-28
    相关资源
    最近更新 更多