当前位置:  开发笔记 > 编程语言 > 正文

如何从C#调用MSBuild

如何解决《如何从C#调用MSBuild》经验,为你挑选了2个好方法。

有没有更好的方法从C#/ .NET调用MSBuild而不是shelling到msbuild.exe?如果有,怎么样?



1> Peter..:

是的,添加Microsoft.Build.Engine对Engine类的引用并使用它.

PS:注意参考正确的版本.有2.0和3.5个程序集,你必须确保每个人都得到正确的程序集.



2> Philippe Mon..:

对于特定于.NET 2.0的版本,您可以使用以下内容:

Engine engine = new Engine();
engine.BinPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)
    + @"\..\Microsoft.NET\Framework\v2.0.50727";

FileLogger logger = new FileLogger();
logger.Parameters = @"logfile=C:\temp\test.msbuild.log";
engine.RegisterLogger(logger);

string[] tasks = new string[] { "MyTask" };
BuildPropertyGroup props = new BuildPropertyGroup();
props.SetProperty("parm1","hello Build!");

try
{
  // Call task MyTask with the parm1 property set
  bool success = engine.BuildProjectFile(@"C:\temp\test.msbuild",tasks,props);
}
catch (Exception ex)
{
  // your error handler
}
finally
{
 engine.UnregisterAllLoggers();
 engine.UnloadAllProjects();
}

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有