У меня два репозитория, и мне нужны скомпилированные библиотеки из одного репозитория в другой. Я не хочу вручную проверять repo1 на наличие обновленных библиотек и копировать / фиксировать в repo2, потому что это глупо. У меня есть repo1, который собирает пакеты NuGet для каждой сборки необходимых библиотек и публикует их на внутреннем сервере NuGet. Затем проекты в repo2 могут ссылаться на эти пакеты NuGet, и все (почти) работает.
Последнее препятствие на пути к этому — автоматическое обновление пакетов NuGet в проектах repo2. Поскольку я не знаю, когда будут обновлены библиотеки в репо1 (и мне не должно было этого делать), я хотел бы какое-то событие сборки для проектов в репо2, которое автоматически обновит пакеты NuGet. В настоящее время у меня просто есть событие перед сборкой, но поскольку файлы packages.config содержат номер версии установленного пакета, я продолжаю получать измененные файлы в repo2 (файлы packages.config обновляются).
Итак, мой вопрос: какой хороший способ автоматически обновлять пакеты NuGet, не разрушая мою VCS repo2? ScottGu говорит: Здесь (в комментариях), что можно подключить обновления пакетов до сборок CI, но он не уточняет, как и мое текущее решение является беспорядочным. Есть ли встроенный способ, который мне не хватает? Или какие-нибудь лучшие обходные пути?
Будь осторожен. Библиотеки могут измениться и сломать ваше программное обеспечение. blog.heroku.com/archives/2011/6/28/ — person themilkyninja schedule 27.03.2012
Для этого и предназначен наш автоматизированный набор тестов — person themilkyninja schedule 28.03.2012
@themilkyninja Вы когда-нибудь находили решение? Я столкнулся с той же проблемой. — person themilkyninja schedule 25.03.2013
Неа. В итоге мы пропустили NuGet и сделали это вручную. Однако сейчас у нас есть до 4 разных зависимостей, поэтому мы собираемся снова настроить все элементы NuGet и просто вручную создавать пакеты, когда что-то изменится. — person themilkyninja schedule 29.05.2013
Так что, если … на одном из этапов сборки есть сценарий для анализа версии из фида пакета (например, this), а затем измените соответствующую версию пакета в package.config
? — person themilkyninja schedule 29.01.2021
docs.microsoft.com/en-us/ nuget / reference / cli-reference / — person themilkyninja schedule 31.01.2021
Вероятно, вы могли бы использовать функцию восстановления пакета NuGet (немного информации здесь: https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages)
При сборке проекта он вызывает «nuget.exe -install» для переустановки пакетов из packages.config. Я не пробовал, но вы можете таким же образом добавить команду обновления в файл nuget.targets. (Вам нужно будет вызвать как обновление nuget.exe, так и существующую установку nuget.exe).
Я изучил это и восстановил пакеты только в папку пакетов уровня решения (а не в фактический проект). Я также не хочу проверять файлы в проекте, и ни
nuget.exe update
, ниnuget.ext install
не возвращают все файлы обратно в проект. В основном я ищу эту функцию — person themilkyninja; 28.03.2012Вы можете изменить свой файл .cspoj для выполнения цели «BeforeBuild» следующим образом:
Обратите внимание: вам понадобится «Nuget.exe» в каталоге вашего решения.
Это не так просто, как добавить его на этапах перед сборкой. На самом деле это уже слишком поздно: stackoverflow.com/questions/15027256/ — person themilkyninja; 13.09.2017
Это объясняет, как это сделать через MSBuild.
https://netitude.bc3tech.net/2014/11/28/auto-update-your-nuget-packages-at-build-time/.