逐步解說:建立精靈

精靈是一種程式,它會帶領使用者執行一連串動作,藉以完成複雜、重複或困難的工作,例如 [增益集精靈]。 以 Windows 為例,它會利用精靈連線至網路資源、連接至印表機等等。

在 Visual Studio 中,精靈通常會提出一連串問題,並要求使用者輸入資訊,然後再根據輸入的結果產生程式碼。 但是,精靈不一定都會顯示使用者介面 (UI), 也可以設計為在幕後產生程式碼,不讓使用者看到。

精靈有下列三種不同的類型:

  • 新增專案精靈 -- 正如其名,這類型精靈是用來為特定類型的專案產生新的程式碼,讓使用者能開始加入自己的程式碼。 這是最常使用的精靈類型。

  • 加入新項目精靈 -- 這類型精靈是用來在專案中加入新的項目,例如 Web Form、文字檔、HTML 網頁、XML 網頁等。

  • 自訂精靈 -- 這類型精靈不是從對話方塊中呼叫, 而是直接從增益集 (Add-In)、巨集或其他類型的程式碼中呼叫。 自訂精靈可能會顯示 UI,也可能不會顯示。 但不論顯示與否,都會產生程式碼。 這種類型的精靈最不常使用。

不論是何種類型的精靈,都具有下列共同特性:

  • 它們都是 .NET 物件,可實作 IDTWizard 介面,而且都有相關聯的 Execute 方法,其中包含您要精靈執行的程式碼。

  • 它們都會使用 .vsz 檔案在 Visual Studio 中顯示自己。

  • 它們都會產生程式碼或執行某些其他工作。

在您建立的精靈中,您可以自訂各項目的外觀。 精靈多半是由一個或多個視窗或頁面所組成。 頁面可以包含描述性的影像 (例如在頁面的頂端或左邊)、標籤描述、指示,以及可放置巡覽控制項 (例如 [下一步] 和 [上一步]) 的區域。

在 Visual C++ 中建立精靈的程序,與建立標準 Visual Studio 精靈的程序略有不同。 如需以 Visual C++ 為目標建立精靈的詳細資訊,請參閱設計精靈建立自訂精靈

注意事項注意事項

根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。 使用 [一般開發設定] 開發了這些程序。 若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。 如需詳細資訊,請參閱 使用設定

基本精靈範例

Visual Studio 增益集精靈

上圖顯示 [增益集精靈] 的面板,這是「新增專案」類型的精靈,它會帶領您執行一連串建立增益集的步驟。 您可以自訂精靈的外觀,不過 [增益集精靈] 就是標準類型精靈樣式的良好範例。 完成的精靈將會變成 [新增專案] 或 [加入新項目] 對話方塊中可使用的樣板。

下面將說明如何建立基本精靈並選擇性地指定自訂圖示。

若要在 Visual Basic 和 Visual C# 中建立基本精靈

  1. 以系統管理員身分執行 Visual Studio。 註冊精靈必須更新登錄,因此需要此權限。

  2. 建立名為 MyNewWizard 的新類別庫 (Class Library) 專案。

  3. 在專案中加入 EnvDTEEnvDTE80 的參考。

    若要進行這動作,請以滑鼠右鍵按一下專案,然後按一下 [加入參考]。 在 [加入參考] 對話方塊的 [.NET] 索引標籤中,按一下 [EnvDTE] 和 [EnvDTE80],然後按一下 [確定]。

在類別模組中,加入 EnvDTEEnvDTE80 的參考,並且實作 IDTWizard 介面。 在此 Visual C# 範例中,您還必須加入 System.Windows.FormsSystem.Runtime.InteropServices 的參考。

Imports EnvDTE
Imports EnvDTE80
Public Class Class1
    Implements IDTWizard
using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE;
using EnvDTE80;
using System. Windows.Forms;

using System.Runtime.InteropServices;

namespace MyNewWizard
{

[ComVisible(true)]

[Guid("20184B81-7C38-4E02-A1E3-8D564EEC2D25"),

ProgId("MyNewWizard.Class1")]

    public class Class1 : IDTWizard
    {
    }
}

當您將 Implements 陳述式 (Statement) 加入至 Visual Basic 時,請將游標定位於該行的結尾,然後按下 enter,即可自動建立 Execute 方法程序。 但是在 Visual C# 中,則必須以手動方式加入 Execute 程序:

