Использование Nuget в среде разработки - лучшие практики/как
Попытка выяснить, как использовать Nuget в среде разработки для управления нашими собственными библиотеками.
Мы хотим стандартизировать Nuget для того, чтобы делать что-то для наших сторонних библиотек, но также хотели бы использовать Nuget для управления нашими внутренними библиотеками утилиты, для разработчиков, потребляющих встроенные библиотеки, это здорово и все рады. Тем не менее, для разработчиков, активно работающих над утилитой lib, это кажется более проблематичным, их предыдущий процесс сборки lib, build main app, F5 и go теперь замедляется с публикацией и обновлением и потенциально большим количеством пакетов, не говоря уже о том, стонать о дополнительном процессе!
Мы используем TDD во внутренних libs, но каждый должен иметь возможность отлаживать и изменять библиотеки вместе с основным приложением, видел демо-версию Phil Haacks на отладочных пакетах в 1.3 и читал блог Дэвида Эббоса, но это соответствует разному сценарию.
Итак, каков наилучший процесс для циклов dev/debug? если использовать Nuget, тогда нам нужно принять существующие ограничения или использовать гибридную практику, которые люди используют, и, возможно, 1.3 приближается к автоматизации всего этого, или мы просто избегаем Nuget для внутренних пакетов, что было бы настоящим позором.
Любящего Нугета, возможно, желая многого от маленького парня, отзывы были оценены.
Спасибо
Ответы
Ответ 1
Я предлагаю вам использовать отдельные сетевые ресурсы или каналы (аналогично myget.org поддерживает в облако) для разных сценариев.
Вы могли бы представить себе создание доли CI, доли QA, доли релизов,...
Заставить людей, работающих в библиотеке ссылок, создавать CI-сборки, которые, например, отбрасывают пакеты CI в репозитории CI, а также получать их от других проектов (которые просто должны сделать простое обновление, могут быть автоматизированы с помощью PowerShell в pre- build: проверьте новую версию, если да, обновите).
Просто убедитесь, что когда продукты выпускают свои вехи, они также выпускаются с выпущенными зависимостями (может быть так же просто, как переключение каналов, выпуски всегда будут иметь более высокий номер версии, чем сборки CI).
Надеюсь, что это поможет!
Ура,
Xavier
Ответ 2
Если вы одновременно работаете над исходным кодом для lib и основного приложения, я бы сказал, что NuGet, вероятно, не очень хорошее решение. Я думаю, что это будет работать только в ситуациях, когда вы работаете со "стабильной" версией библиотеки, которую не нужно часто менять при разработке основного приложения.
Тем не менее - возможно ли, что разработка в вашей библиотеке может быть выполнена изолированно? Вы уже упоминаете, что вы делаете TDD в lib, поэтому почему эта работа не может быть выполнена, затем построена, развернута, а затем основная работа над проектом?
Ответ 3
Я согласен с тем, что Nuget не лучший подход, если вы используете несколько ветвей в вашем репозитории управления версиями.
Я сделал след в этом и не смог найти, как вы автоматически переключаете каналы и получаете последние пакеты Nuget для проекта без каких-либо накладных расходов.
У нас есть три ветки в TFS, которые следуют и гибкий процесс.
Как я вижу, что он работает:
Если разработчики разрабатывают ветку dev и обновляют фид Nuget, мы затем объединяемся с ветвью INT во время выпуска. Существует автоматизированный процесс сборки, но проекты с кодами должны быть в состоянии сказать, что есть обновление для пакетов, поэтому я внедрил обновление и установил шаг предварительной сборки в проектах. Теперь проблема заключается в том, что проект всегда обновляется, и существует риск того, что любая сборка, которая произойдет, всегда будет тянуть последний пакет nuget, даже если вы этого не хотите.
Я не могу понять, как вы программно выбираете, когда обновлять пакет или нет.