以编程方式运行 MSBuild

Running MSBuild programmatically(以编程方式运行 MSBuild)
本文介绍了以编程方式运行 MSBuild的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试以编程方式执行 MSBuild,但无法执行以下命令:

I am trying to execute MSBuild programmatically and can't execute the following command:

string command = string.Format(@"C:WindowsMicrosoft.NETFrameworkv4.0.30319msbuild.exe  ""{0}{1}.csproj""", _args.ProjectPath, _args.ProjectName);

字符串被渲染为:

C:WindowsMicrosoft.NETFrameworkv4.0.30319msbuild.exe  "C:...TestResultsFoo 2011-08-31 16_29_40OutFoosolutionNameprojectNameprojectName.csproj"

然后我使用新的 ProcessStartInfo(command).问题似乎是 Foo 和 2011 之间的空间.我得到以下输出:

I then use new ProcessStartInfo(command). The problem seems to be the space between Foo and 2011. I get the following output:

MSBUILD : error MSB1008: Only one project can be specified.
Switch: 16_29_40OutFoosolutionNameprojectNameprojectName.csproj

如何将项目文件传递给 MSBuild?

How do I pass in the project file to MSBuild?

推荐答案

我会推荐 stronlgy 通过 Microsoft.Build 命名空间.微软到处都在使用它,所以这应该很重要......

I would recommend stronlgy to go the official route via classes/interfaces in Microsoft.Build namespace. Microsoft uses this all over the place, so this should count for something...

特别是.类 Microsoft.Build.Execution.BuildManager 和 Singleton Microsoft.Build.Execution.BuildManager.DefaultBuildManager 是您运行构建任务所需要的...源代码示例:

Esp. the class Microsoft.Build.Execution.BuildManager and the Singleton Microsoft.Build.Execution.BuildManager.DefaultBuildManager is what you are after to run a build task... source code examples:

  • http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/ec95c513-f972-45ad-b108-5fcfd27f39bc/
  • 使用 MSBuild 4.0 记录构建消息

这篇关于以编程方式运行 MSBuild的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)