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

时间:2016-01-16 03:39:19

标签: c# msbuild

我使用BuildManager.DefaultBuildManager.Build()构建包含许多项目的visual studio解决方案。我的代码看起来是lot like this

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

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

我可以scan the SLN文件,然后推断输出位置。但这很容易出错并且很乏味。

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

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

1 个答案:

答案 0 :(得分:2)

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

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");