Nuget не удается получить неверный пакет

#c# #nuget

Вопрос:

Во время сборки конвейера CI/CD на Github я запускаю скрипт Powershell, который извлекает и устанавливает различные пакеты Nuget, а затем копирует libnet461* файлы в целевые папки. Я столкнулся с очень серьезной ошибкой (?) с Nuget, которую я даже не знаю, как ее отладить:

Nuget пытается извлечь пакет, который не определен, а затем терпит неудачу при ограничениях. Вот результат:

 PS C:Projectsgt; nuget.exe install CustomerSimulator -Version 1.0.7982.10992 -PreRelease -OutputDirectory C:Temp_125 Feeds used:  C:Usersjjasper22.nugetpackages  https://api.nuget.org/v3/index.json  C:Program Files (x86)Microsoft SDKsNuGetPackages  https://other/nuget/repository/1  https://other/nuget/repository/2  Attempting to gather dependency information for package 'CustomerSimulator.1.0.7982.10992' with respect to project 'C:Temp_125', targeting 'Any,Version=v0.0' Gathering dependency information took 30.16 sec Attempting to resolve dependencies for package 'CustomerSimulator.1.0.7982.10992' with DependencyBehavior 'Lowest' Unable to find a version of 'Remotion.Linq' that is compatible with 'NHibernate 5.3.10 constraint: Remotion.Linq (gt;= 2.2.0 amp;amp; lt; 3.0.0)', 'Remotion.Linq.EagerFetching 2.2.0 constraint: Remotion.Linq (gt;= 2.2.0)'. PS C:Projectsgt;  

Я 20 раз проверял, что NHibernate версии 5.2.0 определяет везде — я не использую версию 5.3.10 ни в одном проекте.

—gt; Так откуда же взялась эта ссылка на NHibernate 5.3.10 ? gt;—-

Это немного сложный график зависимостей, в который каждый проект может включать группу других проектов.. так что пройти их все нетривиально, но я очень убедился, что более низкая версия NHibernate (5.2.0) используется везде.

PS Версия Nuget 5.11.0.10, C:Temp_125 = пустая временная папка, созданная только для целевой install команды nuget


Странный факт 1: Во время бега nuget install таким образом:

 nuget.exe install CustomerSimulator -Version 1.0.7982.10992 -PreRelease -OutputDirectory C:Temp_125 -Framework net461  

с -Framework net461 параметром — не жалуется на ограничения, но устанавливает/загружает только CustomerSimulator проект без каких-либо зависимостей.


Странный факт 2: -Framework net461 параметр может быть установлен как -Framework .NETFramework4.6.1 , и он работает на моем компьютере, но не работает (неизвестная версия фреймворка) в Github Windows 2019 builder….

Комментарии:

1. Возможно ли, что один из пакетов в вашем графике объявил NHibernate 5.3.10 один раз в прошлом? NuGet считает пакеты неизменяемыми, поэтому, если одна и та же версия packageid существует в разных каналах с разным содержимым (включая зависимости), ваша сборка будет недетерминированной (если вы не начнете использовать сопоставление исходного кода пакета, добавленное в VS 2022/.NET 6 SDK). Если у вас есть агент devbox или CI, который не стирает папку nuget между сборками, если у него уже установлен «плохой» пакет, то он также покажет такое поведение.

2. @zivkan это блестящая идея ! Я уверен, что это ответ — не могли бы вы опубликовать его как ответ, и я добавлю более подробную информацию, почему это ответ ?