共用方式為


逐步解說: 使用自動化來呼叫 Visual Studio 的 SDK

這個逐步解說將說明如何建立使用 Visual Studio 服務是 Visual Studio 增益集。 您所建立的增益集取得服務提供者,並用它來取得服務。 若要取得任何 proffered 的 Visual Studio 服務,您可以使用這項技術。 如需有關服務和服務提供者的詳細資訊,請參閱服務。 下列程序會示範如何建立增益集,然後再取得服務,從 [增益集。

建立增益集

在本節中,您會建立 Visual Studio 的嵌入式管理單元使用 Visual Studio 增益功能] 專案範本。

若要建立增益集

  1. 開啟 Visual Studio。 在檔案 功能表上指向 新增 ,然後按一下 新的專案

    [新增專案] 對話方塊隨即出現。

  2. 在左窗格中新的專案 對話方塊方塊中,展開 其他專案類型 節點,然後按一下 [ 擴充性節點。

  3. 建立新的Visual Studio增益集專案名為增益集。

    Visual Studio會執行增益集精靈 」。

  4. 選取程式語言頁面上,選取 會使用 [增益集在建立視覺化的 C#建立的增益集使用 Visual Basic

  5. 選取主應用程式 頁面上,選取 Visual Studio 2010 Microsoft ,並清除 Microsoft Visual Studio 2010年巨集

  6. 輸入名稱和描述 頁面上,輸入 MyAddin 在名稱 方塊和 MyAddin 逐步解說 在 描述方塊。

  7. 增益集選項中選擇 [ 頁面上,選取您是否要建立命令列 UI 的增益集?. 清除其他核取方塊。

  8. 接受所有其他預設值。

  9. 建置解決方案,請確認在編譯時未發生任何錯誤。

取得服務嵌入式管理單元

下列步驟會引導您取得增益集的服務。

若要取得服務

  1. 開啟檔案 Connect.cs 或 Connect.vb,然後加入這幾行加入using (C#) 或Imports (Visual Basic) 陳述式:

    Imports System.Runtime.InteropServices
    Imports Microsoft.VisualStudio.OLE.Interop
    Imports Microsoft.VisualStudio.Shell.Interop
    Imports IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider
    
    using System.Runtime.InteropServices;
    using Microsoft.VisualStudio.OLE.Interop;
    using Microsoft.VisualStudio.Shell.Interop;
    using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
    
  2. 以滑鼠右鍵按一下專案節點,在方案總管] 中 ,來新增這些效果。NET 的參考:

    Microsoft.VisualStudio.OLE.Interop
    Microsoft.VisualStudio.Shell.Interop
    
  3. 加入下列幾行程式碼必須以if(commandName == "Addin.Connect.Addin")或If commandName = "Addin.Connect.Addin" Then的子句Exec方法:

    If commandName = "Addin.Connect.Addin" Then 
        Dim sp As IOleServiceProvider = DirectCast(_applicationObject, IOleServiceProvider)
        Dim SID As Guid = GetType(SVsUIShell).GUID
        Dim IID As Guid = GetType(IVsUIShell).GUID
        Dim output As IntPtr
        sp.QueryService(SID, IID, output)
        Dim uiShell As IVsUIShell = DirectCast(Marshal.GetObjectForIUnknown(output), IVsUIShell)
    
        Dim clsid As Guid = Guid.Empty
        Dim result As Integer
        uiShell.ShowMessageBox(0, clsid, "MyAddin", String.Format(System.Globalization.CultureInfo.CurrentCulture, "Inside " & Me.ToString()), String.Empty, 0, _
        OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result)
    
        handled = True 
        Return 
    End If
    
    if (commandName == "Addin.Connect.Addin")
    {
        IOleServiceProvider sp = (IOleServiceProvider)
          _applicationObject;
        Guid SID = typeof(SVsUIShell).GUID;
        Guid IID = typeof(IVsUIShell).GUID;
        IntPtr output;
        sp.QueryService(ref SID, ref IID, out output);
        IVsUIShell uiShell = (IVsUIShell)Marshal.GetObjectForIUnknown(output);
    
        Guid clsid = Guid.Empty;
        int result;
        uiShell.ShowMessageBox(
           0,
           ref clsid,
           "MyAddin",
           string.Format(
              CultureInfo.CurrentCulture, "Inside " + this.ToString()),
           string.Empty,
           0,
           OLEMSGBUTTON.OLEMSGBUTTON_OK,
           OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
           OLEMSGICON.OLEMSGICON_INFO,
           0,
           out result);
    
        handled = true;
        return;
    }
    

    這段程式碼轉換目前的應用程式物件 (型別DTE2) 到IOleServiceProvider,然後呼叫QueryService以取得SVsUIShell服務。 這項服務提供IVsUIShell介面。 ShowMessageBox增益集執行時,方法會顯示訊息方塊。

  4. 建置和偵錯模式中啟動增益集專案,按下 f5 鍵。

    這會啟動另一個執行個體的Visual Studio。

  5. 在新Visual Studio執行個體,在工具] 功能表中,按一下 增益集。 訊息方塊會顯示這個:

    MyAddin
    Inside Addin.Connect
    

請參閱

工作

如何:停用和移除增益集