MSBuild:在BuildEngine中定义子项目构建配置

时间:2011-03-02 15:42:49

标签: c# msbuild msbuild-buildengine

我正在使用BuildEngine作为创建单击构建环境的一个步骤。代码如下:

Engine engine = new Engine();
FileLogger logger = new FileLogger { Parameters = @"logfile=C:\builds\build.log" };
engine.RegisterLogger(logger);

var project = new Project(engine);
project.Load("Example.csproj");
project.SetProperty("Configuration", "Release");

bool success = project.Build();

他似乎用发布配置构建项目示例。但是当我查看build.log时,Example项目的所有依赖项都构建为debug。

有没有办法强制它在Release上构建所有依赖项?

2 个答案:

答案 0 :(得分:1)

Engine课程已过时 请改用Microsoft.Build.Evaluation.ProjectCollection。 它可以像从命令行调用msbuild时那样传递全局属性。

我应该警告你,msbuild会占用大量内存。我在构建机器上有一个机器人作为服务工作。当它收到构建它的命令时,它会创建新进程并调用Build()。有时内存使用量达到2GB(我们的构建很大)。当您从命令行调用MSBuild时,它释放内存更有效。

尝试在循环中测试2个实现 - 抛出API并抛出调用MSBuild.exe。可能在MSBuild 4.0 MS解决了那些内存问题。

答案 1 :(得分:1)

在引擎上设置全局属性:

BuildPropertyGroup bpg = new BuildPropertyGroup ();
bpg.SetProperty ("Configuration", "Release");
engine.GlobalProperties = bpg;

这些将覆盖项目本身设置的属性。

相关问题