我想通过传递解决方案文件路径(.sln文件)和构建模式(调试,发布)来编译解决方案。 我不想调用类似devenv.exe或msbuild.exe的命令行进程,而是想使用API并知道是否存在编译错误。如何以编程方式构建Visual Studio解决方案?
可能吗? 如果您认为如何做到这一点,请提供样品。
我想通过传递解决方案文件路径(.sln文件)和构建模式(调试,发布)来编译解决方案。 我不想调用类似devenv.exe或msbuild.exe的命令行进程,而是想使用API并知道是否存在编译错误。如何以编程方式构建Visual Studio解决方案?
可能吗? 如果您认为如何做到这一点,请提供样品。
您将不得不在某个时候启动一个进程来编译,您可能会产生一个启动编译的过程。这比用API挣扎要容易得多。
编辑安德鲁提供了一些很好的建议,你可能会怎么做,但我仍然认为这是一个错误。
由于itowlson指出,你也可以使用Build Engine APIs
...从MSDN ...
// Build a project file
bool success = engine.BuildProjectFile(@"c:\temp\validate.proj");
您可以使用从脚本MSBuild如一个批处理文件。只需检查ErrorLevel以获得0以外的内容......或者您可以使用API获得乐趣。
C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ MSBuild.exe
..从msbuild.exe /? ...
微软(R)构建引擎版本 2.0.50727.4927 [Microsoft .NET框架版本2.0.50727.4927] 版权所有(C)微软公司 2005保留所有权利。
语法:MSBuild.exe [选项] [项目文件]
...
例子:
MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug
因为他特别不想使用MSBuild命令行,可能值得指向他在MSBuild API,特别是http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine。 engine.buildprojectfile.aspx。 – itowlson 2009-11-11 04:52:17
好点...我可能只是用一个Process.Start()包装exe,但我可以看到API的优势。 – 2009-11-11 04:54:06
我也建议使用MSBuild API。它似乎工作得很好。但是,它在.NET4和VS2010中发生了显着变化。
令人惊讶的是退出代码可以很容易地用脚本编写。 (我认为太多的人不记得批处理文件是多么简单和容易的工作......然而,DOS已经流行了几年,所以也许他们只是不知道。) – 2009-11-11 04:57:40
够公平的,听起来确实如此使用API更容易。 我认为这是一个耻辱有没有简单的.net API,但有一个适当的对象返回,我们可以测试错误。等等 谢谢 – clems 2009-11-11 07:10:53
猜你错过了itowlson指出的构建引擎API http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.engine.buildprojectfile.aspx – 2009-11-11 11:46:10