مشاركة عبر


كيفية القيام بما يلي: إنشاء و الإرفاق إلى إلى مثيل آخر من برنامج ‏‫Visual Studio

في بعض حالات هو مفيدة لإنشاء مثيل جديد من Visual Studioأو يرفق إلى مثيل معين من بشكل مبرمج Visual Studioالتي هو مسبقاً تشغيل. إذا مثيلين من Visual Studioقيد التشغيل تشغيل النظام ويتضمن كل من نفس الحل فتح — تشغيل سبيل المثال، يجري مثيل واحد لبناء حل والآخر هو إجراء بنية يصحح — يمكنك برمجة الوظيفة الإضافية إلى التمييز بينهما.

يمكنك، على سبيل المثال:

  • قم بتشغيل مثيل Visual Studioيعمل تشغيل مساراً إلى ملف أو soluti تشغيل.

  • قم بإرفاق نسخة عن Visual Studioاستناداً إلى مسار إلى ملف أو الحل.

  • قم بتحميل الملف أو الحل في مثيل موجود من Visual Studio.

  • إنشاء مثيل جديد من Visual Studioالموقع المثيل إيقاف متى:

    • عدد مرجع خارجي تشغيل كلا DTEالكائن Solutionالكائن هي 0.

      -و-

    • بيئة التطوير المتكاملة (IDE) هو dهوplayed ليس للمستخدم أو هو ليس ضمن عنصر تحكم مستخدم.

  • إنشاء مثيل جديد من Visual Studioالموقع يظل تم تحميله المثيل حتى وقت:

    • عدد مرجع خارجي تشغيل كلا DTEالكائن Solutionالكائن هي 0.

    • IDE هو dهوplayed للمستخدم.

      -و-

    • IDE تحت تحكم مستخدم.

يمكن أن يتم تحويل الكائنات التي تم إرجاعها إلى الكائنات الخاصة بها، مثل DTE2و Solution2.

ملاحظة

قد تختلف مربعات الحوار وأوامر القائمة التى تشاهدها الان عن تلك الموصوفة في التعليمات اعتماداً على الإعدادات النشطة أو الإصدار الخاص بك. تم تطوير هذه الإجراءات من خلال "إعدادات تطوير عام" النشط. To change your settings, choose Import and Export Settings on the Tools menu. لمزيد من المعلومات، راجع العمل مع إعدادات.

مثال

لإنشاء مثيل جديد من Visual Studio، استخدم أي CreateObject Function (Visual Basic)أو System.Activator.CreateInstance. عند استخدام CreateObjectدالة في Visual Basic، يمكنك تمرير قيم "VisualStudio.DTE.10.0."الأمثلة أدناه توضيح هذه الأساليب.

' 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;
}

في Visual Basicسبيل المثال، كل من عبارات إنشاء مثيل جديد من Visual StudioIDE. العبارة الأولى مباشرة إنشاء مثيل جديد ببينما العبارة ثانية إنشاء مثيل جديد بواسطة إنشاء أحد الحلول جديدة.

إلى الحصول على مرجع إلى مثيل موجود من Visual StudioIDE، يمكنك استخدام GetObject Function (Visual Basic). يمكنك تنفيذ واحد الإجراءات التالية:

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")

راجع أيضًا:

المبادئ

إضافة-في التسجيل

موارد أخرى

إنشاء إضافة-زر 'Ins' ومعالجات