структурировать c# библиотечные проекты в слепках и выкладывать решения и репозитории для сборки с помощью jenkins - PullRequest
0 голосов
/ 27 апреля 2020

В настоящее время я пишу большую коллекцию библиотек в C#, которые могут полагаться друг на друга и иметь зависимости.

До сих пор я строил нюги локально и обновлял их вручную. Я планирую опубликовать sh библиотеки как nuget и автоматизировать процесс сборки через конвейеры jenkins.

Решение C# в настоящее время выглядит следующим образом (пример):

  • Sultion. sln
  • ProjectAContracts.csproj
  • ProjectAImplementation1.csproj - зависимость от ProjektAContracts.csproj
  • ProjectAImplementation2.csproj - зависимость от ProjektAContracts.csproj

  • ProjectBContracts.csproj

  • ProjectBImplementation.csproj - Зависимость от `` `ProjectAImplementation1.csproj
  • ProjectC.csproj - Зависимость от ProjectAContracts.csproj и ProjectB.csproj

На данный момент каждый проект представляет собой нюгет. Поскольку msbuild не включает зависимые проекты в nuget, ProjectBContracts.csproj является автономным nuget с одной зависимостью ProjectBImplemntation.csproj.

  • Вопрос: Следует ли всегда отделять интерфейсы от реализации в проекте с отдельными контрактами (Я научился так, чтобы реализацию можно было легко заменить) или имеет смысл помещать все, что не используется где-либо еще, в один проект при публикации нюгетеров? Есть ли хорошие примеры или рекомендации, как структурировать такой проект?

Для автоматизации с Jenkins мне пришлось бы создать отдельный файл Jenkins для каждого проекта (проекты расположены в отдельных папках) и настроить сервер Jenkins соответственно.

  • Вопрос: Имеет ли смысл создавать отдельный репозиторий для каждого проекта / nuget и, следовательно, только одно задание Jenkins для каждого репозитория? У кого-нибудь есть решение для обеспечения порядка сборки в случае одного репозитория, когда изменилось несколько проектов?

Спасибо за ответы и полезные ссылки. К сожалению, я не смог найти правильные ответы на свои вопросы с помощью поиска rnet.

...