«Лучшая практика» в этом случае - не бороться с инструментом. Он позволяет вам делать то, что вы хотите, но вы сделаете больше работы и сможете сосредоточиться на коде, если просто позволите IDE организовать ваш проект для вас.
Я бы создал пустой проект решения с именем PdMagic.Common
Это даст вам файловую структуру, такую как
PdMagic.Common\
PdMagic.Common\PdMagic.Common.sln
тогда я обычно добавляю папку src и libs (через файловую систему, а не VS)
внутри папки libs, я бы разместил все сторонние зависимости, а в папке src были бы все мои проекты
PdMagic.Common\
PdMagic.Common\PdMagic.Common.sln
PdMagic.Common\libs
PdMagic.Common\libs\nunit
PdMagic.Common\src
Затем в Visual Studio я бы щелкнул правой кнопкой мыши на только что созданном решении и щелкнул «Добавить -> Новый проект», я бы указал, что я хочу, чтобы оно было создано в папке \ src, и назвал его PdMagic.Common. Math
Теперь моя структура папок будет выглядеть так:
PdMagic.Common\
PdMagic.Common\PdMagic.Common.sln
PdMagic.Common\libs
PdMagic.Common\libs\nunit
PdMagic.Common\src
PdMagic.Common\src\PdMagic.Common.Math
PdMagic.Common\src\PdMagic.Common.Math\PdMagic.Common.Math.csproj
PdMagic.Common\src\PdMagic.Common.Math\Class1.cs
Затем, когда вы добавляете классы в ваш проект PdMagic.Common.Math, они попадают в папку с файлом проекта. Вот как IDE считает, что мы должны работать, и я думаю, что большинство разработчиков согласны с этим, потому что попытка получить любой другой макет в файловой системе потребовала бы слишком много борьбы с IDE. Я знаю, что может быть трудно прийти к другому соглашению, и вы инстинктивно хотите такие же соглашения в новой среде. Однако, если вы будете придерживаться соглашений (по вашему мнению, правильно или неправильно), вы сделаете больше, потому что не будете пытаться заставить IDE делать то, что, как вы думаете, следует делать.