Проблема
nuget restore
не скачивает пакеты с PreRelease-версиями.
Nuget опирается на packages.config, который постепенно заменяется на PackageReference (Visual Studio 2017 версии 15.7 и более поздние https://docs.microsoft.com/ru-ru/nuget/consume-packages/migrate-packages-config-to-package-reference).
Вот немного про миграцию в сторону PackageReference: https://docs.microsoft.com/ru-ru/nuget/consume-packages/migrate-packages-config-to-package-reference
Вот тут: https://docs.microsoft.com/ru-ru/dotnet/core/tools/dotnet-restore сказано, что “ .NET не использует файл packages.config. Вместо этого он использует элементы <PackageReference> для пакетов NuGet.”
nuget предполагает, что prerelease пакеты не используются при сборке Release. А чтобы можно было собрать Release с prerelease пакетами нужно либо иметь их в локальном кеше, либо - явно указывать в cproj файлике с помощью конструкции:
<ItemGroup> <PackageReference Include="Gems.ServiceBus.Emitting" Version="3.7.12-DC-0-more-tracing-dev.2" /> </ItemGroup>
То есть, чтобы nuget restore корректно обработал prerelease-пакеты, нужно в cproj заменить:
<ItemGroup> <Reference Include="Contour, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\..\packages\Contour.3.0.0-pr8\lib\netstandard2.0\Contour.dll</HintPath> </Reference> <Reference Include="Gems.ServiceBus.Emitting, Version=3.7.11.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\..\packages\Gems.ServiceBus.Emitting.3.7.11.0\lib\netstandard2.0\Gems.ServiceBus.Emitting.dll</HintPath> </Reference> </ItemGroup>
на
<ItemGroup> <PackageReference Include="Contour" Version="3.0.0-pr8" /> <PackageReference Include="Gems.ServiceBus.Emitting" Version="3.7.12-DC-0-more-tracing-dev.2" /> </ItemGroup>
https://github.com/NuGet/Home/issues/6196
https://github.com/NuGet/Home/issues/2944
При этом, nuget ведет себя довольно странно. Он отказывается находить данный пакет:
nuget search -PreRelease Gems.ServiceBus.Emitting
Но при этом - нормально устанавливает:
nuget install -Version 3.7.12-DC-0-more-tracing-dev.2 -PreRelease Gems.ServiceBus.Emitting -OutputDirectory ./packages/
Discussion