我想通过传递解决方案文件路径(.sln 文件)和构建模式(调试、发布)来编译解决方案。
我不想调用像 devenv.exe 或 msbuild.exe 这样的命令行进程。相反,我想使用 API 并知道是否存在编译错误。
可能吗?
如果你认为你知道怎么做,请提供样品。
我想通过传递解决方案文件路径(.sln 文件)和构建模式(调试、发布)来编译解决方案。
我不想调用像 devenv.exe 或 msbuild.exe 这样的命令行进程。相反,我想使用 API 并知道是否存在编译错误。
可能吗?
如果你认为你知道怎么做,请提供样品。
您将不得不在某个时候启动一个进程来进行编译,因此您不妨生成一个进程来启动编译。这将比在 API 上苦苦挣扎要容易得多。
Andrew 给出了一些关于如何去做的好建议,但我仍然认为这是一个错误。
正如 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\Framework\v2.0.50727\MSBuild.exe
.. 来自 msbuild.exe /? ...
Microsoft (R) Build Engine 版本
2.0.50727.4927 [Microsoft .NET Framework,版本 2.0.50727.4927]
版权所有 (C) Microsoft Corporation
2005。保留所有权利。语法:MSBuild.exe
[选项] [项目文件]...
例子:
MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug
我还建议使用 MSBuild API。它似乎工作得很好。但是,从 .NET 4 和 Visual Studio 2010 开始,它发生了显着变化。