Короче говоря: общие проекты не работают, и реально не может работать таким образом.
В Visual Studio общий проект - это просто контейнер для файлов - исходного кода, ресурсов и т. Д. - которые вы можете добавить в другие проекты. Это может быть полезно в некоторых случаях, когда вы хотите иметь один и тот же код (и т. Д.) В нескольких проектах, не помещая этот код в библиотеку.
Общие проекты не имеют ссылок, не имеют пакетов NuGet или чего-либо еще, только файлы, которые они содержат. У них даже нет данных конфигурации, необходимых для компиляции любых исходных файлов, которые они содержат, и компилятор не будет выполнять большую проверку содержимого, если общий проект не включен в какой-либо полный проект.
И поскольку общий проект не имеет никакого способа указания ссылок или пакетов, вам нужно будет добавить эти ссылки и пакеты в каждый проект, который ссылается на общий проект. Компилятор скажет вам довольно быстро, если вы пропустите один.
Хотя было бы неплохо иметь ссылки в общих проектах, оказалось, что все гораздо проще, чем вы думаете. Один и тот же общий проект может быть включен в проекты, предназначенные для различных сред, платформ и архитектур. Допустим, вы создаете некоторый код, который будет работать на iOS, Mono, Windows .NET Framework и .NET Core, с конкретным кодом для каждой цели и некоторым общим кодом. Если вы попытаетесь добавить зависимость NuGet в совместно используемый проект, он взорвется вам как минимум одним из них. То же самое с большинством ссылок. Добавьте все ссылки, необходимые для .NET Core, и вдруг другие проекты не скомпилируются.