2012-02-22 6 views
13

J'ai une série de propriétés que je dois définir dans ~ 15 projets. Est-il possible de placer ces propriétés dans un seul fichier et que tous les fichiers de projet référencent le fichier en utilisant une sorte de directive d'importation plutôt que de dupliquer les propriétés dans chaque fichier de projet?Éléments PropertyGroup réutilisables dans un fichier csproj

EDIT: Pour clarifier, je parle d'éléments <PropertyGroup> dans le fichier csproj. Tous les projets nécessitent la même série de paramètres <PropertyGroup>. Ces éléments définissent des propriétés telles que DebugSymbols ou DefineDebug et ne sont pas utilisés pour référencer des fichiers source.

Répondre

18

L'élément <Import> peut être utilisé pour cela, similaire à la façon dont les cibles des fichiers personnalisés sont utilisés.

Le fichier réutilisable devrait ressembler à ceci:

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

Notez que l'élément ayant racine Project avec la déclaration xmlns est nécessaire - VS ne se charge pas un projet de référencement ce fichier sans elle. J'ai enregistré mes paramètres de propriétés dans le répertoire de ma solution en tant que ProjectBuildProperties.targets.

Pour inclure le fichier dans d'autres projets, j'ai ajouté ce aux fichiers csproj:

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

Et ça marche!

2

Vous pouvez créer un fichier MSBuild partagé qui peut être importé par tous les projets.

Ce post traite cette solution et le démontrent here

Questions connexes