我在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
答案 0 :(得分:2)
这是一个已知的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>
删除该部分。
答案 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)