该项目引用了此计算机上缺少的NuGet软件包。缺少的文件是.. \ packages \ NUnit.3.10.1 \ build \ NUnit.props

时间:2018-09-30 21:24:46

标签: azure-devops nunit azure-pipelines-release-pipeline azure-pipelines-build-task

我在Azure DeveOps站点上的Azure管道的生成阶段遇到错误。具体来说,它抱怨的软件包是:

2018-09-30T20:35:07.6022998Z
==============================================================================
2018-09-30T20:35:08.4023740Z [command]C:\Windows\system32\chcp.com 65001
2018-09-30T20:35:08.4106228Z Active code page: 65001
2018-09-30T20:35:08.4688610Z [command]"C:\Program Files\dotnet\dotnet.exe" build D:\a\1\s\ClassService.Tests\WebAPITests.csproj --configuration release
2018-09-30T20:35:08.7564734Z Microsoft (R) Build Engine version 15.8.166+gd4e8d81a88 for .NET Core
2018-09-30T20:35:08.7565155Z Copyright (C) Microsoft Corporation. All rights reserved.
2018-09-30T20:35:08.7565308Z 
2018-09-30T20:35:09.2187455Z   Nothing to do. None of the projects specified contain packages to restore.
2018-09-30T20:35:09.2600797Z D:\a\1\s\ClassService.Tests\WebAPITests.csproj(60,5): error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\packages\NUnit.3.10.1\build\NUnit.props.
2018-09-30T20:35:09.2684158Z 
2018-09-30T20:35:09.2685014Z Build FAILED.
2018-09-30T20:35:09.2685593Z 
2018-09-30T20:35:09.2685883Z D:\a\1\s\ClassService.Tests\WebAPITests.csproj(60,5): error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\packages\NUnit.3.10.1\build\NUnit.props.
2018-09-30T20:35:09.2685950Z     0 Warning(s)
2018-09-30T20:35:09.2686808Z     1 Error(s)
2018-09-30T20:35:09.2686892Z 
2018-09-30T20:35:09.2687550Z Time Elapsed 00:00:00.45
2018-09-30T20:35:09.3022976Z ##[error]Error: C:\Program Files\dotnet\dotnet.exe failed with return code: 1
2018-09-30T20:35:09.3036637Z [command]"C:\Program Files\dotnet\dotnet.exe" build D:\a\1\s\DanceWorksStudio.MobileAppService\DanceWorksStudio.MobileAppService.csproj --configuration release

我已经看过类似的问题,解决方案是执行Nuget还原,但它们通常是指本地计算机或Visual Studio安装,而不是Visual Studio Team Services(Azure DevOps的前称)。

strong>

在这种情况下,计算机是Azure DevOps环境中的Hosted 2017代理,我看不到如何在其中执行Nuget Restore作业。

但是,在日志文件的前面,我确实看到了有关构建代理程序在其中安装所需的Nunit Nuget软件包的引用:

2018-09-30T20:34:18.9378894Z        Using "RestoreTask" task from assembly "C:\Program Files\dotnet\sdk\2.1.400\NuGet.Build.Tasks.dll".
2018-09-30T20:34:18.9379005Z        Task "RestoreTask"
2018-09-30T20:34:18.9379127Z          (in) RestoreGraphItems Count '19'
2018-09-30T20:34:18.9379258Z          (in) RestoreDisableParallel 'False'
2018-09-30T20:34:18.9379370Z          (in) RestoreNoCache 'True'
2018-09-30T20:34:18.9379483Z          (in) RestoreIgnoreFailedSources 'False'
2018-09-30T20:34:18.9379610Z          (in) RestoreRecursive 'True'
2018-09-30T20:34:18.9379721Z          (in) RestoreForce 'False'
2018-09-30T20:34:18.9379834Z          (in) HideWarningsAndErrors 'False'
2018-09-30T20:34:19.0149316Z          Running restore with 2 concurrent jobs.    
2018-09-30T20:34:19.0239478Z          Reading project file D:\a\1\s\DanceWorksStudio.MobileAppService\DanceWorksStudio.MobileAppService.csproj.
2018-09-30T20:34:19.0621933Z          Restoring packages for D:\a\1\s\DanceWorksStudio.MobileAppService\DanceWorksStudio.MobileAppService.csproj...


2018-09-30T20:34:20.1980374Z            GET https://api.nuget.org/v3-flatcontainer/nunit/index.json
2018-09-30T20:34:20.2168394Z            GET https://api.nuget.org/v3-flatcontainer/nunit3testadapter/index.json
2018-09-30T20:34:28.8022324Z            GET https://api.nuget.org/v3-flatcontainer/nunit/3.10.1/nunit.3.10.1.nupkg


2018-09-30T20:34:39.7126978Z          Acquiring lock for the installation of NUnit3TestAdapter 3.10.0
2018-09-30T20:34:39.7127033Z          Acquired lock for the installation of NUnit3TestAdapter 3.10.0
2018-09-30T20:34:39.7127104Z          Installing NUnit3TestAdapter 3.10.0.

2018-09-30T20:34:39.7946703Z          Acquiring lock for the installation of NUnit 3.10.1
2018-09-30T20:34:39.7947844Z          Acquiring lock for the installation of Microsoft.AspNetCore.Http.Abstractions 1.0.3
2018-09-30T20:34:39.7950455Z          Acquired lock for the installation of NUnit 3.10.1
2018-09-30T20:34:39.7950672Z          Installing NUnit 3.10.1.

2018-09-30T20:34:43.5285313Z          Completed installation of NUnit3TestAdapter 3.10.0

2018-09-30T20:34:46.7897372Z          Completed installation of NUnit 3.10.1

3 个答案:

答案 0 :(得分:2)

这是一个已知的Nuget问题

Look here

解决方法是,通常在测试项目的.csproj文件中的底部,找到一个部分

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\NUnit.3.12.0\build\NUnit.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NUnit.3.12.0\build\NUnit.props'))" />
  </Target>

删除该部分。

答案 1 :(得分:1)

不管怎样,我通过删除 Target 标签中的错误标签解决了这个问题。这是我最初在 .csproj 文件中的内容:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
    <Error Condition="!Exists('packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
    <Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
    <Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
</Target>

我看着它,意识到在我移动项目之前,带有 !Exists('packages\EntityFramework.6.4.4... 的两条线指向了这两条线曾经所在的位置。所以,我删除了它们。现在我有了这个:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
    <Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
</Target>

这消除了 Azure DevOps Services Pipeline 中的错误。现在构建时没有错误。

答案 2 :(得分:0)

确保在管道的“ 构建”步骤中选中“ 还原NuGet软件包”选项:

enter image description here