Поделиться через


SolutionBuild2.BuildState - свойство

Обновлен: Ноябрь 2007

Возвращает сведения о том, запускалось ли построение во время текущего сеанса работы в среде, осуществляется ли построение в текущий момент или оно уже завершено.

Пространство имен:  EnvDTE80
Сборка:  EnvDTE80 (в EnvDTE80.dll)

Синтаксис

'Декларация
ReadOnly Property BuildState As vsBuildState
'Применение
Dim instance As SolutionBuild2
Dim value As vsBuildState

value = instance.BuildState
vsBuildState BuildState { get; }
property vsBuildState BuildState {
    vsBuildState get ();
}
function get BuildState () : vsBuildState

Значение свойства

Тип: EnvDTE.vsBuildState
Значение vsBuildState, представляющее состояние операции построения.

Реализации

SolutionBuild.BuildState

Заметки

BuildState имеет значение vsBuildStateNotStarted, поэтому можно обнаружить состояние гонки; а именно, процесс, который запускает среду для выполнения построения, а затем проверяет состояние построения фактического начала построения. Чтобы избежать такой ситуации, следует проверить, не имеет ли свойство vsBuildState значениеvsBuildStateNotStarted. Это также позволяет определить, допустимо ли значение свойства LastBuildInfo.

Примеры

В этом примере определяется состояние построения для каждой активной начальной конфигурации. Перед запуском этой надстройки откройте проект в интегрированной среде разработки Visual Studio.

Дополнительные сведения о запуске этого примера в виде надстройки см. в разделе Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации.

Imports EnvDTE
Imports EnvDTE80
Public Sub OnConnection(ByVal application As Object, _
 ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
 ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    SolutionBuild2Example(_applicationObject)
End Sub
Sub SolutionBuild2Example(ByVal dte As DTE2)
    ' Open a solution in the Visual Studio IDE
    ' before running this example.
    Try
        Dim sb As SolutionBuild2
        sb = CType(_applicationObject.Solution.SolutionBuild _
        , SolutionBuild2)
        Dim sc As SolutionConfiguration2
        sc = CType(sb.ActiveConfiguration, SolutionConfiguration2)
        Dim vsBldSt As vsBuildState
        Dim msg As String = "Return relative path to startup  _
        projects: "
        For Each s As String In CType(sb.StartupProjects, Array)
            msg &= vbCr & " " & s
        Next
        msg &= vbCr & "SolutionConfiguration: " & sc.Name
        vsBldSt = sb.BuildState
        If (vsBldSt = vsBuildState.vsBuildStateDone) Then
            msg &= vbCr & "A build has occurred."
        ElseIf (vsBldSt = vsBuildState.vsBuildStateInProgress) Then
            msg &= vbCr & "A build is in progress."
        Else : msg &= vbCr & "A build has not occurred."
        End If
        MsgBox(msg)
    Catch ex As System.Exception
        MsgBox(ex.ToString)
    End Try
End Sub
using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    SolutionBuild2Example(_applicationObject);
}
public void SolutionBuild2Example(DTE2 dte)
{
    try
    {
        SolutionBuild2 sb =
 (SolutionBuild2)_applicationObject.Solution.SolutionBuild;
        SolutionConfiguration2 sc =
 (SolutionConfiguration2)sb.ActiveConfiguration;
        vsBuildState vsBS;
        string msg = "Return relative path to startup projects: ";
        foreach (String s in (Array)sb.StartupProjects)
        {
            msg += "\n   " + s;
        }
        msg += "\nSolutionConfiguration: " + sc.Name;
        vsBS = sb.BuildState;
        if (vsBS == vsBuildState.vsBuildStateDone)
            msg += "\nA build has occurred.";
        else if (vsBS == vsBuildState.vsBuildStateInProgress)
            msg += "\nA build is in progress.";
        else msg += "\nA build has not occurred.";
        MessageBox.Show(msg);
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Разрешения

См. также

Ссылки

SolutionBuild2 Интерфейс

SolutionBuild2 - члены

BuildState - перегрузка

EnvDTE80 - пространство имен