如何 运行 使用自定义 NuGet 提要在 VSTS 上进行 dotnet 测试?

How to run dotnet test on VSTS with custom NuGet feed?

我们有一个项目依赖于自定义 NuGet 提要(也托管在 VSTS 中)。

我正在尝试组合一个新阶段来生成代码覆盖率报告,如 this blog post 中所示。我的新阶段如下所示:

由以下步骤组成:

  1. .NET Core 工具安装程序 - 使用 SDK 2.0.0
  2. dotnet restore 在 "Use packages from this VSTS/TFS feed" 下拉列表中选择了我的自定义 Feed
  3. dotnet test 用相关参数收集代码覆盖率
  4. 使用 ReportGenerator 的自定义步骤
  5. 发布结果的一步

问题是 dotnet test 坚持尝试自行恢复软件包。由于我找不到告诉它使用自定义提要的方法,因此在尝试恢复这些包时它失败了:

D:\a\s\MyProject\MyProject.csproj : error NU1101: Unable to find package My.Package. No packages exist with this id in source(s): Microsoft Visual Studio Offline Packages, nuget.org

我的主要构建过程运行良好,能够从自定义源恢复包。区别在于使用 Visual Studio(即不是 dotnet)版本的命令:

处理这个问题的正确方法是什么?

我需要找到一些方法来告诉 dotnet test 我的自定义 Feed 吗?

或者(鉴于我之前 运行 restore)我需要说服它完全跳过恢复吗?

万一其他人有这个问题,我很抱歉地说我们的解决方法是合并两个 repos,有效地否定了使用私有 Nuget 提要的需要。

我们确实有 a bit of back and forth with a rep from MS,但没有追根究底。

What's the right way to handle this?

在步骤 dotnet restore 中,确保字段 Path to project(s) 指定所有相关项目。 (很容易忘记一个项目,这会导致您遇到这种情况。)例如,您可以指定值 **/*.csproj。如果您正确执行此操作,其他步骤(例如 dotnet test 甚至不应该尝试还原包,因为它们已经被还原。

Do I need to find some way to tell dotnet test about my custom feed?

否(假设步骤 dotnet restore 已经恢复包)

Or (given that I'm running restore immediately prior) do I need to persuade it to skip the restore altogether?

没有。它会自动跳过恢复(假设步骤 dotnet restore 已经恢复了包)

我在自托管构建代理上遇到了同样的错误。一旦我将项目文件中的星形语法(获取最新版本)更改为固定版本,问题就消失了。我有点难过,我不能使用版本语法。

我在使用 dotnet 测试 和自定义 nuget 提要时遇到了类似的问题。 该解决方案使用两个步骤:

  1. dotnet restore --source(我的源)
  2. dotnet 测试 --no-restore

Implicit restore