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

时间:2018-08-15 02:04:11

标签: continuous-integration azure-devops dotnet-cli dotnet-restore dotnet-test

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

我正在尝试将新阶段放在一起以生成代码覆盖率报告,如this blog post所示。我的新阶段看起来像这样:

Screenshot of the new phase

并且由以下步骤组成:

  1. .NET Core工具安装程序-使用SDK 2.0.0
  2. dotnet restore,在“使用此VSTS / TFS feed中的程序包”下拉列表中选择了我的自定义feed
  3. dotnet test及其相关参数来收集代码覆盖率
  4. 使用ReportGenerator的自定义步骤
  5. 发布结果的步骤

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

D:\a\1\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

我的主要构建过程运行良好,并且能够从自定义Feed中还原软件包。区别在于使用命令的Visual Studio版本(即不是dotnet):

Screenshot of the main build process

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

我是否需要找到某种方法来告诉dotnet test我的自定义供稿?

或者(假设我之前正在运行restore),是否需要说服它完全跳过还原?

3 个答案:

答案 0 :(得分:0)

万一其他人遇到这个问题,很遗憾地说,我们解决问题的方法是合并两个存储库,从而有效地消除了使用私有Nuget提要的必要。

我们确实有a bit of back and forth with a rep from MS,但没有深入了解它。

答案 1 :(得分:0)

  

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

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

  

我是否需要找到某种方法来告诉dotnet测试我的自定义提要?

否(假设步骤dotnet restore已还原软件包)

  

或者(假设我之前正在运行restore),是否需要说服它完全跳过还原?

不。它将自动跳过还原(假设步骤dotnet restore已经还原了软件包)

答案 2 :(得分:0)

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