首页 > 解决方案 > 视觉工作室构建任务路径相对于哪里

问题描述

我有一个包含 5 个项目的解决方案,并且意识到在查看 azure 管道构建中的选项时我真的不明白我在做什么。我的困惑主要在于处理作为管道环境一部分的不同路径和预定义变量。我一直在观看大量的 youtube 和复数视频。我得到了基本概念,它的一些细节是我绊倒的。

所以这里是 yaml 文件的一部分。

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Debug'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:OutputPath="$(Build.BinariesDirectory)\$(Build.BuildId)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

问题:
(1)解决方案变量显然是通过通配符映射到任何 sln 文件,但相对于什么路径?
(1a) 如何在包含多个项目的解决方案中指定单个项目?
(2) 当构建任务执行时,这是在什么路径中完成的?
(3) 文档(我可以看到)中没有任何地方说您需要为构建任务的输出构建路径,我必须找到其他人的示例。如果上述任务没有提供 /p:OutputPath 值,那么在哪里可以找到构建结果?
(4) Build.BinariesDirectory - 如果这是相对于托管的构建代理,如果带有密码的配置文件是构建的一部分,这是否安全?换句话说,由于我正在共享一个托管版本的 Visual Studio 实例,我的文件是否可以被其他用户访问,即使是偶然的?

标签: azure-pipelines

解决方案


所有路径都是Pipeline.Workspace文件夹内的位置。

1:通配符是相对于Build.SourcesDirectory文件夹的。

1a:该solution属性还支持一个项目文件而不是一个解决方案来构建单个项目

2:我不明白这个问题。您想知道执行 msbuild 任务的工作文件夹吗?为什么你需要知道这个

3:默认情况下,项目构建到项目文件中指定的输出路径。这通常是bin项目目录中的相对文件夹。

4:build.binariesdirecrory是绝对路径。如果您与其他用户共享构建机器,则此文件夹中有任何敏感数据,您应该在管道结束时将其清除。如果您使用 Microsoft 托管的管道代理,则无需清理它。每个构建都提供一个干净的构建代理。其他用户将无法访问您的文件

另请参阅https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml


推荐阅读