我正在尝试使用Azure Devops Pipelines,而我的第一个宠物项目是我试图构建的一个简单的.NET命令行应用程序。
我选择了“ VS Build .NET Desktop”任务模板,并且构建本身运行良好-编译位没有问题
YAML:
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
日志:
##[section]Starting: VSBuild
==============================================================================
Task : Visual Studio build
Description : Build with MSBuild and set the Visual Studio version property
Version : 1.151.2
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/visual-studio-build
==============================================================================
##[command]"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" "d:\a\1\s\AzureDevopsTaskCreator.sln"
...(lots of lines omitted)
CopyFilesToOutputDirectory:
Copying file from "d:\a\1\s\obj\Release\AZTaskCreator.exe" to "d:\a\1\s\bin\Release\AZTaskCreator.exe".
AZTaskCreator -> d:\a\1\s\bin\Release\AZTaskCreator.exe
Copying file from "d:\a\1\s\obj\Release\AZTaskCreator.pdb" to "d:\a\1\s\bin\Release\AZTaskCreator.pdb".
但是现在我想以某种方式发布此构建的输出,以便我可以下载(或将其部署到某个地方)。但是我一直在努力将这些事情联系起来。
因此,我尝试首先将构建输出压缩到一个归档文件中(然后可以将其发布):
YAML
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.BinariesDirectory)'
includeRootFolder: true
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/AZCreateTasks$(Build.BuildId).zip'
replaceExistingArchive: true
verbose: true
日志:
##[section]Starting: ArchiveFiles
##[command]d:\a\_tasks\ArchiveFiles_d8b84976-e99a-4b86-b885-4849694435b0\2.151.2\7zip\7z.exe a -tzip -bb3 d:\a\1\a\AZCreateTasks8.zip @d:\a\_temp\yat6561e8redmiomp7bbuik9
我的问题是:如何,我可以告诉“存档文件”步骤使用上一版本的输出目录吗?我以为默认的$(Build.BinariesDirectory)
可以做到这一点-但显然,它不会:
d:\a\1\s\bin\Release\
目录d:\a\_temp\yat6561e8redmiomp7bbuik9
目录中的文件我如何才能“连接”这两个步骤,以便“归档文件”步骤实际上尊重并使用VS Build步骤的输出目录?
我很难找到有关此系统中正在使用哪种“系统预定义”魔术变量以及如何影响这些魔术变量的任何有用文档。
答案 0 :(得分:1)
根据日志,构建输出位于源目录的d:\a\1\s\...
文件夹中的s
文件夹中,要访问此文件夹,有一个预定义的变量:Build.SourcesDirectory
。
因此,不要使用$(Build.BinareisDircetory)
来使用上面的变量:
rootFolderOrFile: '$(Build.SourcesDirectory)'
但是现在您将获得一个zip文件,其中源文件将包含dll文件,因此请考虑将路径附加到所需的文件夹。
例如:
rootFolderOrFile: '$(Build.SourcesDirectory)/obj/Release'