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

问题描述 投票:0回答:4

我在 Azure DevOps 站点上的 Azure Pipeline 构建阶段遇到错误。具体来说,它抱怨的软件包是:

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 的以前名称)。

在本例中,计算机是 Azure DevOps 环境中的托管 2017 代理,我不知道如何在那里执行 Nuget 恢复作业。

但是,在日志文件的前面,我确实看到了构建代理安装所需 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
azure-devops nunit azure-pipelines-release-pipeline azure-pipelines-build-task
4个回答
27
投票

这是一个已知的 Nuget 问题

看这里

解决方案是,在测试项目的 .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>

删除该部分。


4
投票

不管怎样,我通过删除目标标签中的错误标签解决了这个问题。这是我最初在 .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 中的错误。现在构建没有错误。


1
投票

确保在管道“Build”步骤中选中“Restore NuGet Packages”选项:


0
投票

我对 NUnit.3.12.0 也有类似的问题。构建在一台机器上失败,而在另一台机器上完美运行。经过长时间的搜索,我意识到我在 Solution/packages/NUnit.3.12.0/build/ 中缺少文件 NUnit.props。 从工作机器复制该文件立即解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.