Частичные файлы .csproj - PullRequest
       7

Частичные файлы .csproj

14 голосов
/ 01 октября 2008

Можно ли разделить информацию в .csproj на несколько файлов? Немного похоже на проектную версию функции partial class.

Ответы [ 3 ]

22 голосов
/ 01 октября 2008

Вы не можете иметь более одного мастера 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 Import вы можете получить частичные файлы csproj, каждый из которых будет содержать определения, которые будет использовать основной проект (в моем примере project.csproj).


Visual Studio покажет диалоговое окно Предупреждение безопасности для проекта , когда вы откроете измененное решение или файл проекта. Выберите опцию Загрузить проект обычно и нажмите OK . При повторном открытии решения позже предупреждение не будет отображаться, поскольку конфигурация Обычно загружать проект сохраняется в файле suo .

4 голосов
/ 01 октября 2008

Да, вы можете разделить информацию на несколько файлов. Вы можете использовать Элемент импорта (MSBuild) .

Обратите внимание, что Visual Studio выдаст вам раздражающее предупреждение безопасности , если вы попытаетесь открыть файл проекта, который включает другие файлы проекта.

Полезные ссылки из MSDN:

Как: использовать одну и ту же цель в нескольких файлах проекта

Обратите внимание, что внешние файлы имеют расширение .targets в соответствии с соглашениями.

0 голосов
/ 01 октября 2008

Ну, вы можете объединить несколько проектов в одно большое решение, но я не думаю, что это именно то, что вы имели в виду, поскольку в этом случае каждый проект должен быть законченным.

...