2012-12-07 8 views
8

Vorrei creare lo stesso progetto due volte nella stessa configurazione di soluzione, variando alcuni flag #define per attivare le funzionalità. Entrambi i file binari verranno distribuiti con nomi diversi.Posso creare più configurazioni di un progetto all'interno di una configurazione di soluzione?

Le soluzioni che conosco potrebbe lavorare:

  1. aggiungere una configurazione soluzione - Ma dovrà quindi creare la soluzione due volte, che io preferirei evitare. Entrambe le configurazioni del progetto saranno sempre costruite.

  2. Copia il progetto - Ma poi ho il sovraccarico di mantenere un nuovo progetto quando voglio mantenere solo una configurazione diversa.

  3. Creazione batch - Evito di utilizzare la compilazione batch poiché utilizzo sia devenv per lo sviluppo locale che msbuild per l'integrazione continua.

Altre idee o suggerimenti?

risposta

5

Ho appena trovato un modo per fare ciò che hai chiesto. Crea un file msbuild (che ho chiamato mine multiple.proj) e aggiungi lo script qui sotto.

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Choose> 
    <When Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> 
     <ItemGroup> 
     <ProjectToBuild Include="$(MSBuildProjectName).csproj"> 
      <Properties>Configuration=Release</Properties> 
     </ProjectToBuild> 
     </ItemGroup> 
    </When> 
    </Choose> 
    <Target Name="BeforeBuild"> 
    <Message Text="Building configuration $(Configuration)..." /> 
    </Target> 
    <Target Name="AfterBuild"> 
    <MSBuild Projects="@(ProjectToBuild)"/> 
    </Target> 
</Project> 

</type> 
</this> 

Importa lo script sui vostri progetti (csproj o vbproj):

<Import Project="..\multiple.proj" /> 

Questo script dice MSBuild per costruire di nuovo i vo t con un'altra configurazione come evento AfterBuild. Ho usato Debug/Release per fare l'esempio, ma puoi facilmente cambiare lo script per supportare altre configurazioni, o prendere la decisione di ricostruire in base ad altre variabili.

Fai attenzione perché stai eseguendo due build contemporaneamente, quindi gli errori di compilazione possono essere più difficili da capire.

Spero che questo aiuti.

+0

Questo sembra un buon approccio - Dovrò dargli un giro. –

Problemi correlati