【问题标题】:Appveyor: Package content hash validation failed, The package is different than the last restoreAppveyor:包内容哈希验证失败,包与上次恢复不同
【发布时间】:2023-03-05 22:46:01
【问题描述】:

我想在 Appveyor 中为 .net 项目配置 CI,但遇到以下错误:

error NU1403: Package content hash validation failed for System.Collections.NonGeneric.4.3.0. The package is different than the last restore.

每个项目还原都碰巧抛出类似的东西

There was similar question 一个建议是清除 nuget 缓存。

这里最好的做法是什么?

谢谢

Directory.Build.props

<PropertyGroup>
    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
    <DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
</PropertyGroup>
Build started
git config --global core.autocrlf true
git clone -q --branch=master https://github.com/User/App.git C:\projects\App
git checkout -qf 7066b969dd7564c573fb5e30fa6600a86c48644f
choco install opencover.portable
Chocolatey v0.11.3
Installing the following packages:
opencover.portable
By installing, you accept licenses for the packages.
Progress: Downloading opencover.portable 4.7.1221... 100%
opencover.portable v4.7.1221 [Approved]
opencover.portable package files install completed. Performing other installation steps.
Downloading opencover.portable 
  from 'https://github.com/OpenCover/opencover/releases/download/4.7.1221/opencover.4.7.1221.zip'
Progress: 100% - Completed download of C:\Users\appveyor\AppData\Local\Temp\1\chocolatey\opencover.portable\4.7.1221\opencover.4.7.1221.zip (7.76 MB).
Download of opencover.4.7.1221.zip (7.76 MB) completed.
Hashes match.
Extracting C:\Users\appveyor\AppData\Local\Temp\1\chocolatey\opencover.portable\4.7.1221\opencover.4.7.1221.zip to C:\ProgramData\chocolatey\lib\opencover.portable\tools...
C:\ProgramData\chocolatey\lib\opencover.portable\tools
 ShimGen has successfully created a shim for OpenCover.Console.exe
 ShimGen has successfully created a shim for OpenCover.Simple.Target.exe
 ShimGen has successfully created a shim for OpenCover.Simple.Target.exe
 The install of opencover.portable was successful.
  Software installed to 'C:\ProgramData\chocolatey\lib\opencover.portable\tools'
Chocolatey installed 1/1 packages. 
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Did you know the proceeds of Pro (and some proceeds from other
 licensed editions) go into bettering the community infrastructure?
 Your support ensures an active community, keeps Chocolatey tip-top,
 plus it nets you some awesome features!
 https://chocolatey.org/compare
choco install codecov
Chocolatey v0.11.3
Installing the following packages:
codecov
By installing, you accept licenses for the packages.
Progress: Downloading codecov 1.13.0... 100%
codecov v1.13.0 [Approved]
codecov package files install completed. Performing other installation steps.
Extracting 64-bit C:\ProgramData\chocolatey\lib\codecov\tools/codecov-win7-x64.zip to C:\ProgramData\chocolatey\lib\codecov\tools...
C:\ProgramData\chocolatey\lib\codecov\tools
 ShimGen has successfully created a shim for codecov.exe
 The install of codecov was successful.
  Software installed to 'C:\ProgramData\chocolatey\lib\codecov\tools'
Chocolatey installed 1/1 packages. 
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
dotnet --version
5.0.403
dotnet restore
  Determining projects to restore...
C:\projects\App\Tests\Common.Tests\Common.Tests.csproj : error NU1403: Package content hash validation failed for System.Collections.NonGeneric.4.3.0. The package is different than the last restore. [C:\projects\App\App.sln]

appveyor.xml

version: '1.0.{build}'
image: Visual Studio 2019
branches:
  only:
  - master
init:
  - cmd: git config --global core.autocrlf true
install:
before_build:
  - choco install opencover.portable
  - choco install codecov
  - cmd: dotnet --version
  - cmd: dotnet restore
build_script:
  - cmd: dotnet build --configuration Release --no-restore
test_script:
  - cmd: dotnet test  --configuration Release --no-build --no-restore --verbosity minimal --test-adapter-path:. --logger:Appveyor /p:CollectCoverage=true /p:CoverletOutput=TestResults/ /p:MergeWith="../TestResults/coverage.json"  /p:CoverletOutputFormat=lcov
cache:
  - '%USERPROFILE%\.nuget\packages -> **\project.json'
  - C:\ProgramData\chocolatey\bin -> appveyor.yml
  - C:\ProgramData\chocolatey\lib -> appveyor.yml
deploy: off

【问题讨论】:

  • 是公共项目吗?如果没有,你能做一个回购吗?尝试从缓存中删除 %USERPROFILE%\.nuget\packages 并在 dotnet restore 之前将其删除。
  • 我删除了%USERPROFILE%,但没有删除help much
  • 问题可能出在包含该哈希的 packages.lock.json 文件中。我不确定为什么 AppVeyor 构建工作人员上的 NuGet 会获得不同的哈希值。尝试在恢复之前删除锁定文件,看看是否有帮助:Get-ChildItem .\ -include packages.lock.json -Recurse | foreach ($_) { remove-item $_.fullname -Force }
  • 我试过了,它有帮助,但看起来 nuget 缓存在 appveyor 中效果不佳。

标签: appveyor


【解决方案1】:

Feodor 的建议下,我添加了删除package.lock.json 文件的powershell 脚本,它起作用了。

before_build:
  - choco install opencover.portable
  - choco install codecov
    - ps: >-
        Get-ChildItem .\ -include packages.lock.json -Recurse | foreach ($_) { remove-item $_.fullname -Force }
  - cmd: dotnet --version
  - cmd: dotnet restore

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2018-12-21
    • 2018-03-23
    • 2021-12-15
    • 2014-09-19
    相关资源
    最近更新 更多