Udostępnij za pośrednictwem


Jak: tworzenie i dołączanie do innego wystąpienia programu Visual Studio

W niektórych przypadkach przydatne jest programowo utworzyć nowe wystąpienie Visual Studio lub dołączyć do konkretnego wystąpienia Visual Studio już działa.Jeśli dwa wystąpienia Visual Studio są uruchomione w systemie i mają tego samego roztworu Otwórz — na przykład jedno wystąpienie wykonuje kompilacji rozwiązania i drugi jest wykonać kompilacja do debugowania — można zaprogramować dodatek do rozróżniania między nimi.

Można, na przykład:

  • Uruchomić wystąpienie Visual Studio na podstawie ścieżki do pliku lub roztworu.

  • Dołącz do wystąpienia Visual Studio na podstawie ścieżki do pliku lub roztworu.

  • Ładowanie pliku lub rozwiązanie do istniejącego wystąpienia Visual Studio.

  • Utwórz nowe wystąpienie Visual Studio gdzie wystąpienie zamyka kiedy:

    • Liczba odwołań zewnętrznych w obu DTE obiektu i Solution obiektu są równe 0.

      - i -

    • Zintegrowane środowisko programistyczne (IDE) nie jest wyświetlana dla użytkownika lub nie jest pod kontrolą użytkownika.

  • Utwórz nowe wystąpienie Visual Studio gdzie wystąpienie pozostaje załadowany nawet kiedy:

    • Liczba odwołań zewnętrznych w obu DTE obiektu i Solution obiektu są równe 0.

    • IDE jest wyświetlany na ekranie.

      - i -

    • IDE jest pod kontrolą użytkownika.

Zwracanych obiektów można rzutować na ich odpowiednich obiektów, takich jak DTE2 i Solution2.

[!UWAGA]

Okien dialogowych i poleceń menu, którą widzisz mogą różnić się od tych opisanych w pomocy, w zależności od tego, aktywne ustawienia lub edition.Procedury te zostały opracowane z ogólnych ustawień rozwoju aktywnych.Aby zmienić ustawienia, wybierz polecenie przywóz i wywózUstawienia na Narzędzia menu.Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.

Przykład

Aby utworzyć nowe wystąpienie Visual Studio, albo użyj CreateObject Function lub System.Activator.CreateInstance.Podczas korzystania z CreateObject funkcjonować w Visual Basic, można przekazać wartości "VisualStudio.DTE.10.0." poniższe przykłady ilustrują tych metod.

' CreateObject method 1 - VisualStudio.DTE.10.0.
Public Sub Exec(ByVal commandName As String, ByVal executeOption _
As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As _
Object,  ByRef handled As Boolean) Implements IDTCommandTarget.Exec
   handled = False
   If executeOption = _
      vsCommandExecOption.vsCommandExecOptionDoDefault Then
      If commandName = "VBTestAddin.Connect.VBTestAddin" Then
          CreateNewInstance1(_applicationObject)
          handled = True
          Exit Sub
      End If
   End If
End Sub

Private Sub CreateNewInstance1(ByVal dte As DTE2)
    Dim inst As Object
    Dim dte80Obj As EnvDTE80.DTE2
    inst = Microsoft.VisualBasic.Interaction. _
    CreateObject("VisualStudio.DTE.10.0", "")
    dte80Obj = CType(inst, EnvDTE80.DTE2)
    MsgBox(dte80Obj.DisplayMode.ToString)
End Sub
' GetTypeFromProgID and CreateInstance method.
Public Sub Exec(ByVal commandName As String, ByVal executeOption _
As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As _
Object,  ByRef handled As Boolean) Implements IDTCommandTarget.Exec
   handled = False
   If executeOption = _
      vsCommandExecOption.vsCommandExecOptionDoDefault Then
      If commandName = "VBTestAddin.Connect.VBTestAddin" Then
          CreateNewInstance2(_applicationObject)
          handled = True
          Exit Sub
      End If
   End If
End Sub

Private Sub CreateNewInstance2(ByVal dte As DTE2)
    Dim Type As System.Type
    Dim inst As Object
    Dim dte80Obj As EnvDTE80.DTE2
    Type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0")
    inst = System.Activator.CreateInstance(Type, True)
    dte80Obj = CType(inst, EnvDTE80.DTE2)
    MsgBox(dte80Obj.DisplayMode.ToString)
End Sub
public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    CreateNewInstance2(_applicationObject);
}

private void CreateNewInstance2(DTE2 dte)
{
    System.Type Type;
    object inst;
    EnvDTE80.DTE2 dte80Obj;
    Type = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
    inst = System.Activator.CreateInstance(Type, true);
    dte80Obj = (EnvDTE80.DTE2)inst;
    System.Windows.Forms.MessageBox.Show
      (dte80Obj.DisplayMode.ToString());
}
// Create a new instance of Visual Studio by using 
// GetTypeFromProgID and CreateInstance.
private void CreateNewInstance1()
{
    System.Type type = System.Type.GetTypeFromProgID
    ("VisualStudio.DTE.10.0");
    Object obj = System.Activator.CreateInstance(type, true);
    EnvDTE80.DTE2 dte8Obj = (EnvDTE80.DTE2)obj;
}

W Visual Basic przykład, obydwa oświadczenia utworzyć nowe wystąpienie Visual Studio IDE.Pierwsza instrukcja tworzy nową instancję bezpośrednio, natomiast druga instrukcja tworzy nową instancję, tworząc nowe rozwiązanie.

Aby uzyskać odwołanie do istniejącego wystąpienia Visual Studio IDE, można użyć GetObject Function.Należy wykonać jedną z następujących czynności:

Private Sub GetInstance1 ()
    Dim inst As Object
    Dim dte80Obj As EnvDTE80.DTE2
    inst = Microsoft.VisualBasic.Interaction.GetObject(, _
    "VisualStudio.DTE.10.0")
    dte80Obj = CType(inst, EnvDTE80.DTE2)
    MsgBox(dte80Obj.DisplayMode.ToString)
End Sub

' -or-
Dim inst As Object
inst = Microsoft.VisualBasic.Interaction.GetObject(, _
  "VisualStudio.Solution.8.0")
' ---------------------------
' -or-
' Change the path to your application.
Dim inst As Object
inst = Microsoft.VisualBasic.Interaction.GetObject _
  ("C:\Projects\WindowsApplication1\WindowsApplication1.sln")
' ---------------------------
' -or-
' Change the path to your application.
Dim inst As Object
inst = Microsoft.VisualBasic.Interaction.GetObject _
  ("C:\Projects\WindowsApplication1\WindowsApplication1.sln", _
  "VisualStudio.Solution.8.0")

Zobacz też

Koncepcje

Dodaj w rejestracji

Inne zasoby

Tworzenie dodatków i kreatorów