逐步解說:建立精靈
更新:2007 年 11 月
精靈是一種程式,它會帶領使用者執行一連串動作,藉以完成複雜、重複或困難的工作,例如 [增益集精靈]。以 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# 中建立基本精靈
建立名為 MyNewWizard 的新類別庫 (Class Library) 專案。
-
若要進行這動作,請以滑鼠右鍵按一下專案,然後按一下 [加入參考]。在 [加入參考] 對話方塊的 [.NET] 索引標籤中,按一下 [EnvDTE] 和 [EnvDTE80],然後按一下 [確定]。
在類別模組中,加入 EnvDTE 和 EnvDTE80 的參考,並且實作 IDTWizard 介面。在此 Visual C# 範例中,您還必須加入 System.Windows.Forms 的參考。
Imports EnvDTEImports EnvDTE80 Public Class Class1 Implements IDTWizard
using System; using System.Collections.Generic; using System.Text; using EnvDTE;using EnvDTE80;using Windows.System.Forms; namespace MyNewWizard { 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)
在 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; 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 程序。
在 Visual Basic 中,以滑鼠右鍵按一下 [方案總管] 中的專案、按一下 [屬性] 開啟 [專案屬性] 頁面、按一下 [編譯] 索引標籤,然後核取頁面最下方的 [註冊 COM Interop] 方塊。
在 Visual C# 中,您不需要進行此步驟。
按一下 [建置] 功能表上的 [建置方案],即可建置方案以便建立類別庫 (Class Library) dll。
針對精靈建立名為 MyNewWizard.vsz 的 .vsz 文字檔。
若要這樣做,請按一下 [檔案]、指向 [新增],然後按一下 [檔案]。
.vsz 檔案是文字檔,可以讓 Visual Studio 辨識精靈,並且將精靈顯示在 [新增專案] 或 [加入新項目] 對話方塊中。Wizard 參數應設定為專案的 progID (Project.Classname) 或 GUID。如需詳細資訊,請參閱 設定 .Vsz 檔案以啟動精靈。
注意事項: 您也可以選擇為精靈建立 VSDir 檔案。這個檔案包含在 [加入新的專案] 或 [新增檔案] 對話方塊中顯示為精靈描述的資訊。它也可以讓您指定圖示,以及排列它在清單中的位置。如需詳細資訊,請參閱 使用 .Vsdir 檔案將精靈加入至加入項目和新增專案對話方塊。
將下列程式碼加入至 MyNewWizard.vsz:
VSWizard 7.0 Wizard=MyNewWizard.Class1 Param=First Item Param=Second Item
將新的 .vsz 檔案儲存在您希望精靈出現的目錄中。
在這個範例中,我們希望精靈出現在 Visual Basic 專案的 [加入新項目] 對話方塊中,因此將 .vsz 檔案儲存在下列目錄中:<drive>:\Program Files\Microsoft Visual Studio 8\VB\VBProjectItems。
結束 Visual Studio,然後重新啟動。
這麼做會強制 Visual Studio 讀取新的 .vsz 檔案。
建立新的 Visual Basic 專案,例如 Windows 應用程式專案。
以滑鼠右鍵按一下專案、指向 [加入項目],然後按一下 [新增項目]。
您應該會在 [加入新項目] 對話方塊中看見新的精靈 (MyNewWizard)。
按一下精靈,再按一下 [加入] 按鈕。
您將會看到「精靈正在執行」的訊息。
若要顯示新精靈的自訂圖示
將主檔名與 .dll 檔相同,但副檔名為 .ico 的圖示檔案,放在精靈檔案所在的同一個目錄中。
例如,如果精靈的名稱為 MyNewWizard.dll,就將 .ico 檔命名為 MyNewWizard.ico。
-或-
如果您已建立 VSDir 檔案,請在該檔案中指定圖示 (.ico) 檔案的路徑。
請參閱
工作
概念
使用 .Vsdir 檔案將精靈加入至加入項目和新增專案對話方塊