Использование NuGet для внутренних и внешних зависимостей в TFS
В настоящее время я смотрю на NuGet для решения моих проблем с зависимостями в TFS, и то, что я хотел сделать, это разместить собственный сервер NuGet, который будет заботиться о внутренних зависимостях. Я также хочу использовать NuGet для обработки зависимостей сторонних разработчиков. Я пытаюсь настроить автоматические сборки для нашей компании, и это один пробный блок, который я пытаюсь преодолеть с помощью NuGet.
Итак, мой вопрос заключается в том, как мне обрабатывать этот сценарий, в котором я должен получать свои зависимости с разных серверов?
Есть ли лучший способ обработки внутренних зависимостей? Как все это делают?
Также, как примечание, я намереваюсь использовать NuGet без передачи пакетов в TFS. Я планировал использовать схему метода в этой статье:
http://blog.davidebbo.com/2011/08/easy-way-to-set-up-nuget-to-restore.html
Ответы
Ответ 1
Рад, что вы просматриваете сценарий no commit для пакетов NuGet в TFS. Вы можете взглянуть на мой пост в блоге по этой теме, где я объясняю концепцию.
EDIT (2012/06/13): NuGetPowerTools заменяется встроенной функцией восстановления пакета NuGet. Однако такая же концепция изменения элемента PackageSources в nuget.targets по-прежнему применяется.
Вы определенно должны взглянуть на Дэвида Фаулера NuGetPowerTools.
После установки этого пакета вы можете Enable-PackageRestore (недавно установленная команда в консоли диспетчера пакетов), которая добавит...
Включение восстановления пакета добавит цели MSBuild к вашим файлам проектов. Эти цели MSBuild будут запускать nuget.exe на этапе предварительной сборки и получать любые пакеты, необходимые вашему проекту.
Нет необходимости проверять пакеты NuGet в исходном управлении, все, что вам нужно, это package.config и эти задачи msbuild.
Чтобы настроить несколько разных источников пакетов, вам необходимо установить некоторые параметры, которые будут использоваться этими задачами MSBuild. Один из них - PackageSources. Вы можете установить его, отредактировав файл NuGet.targets, который вы найдете в папке .nuget после того, как вы включили восстановление пакета.
Что касается этих источников пакетов, вы можете настроить различные внутренние галереи NuGet или просто настроить различные сетевые ресурсы, которые будут использоваться. Это вопрос требований и предпочтений, поэтому вы можете выбрать. Все, что вам нужно сделать, - указать ваши цели msbuild для использования этих пакетов. Порядок, в котором вы их определяете, будет также порядком поиска пакетов.
Удачи!
Xavier
Ответ 2
Небольшое обновление принятого ответа и вопроса:
При использовании TFS как buildmachine без визуальной студии, установленной на нем, вы можете сделать следующее, чтобы buildmachine автоматически использовала ваши пользовательские пакеты (более одного в одном решении) без дополнительной настройки пакетов в вашем решении.
-
Создайте конфигурацию по умолчанию для компьютера, разместив NuGet.Config в корневом каталоге (C:\NuGet.Config), используя образец из: http://docs.nuget.org/docs/reference/nuget-config-file
-
Прокомментируйте строку с помощью: <add key="repositorypath" value="$\External\Packages" />
В противном случае ваши пакеты будут расширены в C:\$\ External\packages \. Когда вы закомментируете, конфиг получает цепочку и будет использоваться правый каталог.
-
Конфигурируйте необходимые пакеты (ы).
Подробнее о других параметрах (например, userpecc) см.: http://docs.nuget.org/docs/reference/nuget-config-file (внизу страницы).