首页 > 解决方案 > 在 Azure DevOps Repos 中编译目录并将结果保存在某处

问题描述

假设我在 Azure DevOps 存储库中有这样的目录结构:

Main/
  - A/  
    - *.csproj
  - B/
    - *.csproj   
  - C/
    - *.csproj  

每个子文件夹都有一个.csproj文件。我想编译Main/A/文件夹并将构建结果(工件?)保存在某个地方,无论是文件夹还是其他东西。如何告诉 Azure 构建该精确Main/A/*.csproj文件,我需要/p:OutputPath在任务内部使用VSBuild@1,还是需要使用其他 Azure 任务?

标签: azureazure-devopsazure-repos

解决方案


如何告诉 Azure 构建精确的 Main/A/*.csproj 文件,我是否需要在 VSBuild@1 任务中使用 /p:OutputPath

如果您使用的是经典 UI,则需要取消链接默认解决方案:

在此处输入图像描述

然后通过浏览选项选择A项目:

在此处输入图像描述

如果你使用的是 Yaml 格式,你应该使用类似的东西solution: A/A.csproj来指定要构建的项目。

笔记:

由于现在我们正在构建单个项目而不是整个解决方案,因此我们应该使用Project Configuration而不是Solution Configuration. any cpu是解决方案平台而不是项目平台(AnyCPU)。因此,如果我们想使用此设置构建一个项目,我们应该确保使用 AnyCPU 构建单个项目。

如果出现错误The OutputPath property is not set for project 'A.csproj',则表明您应该使用有效的项目配置。在您的情况下,如果您正在使用any cpu,请将其更改为AnyCPU.

此外:

1.将构建结果发布为构建工件以供进一步使用。您可以像这样使用Copy Files任务和Publish Build Artifacts任务:

复制文件任务

在此处输入图像描述

发布构建工件

在此处输入图像描述

然后,您可以从构建日志页面下载摘要选项卡中的 Test.zip。此外,您可以通过使用下载工件任务在发布管道中使用此工件。

  1. 如果您正在尝试构建代码项目而不是整个解决方案,请选中此项。你可以考虑MSBuild任务。他们(Msbuild 任务,VS 构建任务)都调用 msbuild.exe 来完成构建工作。

希望以上所有帮助:)


推荐阅读