Ответ 1
У вас не может быть более одного master csproj. Но поскольку подпрограмма csproj выполняется с помощью msbuild, вы можете просто иметь несколько частичных csproj, которые импортируют друг друга. Файл решения увидит наиболее производный csproj.
project1.csproj
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
....
</Project>
project2.csproj
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="project1.csproj" />
...
</Project>
project.csproj - это основной проект, на который ссылается файл решения.
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="project2.csproj" />
...
</Project>
В нижней строке указано, что с помощью функции msbuild Импорт вы можете иметь частичные файлы csproj, в которых каждый будет содержать определения, которые будет использовать основной проект (project.csproj в моем примере).
При открытии измененного решения или файла проекта в Visual Studio появится диалоговое окно Безопасность для проекта. Выберите вариант Загрузить проект обычно и нажмите ОК. При повторном открытии решения предупреждение не будет отображаться, потому что конфигурация Загрузить проект обычно сохраняется в файле suo.