Nuget Restore создает папку пакетов в другом месте - PullRequest
0 голосов
/ 10 января 2020

У меня есть решение A, которое содержит библиотеку классов, у него есть package.config. Когда я использую опцию Nuget Restore, она корректно воссоздает папку пакета и ссылки в порядке. Проблема возникает, когда в другом решении B я добавляю проект A, и когда я пытаюсь восстановить Nuget, он создает папку пакетов в каталоге решения B, и проект A не может найти отсутствующие ссылки. Как я могу сделать решение B для восстановления пакетов, необходимых для проекта A в каталоге проекта A?

1 Ответ

0 голосов
/ 11 января 2020

TL; DR: попробуйте запустить Update-Package -Reinstall из консоли диспетчера пакетов.

Единственный способ, которым я знаю, чтобы это произошло, - это когда проект, использующий packages.config для NuGet Ссылки перемещаются в новый каталог с другим относительным путем к решению. packages.config - это в основном «неинтегрированное» управление пакетами. Любой, кто использует. NET с самого начала, вспомнит, когда не было NuGet, и вам нужно будет добавить ссылки на сборки непосредственно в dll. packages.config автоматизирует это, но означает, что при изменении пути к папке с пакетами решений ссылки больше не действительны. NuGet не знает об этом и всегда восстанавливает папку с пакетами решений. Итак, вам нужно обновить проект, чтобы он правильно указывал на папку пакетов решений. Вы можете сделать это вручную, отредактировав файл проекта, удалив и переустановив все пакеты один за другим, или используйте PM C 'Update-Package, чтобы сделать это.

PackageReference hasn' Эта проблема не возникает, поскольку путь к восстановленным пакетам не сохраняется в проекте, поэтому, даже если ваш проект перемещается, в худшем случае все, что вам нужно сделать, это восстановить снова, но часто даже в этом нет необходимости. Итак, я рекомендую вам перейти с packages.config на PackageReference, если вы можете, но посмотрите документы, потому что есть проблемы совместимости пакетов, о которых нужно знать. В основном, если вы используете пакеты с контентом, который копируется в ваш проект при установке, вам нужно придерживаться packages.config. В противном случае PackageReference дает лучший опыт почти всем остальным.

...