如何在 C# MSBuild 完成后获取输出文件名

本文关键字:获取 输出 文件名 MSBuild | 更新日期: 2023-09-27 18:30:40

我正在使用BuildManager.DefaultBuildManager.Build()来构建一个包含许多项目的Visual Studio解决方案。 我的代码看起来很像这样。

构建完成后,我想将输出(在我的例子中为 DLL)复制到目标文件夹。

但是我没有看到任何方法可以从 BuildResult 中检索构建输出的文件名。

我可以扫描SLN文件,然后推断输出位置。 但这将是容易出错和乏味的。

Build

() 返回一个 BuildResult。 据我所知,BuildResult 不包含实际的输出文件名。

构建完成后如何获取输出文件名?

如何在 C# MSBuild 完成后获取输出文件名

您可以为构建提供输出路径。只需在构建和使用新生成的文件之前清除文件夹即可。

var solutionPath = "...";
var outputPath = "...";
var pc = new ProjectCollection();
var properties = new Dictionary<string, string>();
properties.Add("OutputPath", outputPath);
var request = new BuildRequestData(solutionPath, properties, null, new string[] { "Build" }, null);
var result = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), request);
// do stuffs with the dlls
var libraries = Directory.GetFiles(outputPath, "*.dll");