Повторно используемые элементы PropertyGroup в файле csproj - PullRequest
13 голосов
/ 22 февраля 2012

У меня есть ряд свойств, которые мне нужно установить в ~ 15 проектах. Есть ли способ поместить эти свойства в один файл и сделать так, чтобы все файлы проекта ссылались на один файл, используя какую-то директиву импорта вместо дублирования свойств в каждом файле проекта?

РЕДАКТИРОВАТЬ: Для пояснения, я говорю о <PropertyGroup> элементов в файле csproj. Все проекты нуждаются в одной серии <PropertyGroup> настроек. Эти элементы задают свойства, такие как DebugSymbols или DefineDebug, и не используются для ссылки на исходные файлы.

Ответы [ 2 ]

18 голосов
/ 22 февраля 2012

Для этого можно использовать элемент <Import>, аналогично тому, как используются файлы пользовательских целей.

Повторно используемый файл должен выглядеть следующим образом:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <!-- Properties go here -->
    </PropertyGroup>
</Project>

Обратите внимание, что требуется наличие корневого элемента Project с объявлением xmlns - VS не будет загружать проект, ссылающийся на этот файл, без него.

Я сохранил настройки своих свойств в каталоге решений как ProjectBuildProperties.targets.

Чтобы включить файл в другие проекты, я добавил это в файлы csproj:

<Import Project="$(SolutionDir)ProjectBuildProperties.targets"/>

И это работает!

2 голосов
/ 22 февраля 2012

Вы можете создать общий файл MSBuild, который можно импортировать всеми проектами.

В этой публикации обсуждается это решение и демонстрируется здесь

...