【问题标题】:How do I perform a Clean before Building using Microsoft.Build.Evaluation (MSBuild)如何使用 Microsoft.Build.Evaluation (MSBuild) 在构建之前执行清理
【发布时间】:2016-04-15 17:15:13
【问题描述】:

我正在使用以下代码来构建一个项目。我想先执行清理(或者我想只是强制重建?) - 但我找不到任何说明我如何执行此操作的文档:

    Private Shared _globalProp As Dictionary(Of String, String)
    Private Shared _logger As BuildLogger

    Dim thisProject As Project = Nothing
    Dim buildSuceeded As Boolean

    If _globalProp Is Nothing Then
        _globalProp = New Dictionary(Of String, String)
        _globalProp.Add("Configuration", "Release")
        _globalProp.Add("Platform", "x86")
    End If
    _logger = New BuildLogger

    thisProject = New Project(projectFilename, _globalProp, "14.0")
    buildSuceeded = thisProject.Build(_logger)

【问题讨论】:

  • 看起来您可以将构建目标(字符串)数组添加到构建调用中。 msdn.microsoft.com/en-us/library/dd234380.aspx
  • @JerryM - 谢谢,但我不知道我需要在该数组中传递什么。这方面的文档非常稀缺
  • 我猜这里。尝试添加一条语句 'Dim targets As String() = {"clean"}',然后将目标作为第一个参数添加到 Build 调用中。

标签: .net vb.net build msbuild rebuild


【解决方案1】:

感谢@JerryM 指出了正确的方向。

我似乎无法找到同时接受目标和记录器的 Build 方法的适当重载,所以我现在分两步执行此操作,这似乎符合我的要求:

        thisProject = New Project(projectFilename, _globalProp, "14.0")

        Dim targets As String() = {"Clean"}
        cleanSucceeded = thisProject.Build(targets)

        buildSuceeded = thisProject.Build(_logger)

【讨论】:

  • 也许不同版本的 .Net Framework 具有您需要的重载。我的其他评论中的链接喜欢你需要的超载。
猜你喜欢
  • 2015-05-27
  • 2017-04-26
  • 2014-05-08
  • 1970-01-01
  • 2020-10-13
  • 2011-03-24
  • 2012-12-11
相关资源
最近更新 更多