c# - 以编程方式运行 MSBuild

标签 c# msbuild processstartinfo

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

string command = string.Format(@"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe  ""{0}\{1}.csproj""", _args.ProjectPath, _args.ProjectName);

字符串呈现为:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe  "C:\...\TestResults\Foo 2011-08-31 16_29_40\Out\Foo\solutionName\projectName\projectName.csproj"

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

MSBUILD : error MSB1008: Only one project can be specified.
Switch: 16_29_40\Out\Foo\solutionName\projectName\projectName.csproj

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

最佳答案

我建议 stronglgy 通过 Microsoft.Build 中的类/接口(interface)走官方路线命名空间。微软到处都在使用它,所以这应该很重要......

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

关于c# - 以编程方式运行 MSBuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264682/

相关文章:

c# - 编译 XNA 项目时无法执行请求的操作错误

javascript - Windows上的 Node npm错误寻找工具版本

c# - 从 WH_KEYBOARD_LL Hook 中向窗口发送消息

c# - 在 ASP.NET Core 应用程序中从 wwwroot 提供 SPA 时如何控制浏览器缓存过期

c# - ASP.NET MVC 3 中复杂类型列表的最佳实践

c# - 用字符串中的两个单引号替换所有单引号

msbuild - Windows Phone(通用)应用程序中的构建错误

c# - 使用 Process.Start : Firefox not starting when you set Usename and Password 启动 Firefox

c# - ProcessStartInfo - 在控制台窗口中打印输出并打印到文件 (C#)

c# - ProcessStartInfo 无法调用 perl.exe