Восстановление пакета NuGet * без * изменения каждого проекта в решении для импорта задачи NuGet.targets MsBuild - PullRequest
3 голосов
/ 03 апреля 2012

Восстановление пакета NuGet представляется правильным способом объединения NuGet с контролем версий (в моем случае TFS), например, в в этом ответе и в первом комментарии к это закрытый вопрос . NuGet Package Restore позволяет решению, полученному из системы управления исходным кодом и построенному на другом компьютере разработчика, автоматически получать нужные пакеты NuGet.

Чтобы добавить восстановление пакета NuGet в решение, щелкните правой кнопкой мыши решение и выберите Включить восстановление пакета NuGet . Это «добавило папку решения с именем .nuget, содержащую NuGet.exe и файл NuGet.targets MsBuild. Она также изменила каждый проект в решении для импорта задачи NuGet.targets MsBuild». (Цитата из http://docs.nuget.org/docs/Workflows/Using-NuGet-without-committing-packages). Но некоторые проекты в решении, над которым я работаю, являются служебными проектами, совместно используемыми различными решениями и разными разработчиками, и они не требуют ссылок, обрабатываемых NuGet.

Как включить восстановление пакета NuGet, но исключить определенные проекты в решении из настройки задачи сборки NuGet?

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

В настоящее время восстановление пакета NuGet имеет некоторые ограничения и не может быть ограничено конкретными проектами.Существует существующий рабочий элемент NuGet, который сделал бы это возможным: # 1812 - Включить восстановление пакета - Выборочные проекты

Прокомментируйте / проголосуйте за него, чтобы поднять приоритет, так как он в настоящее время задекларирован.

Примечание: на первый взгляд, файлы .csproj имеют свойство поддерживать отключение восстановления пакета NuGet, но из-за другой проблемы он продолжает включаться: командная строка NuGet вызывает восстановление пакета

1 голос
/ 20 июня 2012

На шаге PreBuild первого создаваемого проекта можно запустить скрипт, который просматривает все файлы packages.config и загружает их содержимое.Вам нужно звонить

.nuget/nuget.exe install "....\packages.config" -o "packages"

с вашего $(SolutionDir) за каждый packages.config в вашем решении.

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

На моем сервере сборки я использую это (оболочка)фрагмент:

find -iname packages.config -print0 | xargs -0 -ti mono --runtime=v4.0.30319 .nuget/nuget.exe install {} -o "packages"
...