Здесь есть пара (по крайней мере) различных подходов, и вы наверняка могли бы использовать оба. Во-первых, вы можете удалить некоторый общий код в отдельный проект и просто вызвать этот код статически. Это довольно легко сделать, и я иногда использую этот подход с простыми вспомогательными функциями, которые, вероятно, не принадлежат к классу в моем основном проекте - хорошим примером будет математическая библиотека или что-то в этом роде. Другой подход заключается в извлечении общей функциональности в класс или интерфейс, который вы затем наследуете и расширяете. В зависимости от того, какой код вы хотите использовать повторно, вы можете использовать любой из этих подходов (или оба).
Я подозреваю, что вам будет легче, чем вы думаете. Попробуйте сделать это с помощью простого кода, настройте новый проект в том же решении, обратитесь к своей библиотеке из существующего кода и посмотрите, как она работает. Также нет причин не ссылаться на ваш общий проект в нескольких решениях.
Наличие общих библиотек кода не должно быть проблемой, если разработка будет завершена. На данный момент вы можете сделать так, чтобы ваши 2 сайта ссылались на одну и ту же библиотеку (или библиотеки), которую вы поддерживаете, но если и когда вы разделите проекты на другие команды, вы можете передать копию общего кода каждой команде.