Domanda

Ho creato una configurazione denominata Test tramite Visual Studio che attualmente accetta solo tutte le impostazioni di DEBUG, tuttavia utilizzo le condizioni del compilatore per determinare alcune azioni specifiche se la build risulta essere TEST | DEBUG | RELEASE.

Tuttavia, come posso ottenere il mio script MSBUILD per rilevare la configurazione TEST ??

Attualmente costruisco

 <MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=$(Configuration);OutDir=$(BuildDir)\Builds\" />

Where @ (SolutionsToBuild) è la mia soluzione. Nelle Proprietà comuni del progetto MsBuild si afferma che $ (Configurazione) è un proprietà comune ma appare sempre vuota?

Significa che non viene mai impostato ma è semplicemente riservato per il mio uso o che può rilevare SOLO DEBUG | RELEASE. In tal caso, che senso ha consentire la creazione di diverse configurazioni di build?

È stato utile?

Soluzione

Non ho fatto molto con la definizione di un file di configurazione MSBUILD ma ho fatto build di diverse configurazioni usando un file batch come questo

msbuild /v:n /p:Configuration=Release "Capture.sln" 
msbuild /v:n /p:Configuration=ReleaseNoUploads "Capture.sln" 

Ho definito la configurazione ReleaseNoUploads in Visual Studio.

Ecco cosa dovevo fare per questo (questo è Visual Studio 2005):

  • Apri il menu Strumenti: Opzioni , vai all'opzione Progetti e soluzioni: Generale e seleziona Mostra configurazioni di build avanzate .
  • Da lì, vai al Build: Configuration menu Manager
  • Nella finestra di dialogo che viene visualizzata, fai clic sul menu a discesa Configurazione soluzione attiva e fai clic su < Nuovo ... > per creare un nuova configurazione di build.

Altri suggerimenti

Certo, puoi avere tutte le configurazioni personalizzate che desideri definire. Vedi questa domanda correlata per come potrebbe apparire l'installazione.

Come distribuire condizionalmente un app.config in base alla configurazione della build?

Nota che quando 'inside visual studio', $ (Configuration) e $ (Platform) sono sempre impostati da VS usando le cose di Configuration Manager nei menu a discesa in alto. Considerando che se si desidera impostare questi valori utilizzando msbuild dalla riga di comando, è necessario passare esplicitamente i valori (come nella risposta di @ MarkBiek).

(La maggior parte dei modelli di progetto VS "imposta automaticamente" un valore per Configurazione / Piattaforma, in modo da poter utilizzare la riga di comando MSBuild senza specificare esplicitamente questi valori. Ciò è positivo, ma fa apparire queste due proprietà utili / comuni un po 'più magico / strano di quello che realmente sono.)

Normalmente quello che faccio per avere Release e Debug sia compilato da un singolo script di MSBuild è:

<PropertyGroup Condition="'$(Configuration)'==''">
  <Configuration>Debug;Release</Configuration>
</PropertyGroup>

Quindi aggiungi questo ma della salsa segreta di MSBuild:

   <Target Name="configurations">
     <CreateItem Include="$(Configuration)">
       <Output TaskParameter="Include" ItemName="Configuration" />
     </CreateItem>
   </Target>

E poi per ogni bersaglio fai qualcosa del genere:

  <Target Name="Compile" DependsOnTargets="configurations" Inputs="@(Configuration)" Outputs="target\%(Configuration.FileName)">
    <MSBuild Projects="@(MyProjects)" Targets="Build" Properties="Configuration=%(Configuration.Identity);WarningLevel=1" />
  </Target>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top