2012-02-22 3 views
13

Ho una serie di proprietà che ho bisogno di impostare in ~ 15 progetti. Esiste un modo per inserire queste proprietà in un singolo file e fare in modo che tutti i file di progetto facciano riferimento a un file utilizzando una sorta di direttiva di importazione anziché duplicare le proprietà in ciascun file di progetto?Elementi PropertyGroup riutilizzabili in un file csproj

MODIFICA: Per chiarire, sto parlando degli elementi <PropertyGroup> all'interno del file csproj. Tutti i progetti richiedono la stessa serie di impostazioni <PropertyGroup>. Questi elementi impostano proprietà come DebugSymbols o DefineDebug e non vengono utilizzati per referenziare i file di origine.

risposta

18

L'elemento <Import> può essere utilizzato per questo, simile a come consuetudine obiettivi vengono utilizzati i file.

Il file riutilizzabile dovrebbe essere simile a questo:

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

Nota che avere l'elemento principale Project con la dichiarazione xmlns è richiesto - VS non verrà caricato un progetto di riferimento a questo file senza di essa.

Ho salvato le impostazioni delle proprietà nella directory della mia soluzione come ProjectBuildProperties.targets.

Per includere il file in altri progetti, ho aggiunto questo per i file csproj:

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

e funziona!

2

È possibile creare un file MSBuild condiviso che può essere importato da tutti i progetti.

Questo post discute questa soluzione e lo dimostrano here