如何在使用Microsoft.Build.Evaluation (MSBuild)进行构建之前执行清理操作?

4

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

    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)

看起来你可以将一个构建目标数组(字符串)添加到Build调用中。https://msdn.microsoft.com/zh-cn/library/dd234380.aspx - JerryM
@JerryM - 谢谢,但我不知道我需要传递什么数组。关于这个的文档非常稀少。 - Matt Wilko
我猜测一下。尝试添加语句“Dim targets As String() = {“clean”}”,然后将targets作为Build调用的第一个参数添加进去。 - JerryM
1个回答

2

感谢@JerryM的指引。

我似乎找不到一个适当的Build方法重载,它可以同时接受目标和日志记录器,所以现在我要分两步来完成,这似乎可以满足我的需求:

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

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

        buildSuceeded = thisProject.Build(_logger)

也许不同版本的 .Net Framework 有你需要的重载。我在另一条评论中提供的链接看起来就是你需要的重载。 - JerryM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接