我试图创建一个构建服务器应用程序,它将获取源代码并将其构建到可执行文件和 DLL 中。我的解决方案很大,包含多个项目,具体取决于同一解决方案中的其他项目。内置 VS 在发布配置中持续大约。10分钟。因此,构建它的唯一方法可能是将它们构建为一个解决方案。这是我正在运行的代码(尽可能准确,我正在尝试恢复它):
var props = new Dictionary<string, string>();
props["Configuration"] = "Release";
var request = new BuildRequestData(solutionFullPath, props, null, new string[] { "Build" }, null);
var parms = new BuildParameters();
var buildManager = BuildManager.DefaultBuildManager;
var logger = new FileLogger() { Parameters = @"logfile=C:\temp\build.log" };
parms.Loggers = new List<ILogger>() { 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 });
结果是一样的。该进程正在运行并使用越来越多的 RAM(使用量的增加非常慢 1MB / 5-10 秒)。一小时后大约是。0.5GB 的内存大小。当我在 Build() 方法之前停止它并运行它时,任务管理器中没有创建新进程,因此它可能没有调用 msbuild.exe。日志文件已创建,但没有一行,它的字节数正好为零。没有创建 bin 或 obj 目录,一切看起来都没有通过 Build() 方法进行更改。
我已经走到了死胡同,不知道该检查什么,不知道该做什么。
有人对这个问题有任何建议/解决方案吗?我真的很感激任何可以解决我的问题的建议。