我有一个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。
答案 0 :(得分:1)
如果在Azure Devops中使用dotnet任务的版本(2.x),则应使用!
而不是-:
。
因为排除模式已更改。这些模式已在NuGet任务的版本2中更新;如果您的模式包含-:
,请改用!
:
作为测试,它在我这边工作正常。
我的文件夹设置:
注意:如果您仍然对该任务有疑问,请检查该错误是否是由于运行该任务时未打包而引起的。或者,您可以选择选项不构建:
但是您应该在打包项目之前先构建项目。
答案 1 :(得分:0)
除了仅包含必要的文件(一个)之外,您还可以修改管道以仅构建所需的资源(两个)。详情:
一)这就是你的问题的主要答案:打包操作会包含依赖,所以你只需要打包主项目即可。在下图中,您可以在黄色中看到包主项目的路径和文件名(不要猜测,点击阅读箭头指向的按钮来浏览它)。如前所述,依赖项将自动包含在内。您不需要明确包含它们。这还包括所需的 Nuget 包,它们作为依赖包包含在内。
二) 默认情况下,构建配置定义在管道的 $(BuildConfiguration)
变量中,通常是 Release
(上图,绿色)。如果要节省管道中的计算工作和时间,可以在 Visual Studio 中创建新的解决方案配置。您可以在下方看到已创建的解决方案配置,名称为 Package
。创建它:
<New...>
(下方绿色)Package
)Package
配置。Build
列中唯一选中的项目。您通常会排除测试项目、概念验证和此类项目。Package
),或作为该变量的值,在 Variables
选项卡中管道的
如果这样做,只会编译需要的项目,所有依赖项都会包含在包中。