我需要以编程方式为我正在动态创建的 .csproj 构建一个项目。
在搜索 Google 时,我发现了 MS 为 MSBuild 引擎提供的类和 API。有了这些信息,我创建了一个执行 msbuild.exe 的进程,然后读取输出,但现在我想使用命名空间Microsoft.Build.Execution
构建项目。这是我的程序:
public class Compiler
{
private static string locationOfMSBuilldEXE = "";
public static void Build(string msbuildFileName)
{
BuildManager manager = BuildManager.DefaultBuildManager;
ProjectInstance projectInstance = new ProjectInstance(msbuildFileName);
var result = manager.Build(new BuildParameters()
{
DetailedSummary = true
},
new BuildRequestData(projectInstance, new string[] { "Build" }));
var buildResult = result.ResultsByTarget["Build"];
var buildResultItems = buildResult.Items;
string s = "";
}
}
结果表明,这构建得很好,但我需要知道编译的详细输出以及如何查看它。如果有人能给我一个关于 MSBuild 的好教程或书籍的链接,那将会非常有帮助。
谢谢@ritchmelton。虽然是我自己想出来的。
这是我的代码:我使用了内置记录器ConsoleLogger
public class Compiler
{
private static string locationOfMSBuilldEXE = "";
public static void Build(string msbuildFileName)
{
ConsoleLogger logger = new ConsoleLogger(LoggerVerbosity.Normal);
BuildManager manager = BuildManager.DefaultBuildManager;
ProjectInstance projectInstance = new ProjectInstance(msbuildFileName);
var result = manager.Build(
new BuildParameters()
{
DetailedSummary = true,
Loggers = new List<ILogger>(){logger}
},
new BuildRequestData(projectInstance, new string[] { "Build" }));
var buildResult = result.ResultsByTarget["Build"];
var buildResultItems = buildResult.Items;
string s = "";
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)