使用BuildManager.Build()从代码生成解决方案

使用BuildManager.Build()从代码生成解决方案,build,buildmanager,Build,Buildmanager,我已经尝试创建一个构建服务器应用程序,它将获取源代码并将其构建到可执行文件和DLL中。我的解决方案相当大,包含多个项目,依赖于同一解决方案中的其他项目。内置VS在版本配置中持续约10分钟。因此,可能构建它的唯一方法是将它们构建为一个解决方案。下面是我正在运行的代码(尽可能准确,我正在尝试恢复它): var props=newdictionary(); 道具[“配置”]=“发布”; var request=newbuildrequestdata(solutionFullPath,props,nul

我已经尝试创建一个构建服务器应用程序,它将获取源代码并将其构建到可执行文件和DLL中。我的解决方案相当大,包含多个项目,依赖于同一解决方案中的其他项目。内置VS在版本配置中持续约10分钟。因此,可能构建它的唯一方法是将它们构建为一个解决方案。下面是我正在运行的代码(尽可能准确,我正在尝试恢复它):

var props=newdictionary();
道具[“配置”]=“发布”;
var request=newbuildrequestdata(solutionFullPath,props,null,新字符串[]{“Build”},null);
var parms=newbuildParameters();
var buildManager=buildManager.DefaultBuildManager;
var logger=new FileLogger(){Parameters=@“logfile=C:\temp\build.log”};
parms.Loggers=新列表(){logger};
parms.DetailedSummary=true;
var result=buildManager.Build(parms,request);
问题是在最后一行,这个电话永远不会结束(我已经等了一个小时)

我也尝试过不同的方法,只是尝试构建一个项目:

var logger = new FileLogger() { Parameters = @"logfile=C:\temp\build.log" };
var projectInstance = new ProjectInstance(solutionFullPath);

projectInstance.SetProperty("Configuration", "Release");
projectInstance.Build(new List<ILogger>() { logger });
var logger=new FileLogger(){Parameters=@“logfile=C:\temp\build.log”};
var projectInstance=新的projectInstance(solutionFullPath);
projectInstance.SetProperty(“配置”、“发布”);
Build(新列表(){logger});
结果是一样的。进程正在运行并使用越来越多的RAM(使用率的增加非常缓慢,1 MB/5-10秒)。一小时后,它在内存中的大小约为0.5GB。当我在Build()方法之前停止它并运行它时,不会在任务管理器中创建新进程,因此它可能没有调用msbuild.exe。日志文件已创建,但没有一行,它只有零字节。没有创建bin或obj目录,Build()方法看起来没有任何更改

我已经到了死胡同,不知道该检查什么,不知道该做什么

有人对这个问题有什么建议/解决方案吗?我真的很感激任何能帮助我解决问题的建议

var logger = new FileLogger() { Parameters = @"logfile=C:\temp\build.log" };
var projectInstance = new ProjectInstance(solutionFullPath);

projectInstance.SetProperty("Configuration", "Release");
projectInstance.Build(new List<ILogger>() { logger });