1

我正在使用 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 项目的所有依赖项都是作为调试构建的。

有什么方法可以强制它在 Release 上构建所有依赖项?

4

2 回答 2

1

引擎类已过时。
请改用Microsoft.Build.Evaluation.ProjectCollection。它可以像从命令行调用 msbuild 时一样传递全局属性。

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

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

于 2011-03-02T17:13:54.190 回答
1

在引擎上设置全局属性:

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

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

于 2011-03-02T22:39:38.530 回答