7

我想通过传递解决方案文件路径(.sln 文件)和构建模式(调试、发布)来编译解决方案。

我不想调用像 devenv.exe 或 msbuild.exe 这样的命令行进程。相反,我想使用 API 并知道是否存在编译错误。

可能吗?

如果你认为你知道怎么做,请提供样品。

4

4 回答 4

3

您将不得不在某个时候启动一个进程来进行编译,因此您不妨生成一个进程来启动编译。这将比在 API 上苦苦挣扎要容易得多。

Andrew 给出了一些关于如何去做的好建议,但我仍然认为这是一个错误。

于 2009-11-11T04:53:32.583 回答
2

正如 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
于 2009-11-11T04:49:18.410 回答
1

这是一篇讨论以编程方式使用 C# 编译器的文章。这是一篇讨论 SLN 文件格式的文章。SLN 文件是一个 XML 文件,因此很容易阅读。

于 2009-11-11T04:53:25.110 回答
0

我还建议使用 MSBuild API。它似乎工作得很好。但是,从 .NET 4 和 Visual Studio 2010 开始,它发生了显着变化。

于 2010-08-18T10:18:08.750 回答