Как упаковываются зависимости проекта NuGet, когда должен быть упакован сам проект? - PullRequest
0 голосов
/ 23 декабря 2018

Фон : у меня есть класс ведения журнала, который представляет собой уровень абстракции для NLog.Он изначально использовал NLog v1.0.0.505, когда класс был написан, и теперь мы обновили NLog до v4.4.12 с некоторыми обновлениями в классе.

Некоторые из запущенных приложений были предназначены для получения этого обновленного класса, а остальные должны были продолжать использовать более старую версию.Теперь мы пытаемся реализовать это плавно, используя NuGet для создания и управления версиями этого класса в качестве зависимости для других проектов.Однако, здесь мы немного застряли:

Проблема : Сам пакет NuGet не содержит соответствующей версии NLog, он просто содержит встроенную DLL класса, вот и все.Итак, как можно быть уверенным, что конкретная версия этого использует требуемую версию NLog?

Это также можно обобщить для любого проекта с несколькими зависимостями NuGet.

Что я пробовал : Все равно создал эти пакеты локально и попытался добавить их в проекты.Единственное, что было добавлено, - это просто отдельные библиотеки DLL, ничего больше, ни NLog, что только усугубило мое замешательство.

1 Ответ

0 голосов
/ 23 декабря 2018

Пакет Nuget будет содержать файл .nuspec, в котором указаны зависимости, которые у него есть.Поскольку файл nupkg на самом деле является просто переименованным zip-файлом, вы можете открыть его и заглянуть внутрь.Если мы выберем случайный пакет из Nuget, например GraphQL , мы увидим, что GraphQL.nuspec внутри содержит элемент <dependencies>, а если мы выберем раздел targetFramework=".NETStandard2.0", он будет выглядеть следующим образом:

<group targetFramework=".NETStandard2.0">
  <dependency id="GraphQL-Parser" version="3.0.0" exclude="Build,Analyzers" />
  <dependency id="Newtonsoft.Json" version="10.0.3" exclude="Build,Analyzers" />
  <dependency id="System.Buffers" version="4.5.0" exclude="Build,Analyzers" />
  <dependency id="System.Reactive.Core" version="3.1.1" exclude="Build,Analyzers" />
  <dependency id="System.Reactive.Linq" version="3.1.1" exclude="Build,Analyzers" />
</group>

Обратите внимание, что версия пакетов также указана здесь.Все эти версии указывают на то, что они будут работать с данным данным и с чем угодно больше .Если вам нужно было указать точную версию, вы можете заключить число в квадратные скобки, например, [10.0.3]

Вы можете увидеть различные способы указания версии в документах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...