TFS Build Online 2017中$(Build.Repository.LocalPath)和$(Build.SourcesDirectory)之间的区别

JCi*_*sar 13 tfs azure-devops azure-pipelines

我试图弄清楚TFS Online 2017中两个预定义变量之间是否存在差异:$(Build.Repository.LocalPath)$(Build.SourcesDirectory).我有一个使用这两个变量的构建,并且不知道我是否可以交替使用它们.

查看Microsoft的文档,描述如下:

$(Build.SourcesDirectory):下载源代码文件的代理上的本地路径.例如:c:\ agent_work\1\s默认情况下,新构建定义仅更新已更改的文件.您可以在"存储库"选项卡上修改文件的下载方式.

$(Build.Repository.LocalPath):下载源代码文件的代理上的本地路径.例如:c:\ agent_work\1\s默认情况下,新构建定义仅更新已更改的文件.您可以在"存储库"选项卡上修改文件的下载方式.

这些代表相同的事情还是我错过了什么?

jes*_*ing 12

他们是同义词.大多数标准模板和任务都使用$(Build.SourcesDirectory),这就是我倾向于使用的.

  • @GreatNews,你的逻辑是合理的;微软的不是。 (4认同)

ins*_*law 5

它们通常会产生相同的结果,但不一定。如文档中所述:

如果您检查多个存储库,行为如下(并且可能与 Build.SourcesDirectory 变量的值不同):

Build.SourcesDirectory同一页面上的描述包含类似的注释。

基本上,如果您想为self结账定义自定义路径并且仍然不需要指定额外的目录,那么您特别需要Build.Repository.LocalPath.

为了清楚起见,如果您有通常的路径,您仍然可以使用Build.SourcesDirectory解析到完整路径

- checkout: self
  path: s
Run Code Online (Sandbox Code Playgroud)

如果可以的话,我建议尽可能使用它。如果你有类似的东西

- checkout: self
  path: main_project
Run Code Online (Sandbox Code Playgroud)

那么你需要$(Agent.BuildDirectory)/main_project达到同样的目标。