2012-02-22 5 views
13

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

EDIT: Чтобы уточнить, я говорю о <PropertyGroup> элементах в файле csproj. Для всех проектов требуется одна и та же серия настроек <PropertyGroup>. Эти элементы устанавливают такие свойства, как DebugSymbols или DefineDebug, и не используются для ссылки на исходные файлы.

ответ

18

<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

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

Этого post обсуждает это решение и продемонстрировать его here

Смежные вопросы