2015-03-19 13 views
5

Ho più cartelle in un progetto di Visual Studio. Ho anche la stessa quantità di configurazioni per questo progetto. (Una base di codice esegue più siti).Includi/Escludi file per configurazione Visual Studio

Voglio solo una cartella per configurazione da includere.

In questo momento, ogni configurazione include ogni singola cartella. Quindi, devo cancellare manualmente le cartelle extra dopo la compilazione (se così scelgo).

Questo rallenta anche le nostre build di integrazione continue, perché tutti i file aggiuntivi che deve elaborare.

Questo non può essere ottenuto con la voce di menu "Escludi dal progetto"/"Includi nel progetto". Questo lo rimuoverebbe completamente dall'intero progetto.

Ho bisogno di certe cartelle incluse solo per determinate configurazioni.

Il codice X (devleopment iOS) gestisce ciò utilizzando "Appartenenze di destinazione" ... È possibile indicare che un determinato file deve essere incluso in un determinato obiettivo.

Cercando di fare lo stesso in VS.

Si prega di aiutare !!

+0

Intendi qualcosa del genere? http://stackoverflow.com/questions/2370353/exclude-whole-files-based-on-configuration-from-build-in-vs2008 –

risposta

9

È necessario modificare manualmente il file .csproj, che in realtà è solo un file MSBUILD. (Tasto destro, apri nel blocco note o in un altro editor di testo)

Ecco un esempio. Ho duplicato il Program.cs predefinito e ne ho creato uno per DEBUG e uno per RELEASE.

In condizioni normali durante la creazione di questo messaggio, ricevo un errore perché ho definito la stessa classe due volte.

Ma dopo aver modificato il file .csproj come di seguito, ora vengono creati in modo indipendente in base alla configurazione che ho selezionato.

<ItemGroup> 
    <Compile Include="DebugFiles\ProgramForDebug.cs" Condition=" '$(Configuration)' == 'Debug' "/> 
    <Compile Include="ReleaseFiles\ProgramForRelease.cs" Condition=" '$(Configuration)' == 'Release' "/> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    </ItemGroup> 

Potrei aggiungere, c'è probabilmente un modo migliore per realizzare quello che stai facendo. Forse usando le trasformazioni di configurazione (forse dove diverse configurazioni specificano il nome della classe da utilizzare per il proprio ambiente), ma in entrambi i casi l'esempio sopra farà sicuramente quello che stai chiedendo.

+1

Grazie! usato un jolly per ogni cartella e sembra che funzioni! tcarter2005

+1

Molte grazie! –

Problemi correlati