Azure devops 从Azure DevOps中的dotnet pack任务中排除项目

Azure devops 从Azure DevOps中的dotnet pack任务中排除项目,azure-devops,azure-pipelines-build-task,Azure Devops,Azure Pipelines Build Task,我有一个VS解决方案文件.sln,它由.net标准库和测试项目组成。现在,该项目有一个针对.net Framework 4.7.2的集成测试项目 我当前的构建管道执行以下操作 网络构建 网络包 网络推送 使用dotnet包,我试图排除项目Integration.Tests.csproj 我当前的文件夹结构如下所示 CompanyName.Service\CompanyName.Service.csproj CompanyName.Data\CompanyName.Data.csproj Inte

我有一个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。

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

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

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

我的文件夹设置:

注意:如果您仍然对该任务有问题,请检查错误是否来自运行该任务时生成而不是打包。或者,您可以选择“不生成”选项:


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

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

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

默认情况下,构建配置是在管道的$BuildConfiguration变量中定义的,它通常在上面的版本中以绿色显示。如果希望在管道中节省计算工作量和时间,可以在VisualStudio中创建新的解决方案配置。在下面,您可以看到已经创建了一个名为Package的解决方案配置。要创建它,请执行以下操作:

在configuration manager中,单击下面的绿色 指定配置包的名称 选择项目发布或调试的配置,或创建一个新项目。只有当您的项目需要为打包做一些特殊的事情时(例如,如果您有配置转换),创建一个新的包才有用。在本例中,主项目具有包配置。 在配置中,指定需要生成的项目。包括主项目及其依赖项。在本例中,主项目不依赖于其他项目,因此它是在Build列中选中的唯一项目。您通常会排除测试项目、概念验证和此类项目。 最后一步是管道本身:直接在第一个快照的绿色文本框中指定解决方案配置包,或者在管道的变量选项卡中指定该变量的值
如果这样做,则只会编译所需的项目,所有依赖项都将包含在包中。

在您使用的屏幕截图中!而不是-:对不起,这是一个糟糕的截图。但实际数据如我在评论中所述。当我拍下那张照片时,我正在感叹地尝试它。您正在使用的dotnet pack任务的版本是什么?是2.*?@Srini,试试看!,我想-:这是旧语法。谢谢利奥。我确实读过一些关于使用的微软文档!相反我试过了,还使用了不构建选项。不过,它似乎仍在尝试打包integration.tests项目。根据您的测试,我认为您的文件夹设置与我提到的类似。另外,我使用的是2.x版的task@Srini,是的,我已经创建了与您类似的文件夹设置,我在回答中添加了一个图像,您可以检查它。因此,这个问题不应该与语法有关,而应该与项目文件夹设置有关。您可以尝试创建一个包含两个简单项目的团队项目来测试它,或者您可以向我们共享一个复制样本,这样我们就可以找到这个问题的原因。