Задать вопрос
Viji
@Viji
DevOps Engineer

Как правильно публиковать nuget packages с зависимыми проектами?

Нужно опубликовать nuget package в свой собственный nuget server, в .csproj главного проекта и пакета, включены след дерективы (не показаны все)

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <RootNamespace>System.Hub.Eventbus.Customer.Dotnet</RootNamespace>
    <AssemblyName>System.Hub.Eventbus.Customer.Dotnet</AssemblyName>
    <VersionPrefix>4.0.0</VersionPrefix>
	  <VersionSuffix>-nc-preview-1</VersionSuffix>
    <PackageVersion>4.0.0-nc-preview-1</PackageVersion>
    <Private>false</Private>
    <IsPackable>true</IsPackable>    
  </PropertyGroup>

  <ItemGroup>
    ....
  </ItemGroup>

  <ItemGroup>
    <ProjectReference 
     Include="..\System.Hub.Eventbus.Customer.Dotnet.Common\System.Hub.Eventbus.Customer.Dotnet.Common.csproj" />
  </ItemGroup>
	
</Project>


Пакет появляется на нашем nuget сервере с правильной версией, тем не менее при установке в VS он начинает ругаться что отсутствует др пакет System.Hub.Eventbus.Customer.Dotnet.Common - хотя он включен в качестве references. Как сделать чтобы выпускаемый главный пакет уже включал в себя System.Hub.Eventbus.Customer.Dotnet.Common? Куда копать?
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
1. Ссылаться нужно не на проект, а на другой пакет - тебе тогда надо публиковать 2 отдельных пакета

2. Изменить .csproj так, чтобы в пакете был нужный .dll
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Идеологически пакет - это сущность с конкретикой + список зависимостей.
А пакетный менеджер (nuget) - умеет добывать всю цепочку транзитивных зависимостей.
Главное чтобы они были в одном из доступных репозиториев.

А тех самых транзитивных зависимостей может быть немало. Да ещё каждая со спецификой делёжки на разные среды (netstandard, net.framework, dotnet и т.п.). То бишь в общем случае задача "создать пакет со всеми зависимостями" - сродни задаче "скачать весь интернет".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы