Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I programmatically build a Visual Studio solution?

I would like to compile a solution by passing the solution file path (.sln file) and the build mode (debug, release).

I do not want to call a command line process like devenv.exe or msbuild.exe. Instead I would like to use an API and know if there were compile errors.

Is it possible?

Please provide samples if you think you know how to do that.

like image 878
clems Avatar asked Nov 11 '09 04:11

clems


2 Answers

You're going to have to launch a process at some point to do the compilation, so you might as well spawn a process to kick off the compilation. It is going to be much easier than struggling with an API.

Andrew gives some good advice about how you might go about it, but I still think it is a mistake.

like image 97
stimms Avatar answered Sep 19 '22 14:09

stimms


As itowlson pointed out, you could also use the Build Engine APIs.

... from MSDN ...

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

You can use MSBuild from a script such as a batch file. And just check the ErrorLevel for something other than 0... or you can have fun with the APIs.

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

.. from msbuild.exe /? ...

Microsoft (R) Build Engine Version
2.0.50727.4927 [Microsoft .NET Framework, Version 2.0.50727.4927]
Copyright (C) Microsoft Corporation
2005. All rights reserved.

Syntax: MSBuild.exe
[options] [project file]

...

Examples:

    MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
    MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug
like image 35
Matthew Whited Avatar answered Sep 21 '22 14:09

Matthew Whited