В настоящее время я пишу большую коллекцию библиотек в C#, которые могут полагаться друг на друга и иметь зависимости.
До сих пор я строил нюги локально и обновлял их вручную. Я планирую опубликовать sh библиотеки как nuget и автоматизировать процесс сборки через конвейеры jenkins.
Решение C# в настоящее время выглядит следующим образом (пример):
На данный момент каждый проект представляет собой нюгет. Поскольку msbuild не включает зависимые проекты в nuget, ProjectBContracts.csproj
является автономным nuget с одной зависимостью ProjectBImplemntation.csproj
.
- Вопрос: Следует ли всегда отделять интерфейсы от реализации в проекте с отдельными контрактами (Я научился так, чтобы реализацию можно было легко заменить) или имеет смысл помещать все, что не используется где-либо еще, в один проект при публикации нюгетеров? Есть ли хорошие примеры или рекомендации, как структурировать такой проект?
Для автоматизации с Jenkins мне пришлось бы создать отдельный файл Jenkins для каждого проекта (проекты расположены в отдельных папках) и настроить сервер Jenkins соответственно.
- Вопрос: Имеет ли смысл создавать отдельный репозиторий для каждого проекта / nuget и, следовательно, только одно задание Jenkins для каждого репозитория? У кого-нибудь есть решение для обеспечения порядка сборки в случае одного репозитория, когда изменилось несколько проектов?
Спасибо за ответы и полезные ссылки. К сожалению, я не смог найти правильные ответы на свои вопросы с помощью поиска rnet.