C# MSBuild 完成后如何获取输出文件名?
How can I get output file names after a C# MSBuild completes?
我正在使用 BuildManager.DefaultBuildManager.Build() to build a visual studio solution which contains many projects. My code looks a lot like this。
构建完成后,我想将输出(在我的例子中是 DLL)复制到目标文件夹。
但我看不到任何方法可以从 BuildResult 中检索生成输出的文件名。
我可以 scan the SLN 文件,然后推断输出位置。但这将容易出错且乏味。
Build() returns 一个 BuildResult。据我所知,BuildResult 不包含实际的输出文件名。
如何在构建完成后获取输出文件名?
您可以为构建提供输出路径。只需在构建和使用新生成的文件之前清除该文件夹。
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");
我正在使用 BuildManager.DefaultBuildManager.Build() to build a visual studio solution which contains many projects. My code looks a lot like this。
构建完成后,我想将输出(在我的例子中是 DLL)复制到目标文件夹。
但我看不到任何方法可以从 BuildResult 中检索生成输出的文件名。
我可以 scan the SLN 文件,然后推断输出位置。但这将容易出错且乏味。
Build() returns 一个 BuildResult。据我所知,BuildResult 不包含实际的输出文件名。
如何在构建完成后获取输出文件名?
您可以为构建提供输出路径。只需在构建和使用新生成的文件之前清除该文件夹。
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");