#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 это блестящая идея ! Я уверен, что это ответ — не могли бы вы опубликовать его как ответ, и я добавлю более подробную информацию, почему это ответ ?