【问题标题】:Excluding projects from dotnet pack task in Azure DevOps从 Azure DevOps 中的 dotnet pack 任务中排除项目
【发布时间】:2019-12-21 12:22:02
【问题描述】:

我有一个 VS 解决方案文件 (.sln),其中包含 .net 标准库和测试项目。现在该项目有一个针对 .net Framework 4.7.2 的集成测试项目。

我当前的构建管道执行以下操作 点网构建 点网包 点网推送

使用 dotnet 包,我试图排除项目 Integration.Tests.csproj。

我当前的文件夹结构如下所示

CompanyName.Service\CompanyName.Service.csproj
CompanyName.Data\CompanyName.Data.csproj
Integration.Tests\Integration.Tests.csproj

根据包含/排除路径中的帮助工具提示,我们可以这样做

**/*.csproj;-:**/*.Tests.csproj

然而,dotnet pack 任务并没有忽略 Integration.Tests.csproj。它试图打包它,但它失败了。我不确定我做错了什么,或者这是否是任务的问题。到目前为止,我还没有找到任何已知问题。

注意:在我的解决方案中包含该项目之前,管道运行良好,项目被打包并发布到 nuget。

【问题讨论】:

  • 在你的截图中你使用!而不是-:
  • 对不起,这是一个糟糕的截图。但实际数据正如我在评论中提到的那样。当我拍那张照片时,我正带着感叹号尝试它
  • 您正在使用的 dotnet pack 任务的版本是什么?是2.*?
  • @Srini 所以尝试使用!,我认为-: 这是旧语法。

标签: azure-devops azure-pipelines-build-task


【解决方案1】:

如果您在 Azure Devops 中使用 dotnet 任务的版本 (2.x),则应使用 ! 而不是 -:。

因为排除模式已更改。这些模式已在 NuGet 任务的第 2 版中更新;如果您的模式包含-:,请改用!:

Pack NuGet packages

作为测试,它在我这边运行良好。

我的文件夹设置:

注意:如果您对该任务仍有疑问,请检查错误是否来自运行该任务时的构建未打包。或者您可以选择选项不构建:

但是你应该在打包之前构建项目。

【讨论】:

  • 谢谢利奥。我确实阅读了一些关于使用 !反而。我试过了,还使用了不构建选项。但是,它似乎仍在尝试打包 integration.tests 项目。根据您的测试,我认为您的文件夹设置与我提到的类似。我也在使用任务的 2.x 版本
  • @Srini,是的,我已经创建了与您类似的文件夹设置,我在答案中添加了一张图片,您可以查看它。所以,这个问题应该与语法无关,更多地与您的项目文件夹设置有关。您可以尝试创建一个包含两个简单项目的团队项目来测试它,或者您可以将重现示例分享给我们,以便我们找到此问题的原因。
【解决方案2】:

除了只包含必要的文件(一个)之外,您还可以修改管道以仅构建所需的资源(两个)。详情:

一)这是您问题的主要答案:打包操作将包含依赖项,因此您只需打包主项目。在下图中,您可以以黄色看到包的主项目的路径和文件名(不要猜测,单击读取箭头指向的按钮进行浏览)。如前所述,将自动包含依赖项。您不需要明确包含它们。这还包括所需的 Nuget 包,它们作为依赖包包含在内。

二)默认情况下,构建配置在管道的$(BuildConfiguration) 变量中定义,通常为Release(上图,绿色)。如果要在管道中节省计算工作量和时间,可以在 Visual Studio 中创建新的解决方案配置。您可以在下面看到已创建的解决方案配置,名称为 Package。创建它:

  • 在配置管理器中,点击<New...>(下方绿色)
  • 为配置指定一个名称 (Package)
  • 选择项目的配置(发布或调试)或创建一个新的。仅当您的项目需要为打包做一些特殊的事情时,创建一个新的才有用,例如,如果您有配置转换。在示例中,主项目具有 Package 配置。
  • 在配置中指定需要构建的项目。包括主项目及其依赖项。在此示例中,主项目不依赖于其他项目,因此它是Build 列中唯一选中的项目。您通常会排除测试项目、概念证明和此类项目。
  • 最后一步是在管道本身中:直接在第一个快照的绿色文本框中指定解决方案配置(Package),或者作为该变量的值,在管道的Variables 选项卡中

如果这样做,只会编译需要的项目,并且所有依赖项都将包含在包中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-20
    • 2020-07-19
    • 2022-08-24
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多