为什么 ArtifactoryNuget@1 管道任务针对旧 Microsoft.NetCore.App 版本进行恢复?

Why is ArtifactoryNuget@1 pipeline task restoring against old Microsoft.NetCore.App version?

我正在使用 ArtifactoryNuget@1 任务从 JFrog Artifactory 恢复 NugetPackages。我的 Azure DevOps 管道在一周前 (31.1.2020) 开始突然失败,原因是使用 Microsoft.NetCore.App 版本 2.1.14 恢复人工任务,其中 DotNetCoreCLI@2 在使用版本 2.1.15 后执行任务。

我从 DotNetCoreCLI@2 任务中得到的实际错误是:NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.14, but with current settings, version 2.1.15 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish. Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore.

我正在为 .Net Core 部署项目进行自包含部署,因此项目文件已为此设置。

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
  </PropertyGroup>
  ...

管道配置如下:

- task: ArtifactoryNuGet@1
  inputs:
    command: 'restore'
    artifactoryService: 'xxxx'
    solutionPath: 'xxxx.sln'
    targetResolveRepo: nuget

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: xxxx.csproj'
    arguments: '--configuration Release --runtime win10-x64 --no-restore 

之前一切都运行良好,但现在我无法获得在 Azure DevOps 中正确构建的解决方案(本地构建有效)。我最好的猜测是 DevOps 管道机器已使用 2.1.15 运行时更新,但 JFrog ArtifactoryNuget 任务由于某种原因无法使用,最终使用 2.1.14。

我试图从 task source code 中了解版本是如何选择的,但我认为这进入了 Nuget 内部。我还尝试使用 <RuntimeFrameworkVersion> 明确设置它,但这导致 ArtifactoryNuGet@1 任务使用甚至更旧的版本 2.1.1。 nuget repo 本身是一个结合了 nuget.local 和 nuget.remote.

的虚拟 repo

题目:

谢谢!

注意:在实际解决问题之前,标记的答案是该问题的非最佳解决方法。

一般在工程文件中设置TargetLatestRuntimePatchtrue时会要求安装最新的补丁

因此,请确保版本 Microsoft.NetCore.App version 2.1.15 存在于 Artifactory 中。根据您的描述,您的 JFrog Artifactory 服务中的最新补丁似乎是 version 2.1.14

如果你遇到这种情况,请试试这个:

<PropertyGroup>
   <TargetFramework>netcoreapp2.1</TargetFramework>
   <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
   <RuntimeFrameworkVersion>2.1.14</RuntimeFrameworkVersion>
</PropertyGroup>

<ItemGroup>
   <PackageReference Update="Microsoft.NETCore.App" Version="2.1.14" />
</ItemGroup> 

如果这不起作用,请参考以下链接以进行进一步的故障排除: