2009-11-11 13 views
7

Vorrei compilare una soluzione passando il percorso del file di soluzione (file .sln) e la modalità di compilazione (debug, release). Non voglio chiamare un processo da riga di comando come devenv.exe o msbuild.exe, preferisco usare un'API e sapere se ci sono errori di compilazione.Come creare una soluzione di Visual Studio in modo programmatico?

È possibile? Si prega di fornire campioni se pensate di sapere come farlo.

risposta

3

Dovrai avviare un processo a un certo punto per eseguire la compilazione che potrebbe anche generare un processo per avviare la compilazione. Sarà molto più facile che lottare con un'API.

Modifica Andrew dà alcuni buoni consigli su come si potrebbe andare su di esso, ma io continuo a pensare che sia un errore.

+0

È incredibile la facilità con cui un codice di uscita può essere utilizzato per lo script. (Penso che troppe persone non si ricordino di quanto semplici e semplici file batch debbano funzionare ... poi di nuovo sono passati alcuni anni da quando il DOS era popolare, quindi forse non lo sanno.) –

+0

Abbastanza giusto che suoni davvero molto più facile che usando l'API. Penso che sia un peccato che non ci sia un'API .net semplice con un oggetto corretto restituito dove potremmo verificare gli errori. eccetera. Grazie – clems

+0

Indovina che hai perso le API di Build Engine che itowlson ha indicato http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx –

2

Come itowlson ha sottolineato che si potrebbe anche usare il Build Engine APIs

... da MSDN ...

// Build a project file 
bool success = engine.BuildProjectFile(@"c:\temp\validate.proj"); 

È possibile utilizzare MSBuild da uno script, ad esempio un file batch. E basta controllare ErrorLevel per qualcosa di diverso da 0 ... o puoi divertirti con le API.

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ MSBuild.exe

.. da msbuild.exe /? ...

Microsoft (R) Build Engine versione 2.0.50727.4927 [Microsoft .NET Framework versione 2.0.50727.4927] Copyright (C) Microsoft Corporation 2005. Tutti i diritti riservati.

Sintassi: MSBuild.exe [opzioni] [file di progetto]

...

Esempi:

MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release 
    MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug 
+2

Poiché in particolare non desidera utilizzare la riga di comando MSBuild, probabilmente vale la pena indicarlo all'API MSBuild, in particolare http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine. engine.buildprojectfile.aspx. – itowlson

+0

Buon punto ... Probabilmente mi sarei limitato ad avvolgere l'exe con un Process.Start() ma ho visto i vantaggi nell'API. –

1

qui è un article discutere usando il compilatore C# di programmazione. Ecco uno article che discute il formato del file sln. Il file sln è un file xml, quindi è piuttosto facile da leggere.

0

Vorrei anche suggerire di utilizzare l'API MSBuild. Sembra funzionare abbastanza bene. Tuttavia, è notevolmente cambiato da .NET4 e VS2010.

Problemi correlati