Как отключить «транзитивное управление пакетами» для проекта Visual Studio - PullRequest
0 голосов
/ 25 марта 2020

Как отключить «транзитивное управление пакетами»?

Я хочу sh, чтобы я мог установить пакет, который я «упаковал» локально и поместил в файл .nupkg. Когда я пытаюсь это сделать, я получаю сообщение о том, что Параметр 'Source' не учитывается для проектов, основанных на управлении переходными пакетами {файл csproj}. Будут использоваться разрешенные источники в вашей конфигурации NuGet.

Полный контекст

При разработке пакета NuGet, который не готов для распространения через наш канал NuGet, я часто создаю локальный .nupkg. Файл, подобный этому, из консоли диспетчера пакетов:

пакет nuget {путь-к-csproj-файлу}

Это создает файл {project-name} .nupkg, который я затем могу установить в другой проект, открыв его в Visual Studio, перейдя в консоль диспетчера пакетов и введя команду

Install-Package {path-to-nupkg-file}

. Это отлично сработало, и как только пакет NuGet будет готов к распространению, мы наберем sh Azure DevOps, и пусть конвейер сборки отправит его в наш фид sh.

Однако я только недавно унаследовал проект, в котором предыдущий разработчик, по-видимому, настроил «транзитивное управление пакетами», которое предотвращает этот рабочий процесс. Вот что я получаю, когда пытаюсь установить напрямую из файла .nupkg:

Install-Package C:\Users\Josh\source\repos\SpeakerDiscountManager\SpeakerDiscountData.1.0.5.nupkg
The 'Source' parameter is not respected for the transitive package management based project(s) MembershipApplicationWidget\MembershipApplicationWidget.csproj. The enabled sources in your NuGet configuration will be used. 
<snipped several lines of unsuccessfully searching configured package sources>
Install-Package : NU1102: Unable to find package SpeakerDiscountData with version (>= 1.0.5)

Очевидно, что он не находит пакет, который я указал через файл, потому что он ищет онлайн-фиды и не не существует ни в одном из наших сетевых источников пакетов - пакет находится в состоянии тестирования, не готов для использования кем-либо, кроме меня.

На основании сообщения об ошибке мне нужно отключить "транзитивное управление пакетами msgstr "чтобы я мог указать источник файла для пакета, но я не смог найти в сети какую-либо информацию о том, как это настроено.

Я пытался установить точно такой же файл .nupkg в другом проекте с использованием той же процедуры Install-Package {path-to-nupkg-file}. Это работает.

1 Ответ

1 голос
/ 26 марта 2020

Как отключить «транзитивное управление пакетами» для проекта Visual Studio

Я думаю, что эта проблема transitive package management связана с вашей текущей структурой проекта, которая имеет некоторые сложные зависимости, пользовательские правила и так далее. Поэтому , отключение transitive package management нецелесообразно. Если вы создаете другие проекты и затем устанавливаете этот пакет по-своему, я думаю, что, вероятно, этого не произойдет.

Как лучший обходной путь , как вы сказали (подсказка из сообщения The enabled sources in your NuGet configuration will be used. ), добавьте локальный путь пакета nuget в источник пакета Nuget.

На вашей стороне , я думаю, вы указываете -Source xxxxx(the path of the nuget package) для установки этого пакета в package manager console, если это так, эта функция на самом деле неудобна.

Вы можете просто добавить путь к папке, в которой находится SpeakerDiscountData.1.0.5.nupkg, в глобальный источник пакета nuget . После того, как вы это сделаете, он будет применяться ко всем проектам на этом компьютере.

Он имеет два способа:

1) VS IDE UI

Tools -> Options -> NuGet Package Manager -> Packages Sources -> добавить новый ключ и ввести путь к папке nuget. Кроме того, проверьте его опцию.

2) глобальный файл NuGet.Config

(C:\Users\xxxx\AppData\Roaming\NuGet\Nuget.Config и шаг 1 просто добавьте путь в этот файл VS UI Control)

добавьте:

<packageSources>
    <add key="Local Packages Source" value="C:\Users\Josh\source\repos\SpeakerDiscountManager\" />
..........
</packageSources>

После этого , вы можете использовать вашу команду для установки этого пакета nuget.

Примечание : если в каталоге root вашего решения также есть файл с именем nuget.config, параметры в нем переопределяют глобальный файл. Он имеет самый высокий приоритет.

enter image description here

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