2012-03-19 83 views
26

Ho bisogno di creare una soluzione ma escludere un progetto. Come dovrei farlo? Ho cercato molto su questo problema ma nulla potrebbe aiutare.Come escludere il progetto dalla build in MSBUILD?

sezione

ItemGroup fanno l'eccezione seguente:

elemento non valido. Attività sconosciuta o tipo di dati.

PropertyGroup aumenta anche l'eccezione.

Qui di seguito è il mio codice di esempio:

<project name="TI 8.1.6 build script"> 
    <ItemGroup> 
    <Solution Include="${ROOT}\Core\TI Core.sln" Exclude="${ROOT}\Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj"/> 
    </ItemGroup> 
... 
</project> 

Così qualcuno potrebbe aiutarmi?

risposta

44

È possibile escludere i progetti a livello di soluzione per una specifica build configuration utilizzando il Configuration Manager Dialog in Visual Studio:

Configuration Manager Dialog

allora si può semplicemente richiamare msbuild sul file soluzione specificare la configurazione di generazione di usa:

msbuild /property:Configuration=Release MySolution.sln 
+2

Questo non aiuta :( –

+0

Cosa sta cercando di ottenere? –

+0

Ho impostato la modalità "Debug" sul progetto da escludere.Tutti gli altri progetti sono impostati su "Rilascio". In ** proprietà msbuild **, ho impostato Configurazione su Rilascio. costruito con altri e l'eccezione è aumentata –

11

Una soluzione suggerita da Enrico è la soluzione più versatile che woul d lavoro sempre. Una soluzione alternativa potrebbe essere quella di utilizzare direttamente l'attività <MSBuild>. Questo funzionerà per te se hai tutto il tuo file di progetto in una particolare directory, o sarai in grado di enumerare facilmente tutti i progetti che vuoi costruire (il numero di progetti nella tua soluzione non è molto grande).

Ad esempio, questo file msbuild costruirà ogni progetto sotto la directory corrente ad eccezione di un progetto specifico:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
    <MyProjectReferences Include="**\*.*proj" /> 
    <MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" /> 
    </ItemGroup> 

    <Target Name="BuildAllExceptWixProject"> 
    <MSBuild Projects="@(MyProjectReferences)" Targets="Build" /> 
    </Target> 

</Project> 

Poi si può costruire che l'utilizzo della riga di comando msbuild <myproject> /t:BuildAllExceptWixProject

+3

Avevi ragione. Ma non ** ProjectReferences ** ma ** ProjectReference **. E ** Include ** è una proprietà necessaria per l'elemento ** ProjectReference **, quindi inserisco ** Include/Exclude ** nello stesso articolo. E funziona! Il progetto è stato escluso con successo. Grazie!! –

+1

@LubochknAndrew, il nome del gruppo potrebbe essere un qualsiasi nome di elemento XML valido. Il gruppo 'ProjectReference' è solo uno dei gruppi che è già utilizzato negli obiettivi Microsoft standard, che non rende questo nome migliore di qualsiasi altro nome a cui si possa pensare. Si noti che l'esempio nella mia risposta non utilizza obiettivi Microsoft standard. –