Можно ли разделить информацию в .csproj на несколько файлов? Немного напоминает проектную версию функции partial class
.
Частичные файлы .csproj
Ответ 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.
Ответ 2
Да, вы можете разделить информацию по нескольким файлам. Вы можете использовать Import Element (MSBuild).
Обратите внимание, что Visual Studio даст вам раздражающее предупреждение о безопасности, если вы попытаетесь открыть файл проекта, который включает в себя другие файлы проекта.
Полезная ссылка из MSDN:
Как использовать один и тот же объект в нескольких файлах проекта
Обратите внимание, что внешние файлы имеют расширение .targets по соглашениям.
Ответ 3
Хорошо, что вы можете объединить несколько проектов в одно большое решение, но я не думаю, что это совсем то, что вы имели в виду, поскольку каждый проект должен быть полным проектом в этом случае.