#c# #nuget #teamcity #devops
#c# #nuget #teamcity #devops
Вопрос:
Моя компания использует встроенное репозиторий TeamCity NuGet для создания пользовательских пакетов NuGet, которые часто зависят друг от друга. Когда я, скажем, обновляю страницу .cs в пользовательском родительском пакете, я бы хотел, чтобы эти изменения распространились на все наши пакеты, которые являются зависимыми пакетами родительского пакета — я полагаю, что смогу выполнить это с помощью установщика NuGet для «обновления пакетов».
Я боюсь, что, хотя я знаю, что могу принудительно обновить все наши пакеты, я хочу найти способ исключить все, что не размещено в репозитории нашей компании (что также должно означать все, что размещено на NuGet.org repo), поэтому все, что мы используем из внешнего источника, не включается в это обновление NuGet.
Желательно, я хотел бы знать, есть ли способ справиться с этим в our .nuspec для каждого из наших пакетов (хотя, похоже, подстановочные знаки этого не выполняют). Есть понимание моей проблемы здесь?
Ответ №1:
Честно говоря, это звучит немного так, как будто вы пытаетесь воссоздать эталонный опыт проекта с пакетами NuGet. Если это вообще разумно, возможно, лучшим вариантом было бы объединить все проекты в одном решении и вместо этого использовать ссылки на проекты.
Если вы можете перенести свои проекты в проекты в стиле SDK (используемые .NET Core, но вы все равно можете настроить таргетинг на .NET Framework), тогда вы можете использовать dotnet list package
или dotnet-outdated
инструмент. dotnet list package --outdated
имеет возможность указать список используемых источников. Возможно, если вы укажете только свой личный канал, он может искать только этот. В противном случае скрипту, который вы создаете для выполнения всего этого, потребуется перезаписать nuget.config
файл, чтобы удалить другие источники (например nuget.org ) при выполнении команды для получения желаемого результата. Затем вы анализируете выходные данные, и когда он находит обновление, он изменяет соответствующие файлы.