我正在使用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上构建所有依赖项?
答案 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;
这些将覆盖项目本身设置的属性。