【问题标题】:How can I get output file names after a C# MSBuild completes?C# MSBuild 完成后如何获取输出文件名?
【发布时间】:2016-04-21 18:24:55
【问题描述】:

我正在使用BuildManager.DefaultBuildManager.Build() 构建一个包含许多项目的视觉工作室解决方案。我的代码看起来像 lot like this

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

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

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

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

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

【问题讨论】:

    标签: c# msbuild


    【解决方案1】:

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

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

    【讨论】:

    • 像魅力一样工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多