Udostępnij za pośrednictwem


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

Dodatki Visual Studio zostały zaniechane w programie Visual Studio 2013.Dodatki należy uaktualniać do pakietu rozszerzenia VSPackage.Aby uzyskać więcej informacji na temat uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.

W niektórych przypadkach warto programowo utworzyć nowe wystąpienie Visual Studio lub dołączyć do określonego wystąpienia Visual Studio już jest uruchomiony.Jeśli dwa wystąpienia Visual Studio są uruchomione w systemie i oba mają to samo rozwiązanie Otwórz — na przykład jedno wystąpienie wykonuje rozwiązaniem stworzonym i innych jest wykonać kompilacja do debugowania — można tak 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 rozwiązania.

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

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

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

    • Liczba odwołań zewnętrznych na 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 wówczas, gdy:

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

    • IDE jest wyświetlane użytkownikowi.

      - i -

    • IDE jest sterowany przez użytkownika.

Zwracane obiekty mogą być rzutowane na ich odpowiednich obiektów, takich jak DTE2 i Solution2.

[!UWAGA]

Polecenia menu i okien dialogowych mogą różnić się od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Procedury te zostały opracowane z ogólnych ustawień projektowych active.Aby zmienić swoje ustawienia, wybierz Importuj i eksportujustawienia w menu Narzędzia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Przykład

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

' CreateObject method 1 - VisualStudio.DTE.11.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.11.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.11.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.11.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.11.0");
    Object obj = System.Activator.CreateInstance(type, true);
    EnvDTE80.DTE2 dte8Obj = (EnvDTE80.DTE2)obj;
}

W Visual Basic przykład, zarówno instrukcje tworzenia nowego wystąpienia Visual Studio IDE.Pierwsza instrukcja bezpośrednio tworzy nowe wystąpienie, podczas gdy druga instrukcja tworzy nowe wystąpienie przez utworzenie nowego rozwiązania.

Aby uzyskać odwołanie do istniejącego wystąpienia Visual Studio IDE, można użyć GetObject Function.Można 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.11.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

Rejestracja dodatków

Inne zasoby

Tworzenie dodatków i kreatorów