Как правильно использовать NuGet с Team Development? - PullRequest
13 голосов
/ 09 декабря 2011

Поэтому я хотел бы использовать NuGet для управления различными проектами, которые я использую для конкретного проекта, над которым работаем моя команда и я.До этого момента я помещал свои файлы библиотеки .js в каталог / Scripts моего веб-решения (ASP.NET MVC 2) и ссылался на них.Конечно, это было ручное управление, и было неудобно управлять во время обновлений и т. Д.

Теперь, когда я использую NuGet, я понимаю, что вся цель NuGet - сделать это довольно безболезненно.Кроме того, похоже, что мне не нужно проверять свои пакеты в моем хранилище (AKA, мне больше не нужно управлять внешними библиотеками).Однако, когда я беру jQuery (например) из NuGet, он помещает свои конкретные файлы в каталог / Scripts моего проекта.

Где я запутался - что, если что-то, я должен проверить в управлении исходным кодом вэта точка?Я все еще проверяю каталог / Scripts?

Кроме того, если кто-то еще работает над этим проектом и проверяет решение из системы контроля версий, автоматически ли загружаются пакеты (при условии, что решение поставляется с действительными пакетами).config)?

Я просто пытаюсь уточнить пару моментов, прежде чем мы начнем использовать NuGet полный рабочий день.

Ответы [ 2 ]

13 голосов
/ 09 декабря 2011

Есть два сценария для NuGet против VCS: регистрироваться или не регистрироваться, вот в чем вопрос.По моему мнению, оба действительны, но при использовании TFS в качестве VCS я бы определенно выбрал политику no-checkin для пакетов NuGet .

При этом даже при использовании no-проверить политику для пакетов NuGet, я бы по-прежнему проверял изменения содержимого, которые эти пакеты NuGet внесли в мои проекты.Папка \Scripts будет проверена полностью (не выборочно, не проигнорировано).

Политика отсутствия регистрации пакетов для меня означает: не проверять папку \ Packages ( скрыть , игнорировать ее), за исключением файла \Packages\repositories.config.

Таким образом, вы фактически не фиксируете какие-либо пакеты NuGet, а при использовании Enable-PackageRestore из NuGetPowerTools (это будет встроено в NuGet v1.6 прямо за углом) - любую машину, которая проверяет код и собирает, получит все необходимые зависимости NuGet на этапе предварительной сборки.Это справедливо как для локальных машин разработки, так и для серверов сборки, если в вашем решении включен Enable-PackageRestore и он указывает на правильные репозитории NuGet (локальные, внутренние, внешние).

Если вы об этом думаетепри установке пакета NuGet, который добавляет ссылки только на некоторые двоичные файлы, вы уже выполняете то же самое в сценарии без регистрации: вы не будете фиксировать подпапки папки \Packages, но все же вы будете фиксировать изменения проекта(добавленная ссылка).

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

1 голос
/ 09 декабря 2011

NuGet , как и Nexus , являются хранилищем артефактов (артефактом является любой тип доставляемых материалов, включая потенциально большой двоичный файл).

Побочный эффект для васне хранить в VCS (системе контроля версий) элементы, которые:

  • не получат преимущества от функций VCS (ветвление, объединение)
  • значительно увеличит размер хранилища VCS(без разностного или слабого разностного хранилища)
  • было бы довольно трудно удалить из хранилища VCS (предназначенного в основном для хранения истории)

Но цель для вас объявить , что вам нужно (и позволить NuGet получить его для вас) вместо хранения это самостоятельно.
Таким образом, вы можете версию /Scripts в качестве заполнителя, но вам больше не нужно, чтобы версионирование любого из его содержимого теперь происходило автоматически.

...