How to programmatically build a visual studio solution?

你说的曾经没有我的故事 提交于 2020-01-01 05:13:26

问题


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.


回答1:


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

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




回答2:


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



回答3:


here is an article discussing using the C# compiler programmatically. Here is an article discussing the sln file format. The sln file is an xml file, so its pretty easy to read it.




回答4:


I'd also suggest using the MSBuild API. It seems to work quite well. However, it has significantly changed as of .NET4 and VS2010.



来源:https://stackoverflow.com/questions/1713075/how-to-programmatically-build-a-visual-studio-solution

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!