2015-02-07 2 views
2

Я пытаюсь выяснить, a) если я собираюсь сделать это правильно и b) как обновить пакет nuget уровня решения.Обновление уровня решения пакетов nuget в visual studio

Основная проблема заключается в том, что когда пакет установлен на уровне решения (а не в каком-либо конкретном проекте), и вы пытаетесь его обновить, он не удаляет старую ссылку. Он просто добавляет новую ссылку на пакет и импортирует обе версии. Что обычно означает (что работает с модулями PowerShell), что предыдущие модули powershell переопределяют более новые.

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

Кроме того, я не могу установить или удалить пакет уровня решения с консоли. Я должен сделать это с помощью утилиты Manage Nuget Packages, которую я ненавижу использовать.

Вот некоторые фоны на то, что я делаю, если это поможет:

Я настроил систему в нашей компании, используя уровень раствора NuGet пакетов для добавления пользовательских модулей Powershell сценариев к решению, так как а также некоторые более обобщенные сценарии, которые я написал (например, удаление рабочих элементов TFS или изменение имени проекта в файловой системе, а также в коде).

Таким образом, у одного проекта может быть пакет DataServiceUtilities, а у другого - пакет FrontEndUtilities.

Итак, как я могу обновить эти пакеты без добавления двух ссылок? И можно ли выполнять операции уровня решения в консоли диспетчера пакетов, которая всегда по умолчанию использует таргетинг на проект?

ответ

3

Оказывается, что некоторые из них происходят от ошибок в инструментах Package Manager GUI и NuGet вообще

Инструмент Package Manager GUI не обрабатывает обновления правильно для пакетов уровня раствора. Но если вы запустите Update-Package из консоли диспетчера пакетов, он правильно удалит/переустановит пакет уровня решения.

Что касается установки из командной строки, если в пакете есть только папка с инструментами и нет зависимостей, вы можете запустить установку из командной строки, и она устанавливается в решении и игнорирует проект по умолчанию.

Однако на данный момент (Nuget 2.8) у Nuget есть ошибка, из-за чего он обрабатывает пакеты уровня решений с зависимостями от других пакетов уровня решений в виде пакетов уровня проекта. Похоже, что он был около года, и они утверждают, что он будет исправлен в VS 2015. Вы можете увидеть здесь ошибку: https://nuget.codeplex.com/workitem/3642

Это означает, что вы не можете создать пакет уровня решения с ЛЮБЫМИ зависимостями. Обратите внимание, что это законно в соответствии с документацией. Надеюсь, это будет исправлено в следующем году.

* Обновление

Простое обновление. Похоже, что в VS 2015 они устарели (или, точнее, удалены) пакеты уровня решения/инструменты только. После некоторого протеста они также решили перепрограммировать их в будущей версии, но, возможно, это будет некоторое время, прежде чем они это сделают.

о ходе повторной реализации функции можно найти здесь: https://github.com/NuGet/Home/issues/1521

Обсуждения о том, как работать вокруг отсутствующей функции можно найти здесь: https://github.com/NuGet/Home/issues/522

Смежные вопросы