我有用于构建项目的MS Build脚本。构建逻辑并不简单,因此我实现了自定义MS Build任务,该任务由构建脚本破坏。 在任务中我使用这样的代码
project.Build();
但是,当这个代码被调用时,我看到了异常,带有消息:"无法开始构建,构建已经运行的"。 如何使用MS Build API以编程方式在构建脚本运行的自定义任务中构建项目?
任务代码:
public class SimpleTask : Task
{
public override bool Execute()
{
try
{
var project = ProjectCollection.GlobalProjectCollection.LoadProject("C:/dummy.csproj");
project.Build();
return true;
}
catch (Exception ex)
{
return false;
}
}
}
使用ms内部构建脚本的示例
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="ClassLibrary1.SimpleTask"
AssemblyFile="ClassLibrary1.dll"/>
<Target Name="MyTarget">
<SimpleTask />
</Target>
</Project>
失败的命令:project.Build(); 异常消息:&#34;无法完成操作,因为建筑物已在进行中。&#34;