Способ управления такими вещами в моей организации заключается в создании пакета NuGet для каждого из этих общих «исходных» проектов (например, в нашем случае у нас есть библиотека регистрации ошибок, библиотека утилит XML, сделанный на заказ HTTP-клиент, и другие).Они публикуются по нашему частному URL-адресу фида NuGet (размещенному в DevOps Azure, но вы можете просто использовать стандартный файловый ресурс Windows при необходимости), чтобы наши разработчики могли использовать их в своих приложениях.
Это имеет некоторые явные преимущества перед вашим подходом:
1) Зависимости - это, кажется, наиболее актуально для вашего вопроса.Если проект, из которого вы создали пакет NuGet, зависит от любых других пакетов NuGet (общедоступных или других из нашего частного канала), то, когда кто-то устанавливает этот пакет в свой проект, он автоматически устанавливает все остальные пакеты, от которых зависит.
Таким образом, в вашем случае вы могли бы создать пакет оболочки "libs", который не доставляет сам контент, но имеет зависимости от всех остальных ваших пакетов, в результате чего они устанавливаются автоматически.В нашем случае у нас есть несколько случаев зависимости (например, «базовый» пакет регистрации ошибок, на который опираются модули обработки ошибок, адаптированные к различным типам приложений, например, MVC, Web API, Windows Services), и он работает очень хорошо.
2) Обновления и обслуживание.В вашем сценарии, если вы вносите критические изменения в один из ваших «исходных» проектов, то, поскольку у вас есть прямая ссылка на проект, объявленная в Visual Studio, любой проект, который ссылается на исходный, должен будет внести соответствующие изменения, чтобы справиться с обновлениями.в исходный проект, прежде чем вы сможете перекомпилировать его и выполнить любые изменения функций, которые вы пытаетесь достичь.Это может быть болью и несвоевременной проблемой, особенно в случае серьезных обновлений.Однако, если вместо этого вы установите пакет NuGet, содержащий эти функции, разработчик приложения может выбрать, устанавливать ли и когда обновленную версию пакета.
Есть и другие незначительные преимущества, которые я не буду использовать.в, но есть несколько очень веских причин, почему почти все основные языки программирования теперь предоставляют аналогичные функциональные возможности «пакет» и «канал» в качестве способа управления зависимостью от внешних проектов и библиотек.Я считаю, что ваш подход устарел и наивен, что приводит к проблеме, которую вы описали, а также к возникновению других раздражителей.