2009-11-11 19 views
7

Me gustaría compilar una solución pasando la ruta del archivo de solución (archivo .sln) y el modo de compilación (depuración, lanzamiento). No quiero llamar a un proceso de línea de comandos como devenv.exe o msbuild.exe, en su lugar me gustaría utilizar una API y saber si hubo errores de compilación.¿Cómo construir programáticamente una solución de estudio visual?

¿Es posible? Proporcione ejemplos si cree que sabe cómo hacerlo.

Respuesta

3

Vas a tener que iniciar un proceso en algún momento para hacer la compilación, así como también generar un proceso para iniciar la compilación. Va a ser mucho más fácil que luchar con una API.

Editar Andrew da algunos buenos consejos sobre cómo puede hacerlo, pero todavía creo que es un error.

+0

Es increíble lo fácil que puede ser un código de salida para la secuencia de comandos. (Creo que demasiadas personas no recuerdan qué tan simples y fáciles de trabajar con los archivos por lotes ... luego, han pasado algunos años desde que el DOS era popular, así que tal vez simplemente no lo sepan). –

+0

Lo suficiente como para sonar de hecho mucho más fácil que usar la API. Creo que es una lástima que no haya una API .net fácil, pero con un objeto adecuado devuelto donde podríamos probar los errores. etc. Gracias – clems

+0

Supongo que se ha perdido las API de Build Engine que itowlson señaló http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx –

2

Como itowlson señaló que también podría utilizar el Build Engine APIs

... ... de MSDN

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

Puede utilizar MSBuild desde un script como un archivo por lotes. Y simplemente verifique el ErrorLevel para algo que no sea 0 ... o puede divertirse con las API.

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

.. desde msbuild.exe /? ...

Microsoft (R) Construir motor Versión 2.0.50727.4927 [Microsoft .NET Framework, versión 2.0.50727.4927] Copyright (C) Microsoft Corporation 2005. Todos los derechos reservados.

Sintaxis: MSBuild.exe [opciones] [archivo de proyecto]

...

Ejemplos:

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

Dado que específicamente no desea utilizar la línea de comandos de MSBuild, probablemente valga la pena señalarlo en la API de MSBuild, en particular http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine. engine.buildprojectfile.aspx. – itowlson

+0

Buen punto ... Probablemente solo envolví el exe con un Process.Start() pero pude ver las ventajas en la API. –

1

aquí es un article discutir con el compilador de C# mediante programación. Aquí hay un article discutiendo el formato de archivo sln. El archivo sln es un archivo xml, por lo que es bastante fácil de leer.

0

También sugiero usar la API MSBuild. Parece que funciona bastante bien. Sin embargo, ha cambiado significativamente a partir de .NET4 y VS2010.

Cuestiones relacionadas