Разрешение зависимостей Nuget - PullRequest
0 голосов
/ 12 февраля 2019

Используя MsTest.TestAdapter версии 1.4.0 в качестве примера, я пытаюсь понять, как NuGet разрешает зависимости для этого пакета во время установки.

Меня не интересуют подробности о том, какая версия каждого пакетабудет решена, но где эта информация находится.

Если я выполню следующую команду в произвольной папке:

nuget install -source https://api.nuget.org/v3/index.json MSTest.TestAdapter -version 1.4.0

Вы увидите это в концеиз установки будет установлено 50 пакетов.

Предполагая, что это зависимости, разрешенные NuGet, где он получает это дерево зависимостей?Я посмотрел информацию о пакете (nuspec, props, target) и не смог найти никакой подсказки.

Есть идеи?

1 Ответ

0 голосов
/ 13 февраля 2019

Если под «состоянием экспликации» вы подразумеваете тег зависимостей в спецификации nuget, то я должен сказать, что я нацеливаюсь на .NET 4.5, а не на .NETCoreApp1.0.Как это будет работать?

Точно так же, как Лекс сказал «Сам пакет прямо указывает, каковы прямые зависимости», согласно MSTest.TestAdapter , мы могли бы знать зависимостьДерево этого пакета выглядит так:

<dependencies>
  <group targetFramework=".NETCoreApp1.0">
    <dependency id="NETStandard.Library" version="1.6.1" />
    <dependency id="System.Diagnostics.TextWriterTraceListener" version="4.3.0" />
  </group>
</dependencies>

Но если вы выполните команду установки без опции -Framework, nuget восстановит все зависимости этого пакета.По этой причине будет установлено 50 пакетов.

Если вы ориентируетесь на .NET 4.5, вам следует использовать опцию -Framework для указания Framework, например:

nuget install -source https://api.nuget.org/v3/index.json MSTest.TestAdapter -version 1.4.0 -Framework 4.5

Inв этом случае nuget получает только зависимости для .NET 4.5.Проверьте документ команда установки (NuGet CLI) для получения более подробной информации.

Примечание:

Команда установки не изменяет файл проекта или packages.config;таким образом, это похоже на восстановление в том, что он только добавляет пакеты на диск, но не изменяет зависимости проекта.

Чтобы добавить зависимость, либо добавьте пакет через пользовательский интерфейс диспетчера пакетов или консоль в Visual Studio, либоизмените packages.config и затем запустите либо установку, либо восстановление.

Надеюсь, это поможет.

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