public class Class1 : IDTWizard
    {
    public void Execute(object Application, 
        int hwndOwner, ref object[] contextParams, 
        ref object[] customParams, 
        ref EnvDTE.wizardResult retval)
  1. Execute 程序中加入您要精靈執行的程式碼。 在此範例中,我們只會加入簡單的訊息方塊。

    您將具有下列項目:

    Imports EnvDTE
    Imports EnvDTE80
    
    Public Class Class1
        Implements IDTWizard
    
        Public Sub Execute(ByVal Application As Object, ByVal _
        hwndOwner As Integer, ByRef ContextParams() As Object, ByRef _
        CustomParams() As Object, ByRef retval As EnvDTE.wizardResult) _
        Implements EnvDTE.IDTWizard.Execute
            MsgBox("The wizard is now running.")
        End Sub
    End Class 
    
    using System.Text;
    using EnvDTE;
    using EnvDTE80;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace MyNewWizardCS
    {
        public class Class1 : IDTWizard
        {
    
        public void Execute(object Application, 
            int hwndOwner, ref object[] contextParams, 
            ref object[] customParams, 
            ref EnvDTE.wizardResult retval)
        {
            MessageBox.Show("The wizard is now running.");
        }
    }
    
    }
    

    當精靈啟動時便會呼叫 Execute 程序。

  2. 以滑鼠右鍵按一下 [方案總管] 中的專案、按一下 [屬性] 開啟 [專案屬性] 頁面、按一下 [建置] 索引標籤,然後核取頁面最下方的 [註冊 COM Interop] 方塊。

  3. 在 AssemblyInfo.cs 檔中,尋找 [ComVisible] 屬性並將它設為 true。

  4. 按一下 [建置] 功能表上的 [建置方案],即可建置方案以便建立類別庫 (Class Library) dll。

  5. 針對精靈建立名為 MyNewWizard.vsz 的 .vsz 文字檔。

    若要這麼做,請製作一份現有 .vsz 檔 (例如在 <Visual Studio 安裝目錄>\VC#\CSharpProjectItems\Windows Forms 的其中任何一個檔案) 的複本,然後將它重新命名為 "MyNewWizard.vsz"。

    .vsz 檔案是文字檔,可以讓 Visual Studio 辨識精靈,並且將精靈顯示在 [新增專案] 或 [加入新項目] 對話方塊中。 Wizard 參數應設定為專案的 progID (Project.Classname) 或 GUID。 如需詳細資訊,請參閱 設定 .Vsz 檔案以啟動精靈

    注意事項注意事項

    您也可以選擇為精靈建立 VSDir 檔案。 這個檔案包含在 [加入新的專案] 或 [新增檔案] 對話方塊中顯示為精靈描述的資訊。 它也可以讓您指定圖示,以及排列它在清單中的位置。 如需詳細資訊,請參閱 使用 .Vsdir 檔案將精靈加入至加入項目和新增專案對話方塊

  6. 以下列內容取代 MyNewWizard.vsz 的內容。

    VSWizard 7.0
    Wizard=MyNewWizard.Class1
    Param=First Item
    Param=Second Item
    
  7. 將新的 .vsz 檔案儲存在您希望精靈出現的目錄中。

    在這個範例中,我們希望精靈出現在 Visual Basic 專案的 [加入新項目] 對話方塊中,因此將 .vsz 檔案儲存在下列目錄中:<Visual Studio 安裝目錄>\VB\VBProjectItems。

  8. 結束 Visual Studio,然後重新啟動。

    這麼做會強制 Visual Studio 讀取新的 .vsz 檔。

  9. 建立新的 Visual Basic 專案,例如 Windows 應用程式專案。

  10. 以滑鼠右鍵按一下專案、指向 [加入項目],然後按一下 [新增項目]。

    您應該會在 [加入新項目] 對話方塊中看見新的精靈 (MyNewWizard)。

  11. 按一下精靈,再按一下 [加入] 按鈕。

    您將會看到「精靈正在執行」的訊息。

若要顯示新精靈的自訂圖示

  • 將主檔名與 .dll 檔相同,但副檔名為 .ico 的圖示檔案,放在精靈檔案所在的同一個目錄中。

    例如,如果精靈的名稱為 MyNewWizard.dll,就將 .ico 檔命名為 MyNewWizard.ico。

    -或-

  • 如果您已建立 VSDir 檔案,請在該檔案中指定圖示 (.ico) 檔案的路徑。

請參閱

工作

HOW TO:建立增益集

參考

IDTWizard

Visual Studio 命令和參數

概念

Automation 物件模型圖表

使用 .Vsdir 檔案將精靈加入至加入項目和新增專案對話方塊

設定 .Vsz 檔案以啟動精靈

其他資源

建立增益集和精靈