如何从 Azure Build Pipeline(经典版)中的 dotnet 核心发布任务中排除 folders/projects?

How to exclude folders/projects from dotnet core publish task in Azure Build Pipeline (Classic version)?

我有一个 Azure DevOps GIT 存储库,其中包含三种不同类型的项目。结构如下所示;

Repository Structure

我有一个构建管道(经典的,不是 YAML)来构建 .Net Core 项目,如下所示。

Pipeline

流水线设置只考虑NetCoreProject。恢复、构建和测试任务成功执行。但是,当涉及到 'Publish' 任务时,管道会失败,因为它考虑了整个存储库(所有项目)而不仅仅是 NetCoreProject。

失败的实际原因是在 NetCPPProject 文件夹中有一些没有任何扩展名的文件(makefile、快捷方式文件等),发布任务无法识别这些文件并因以下错误而失败。

##[错误]错误:查找失败:ENOENT:没有这样的文件或目录,stat 'D:\a\s\NetCPPProject\inc'

注意:inc 是一个快捷方式文件(没有任何扩展名),并且需要存在于文件夹中。

我尝试了以下,但没有用;

  1. 添加了 .artifactignore 以忽略其他文件夹,但 .Net Core 'Publish' 任务似乎没有考虑到这一点。
  2. 尝试指定发布任务的参数以仅考虑 NetCoreProject .sln 文件和 .csproj 文件,但问题仍然出现并出现相同的错误消息。
  3. 使用命令行任务重新确认文件存在于 Build.SourceDirectory 中。

问题是,如何让.Net Core 'Publish'任务排除NetCPPProject,只考虑NetCoreProject?

how to make .Net Core 'Publish' task to exclude NetCPPProject and only consider NetCoreProject?

要实现这个目标,您可以尝试以下步骤:

第 1 步:禁用 Dotnet 发布任务中的 Publish web projects 选项。

第二步:在Path to project字段中设置目标csproj文件

例如:

回购:

结果: