逐步解說:建立精靈
精靈是一種程式,它會帶領使用者執行一連串動作,藉以完成複雜、重複或困難的工作,例如 [增益集精靈]。 以 Windows 為例,它會利用精靈連線至網路資源、連接至印表機等等。
在 Visual Studio 中,精靈通常會提出一連串問題,並要求使用者輸入資訊,然後再根據輸入的結果產生程式碼。 但是,精靈不一定都會顯示使用者介面 (UI), 也可以設計為在幕後產生程式碼,不讓使用者看到。
精靈有下列三種不同的類型:
新增專案精靈 -- 正如其名,這類型精靈是用來為特定類型的專案產生新的程式碼,讓使用者能開始加入自己的程式碼。 這是最常使用的精靈類型。
加入新項目精靈 -- 這類型精靈是用來在專案中加入新的項目,例如 Web Form、文字檔、HTML 網頁、XML 網頁等。
自訂精靈 -- 這類型精靈不是從對話方塊中呼叫, 而是直接從增益集 (Add-In)、巨集或其他類型的程式碼中呼叫。 自訂精靈可能會顯示 UI,也可能不會顯示。 但不論顯示與否,都會產生程式碼。 這種類型的精靈最不常使用。
不論是何種類型的精靈,都具有下列共同特性:
它們都是 .NET 物件,可實作 IDTWizard 介面,而且都有相關聯的 Execute 方法,其中包含您要精靈執行的程式碼。
它們都會使用 .vsz 檔案在 Visual Studio 中顯示自己。
它們都會產生程式碼或執行某些其他工作。
在您建立的精靈中,您可以自訂各項目的外觀。 精靈多半是由一個或多個視窗或頁面所組成。 頁面可以包含描述性的影像 (例如在頁面的頂端或左邊)、標籤描述、指示,以及可放置巡覽控制項 (例如 [下一步] 和 [上一步]) 的區域。
在 Visual C++ 中建立精靈的程序,與建立標準 Visual Studio 精靈的程序略有不同。 如需以 Visual C++ 為目標建立精靈的詳細資訊,請參閱設計精靈和建立自訂精靈。
注意事項 |
---|
根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。 使用 [一般開發設定] 開發了這些程序。 若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。 如需詳細資訊,請參閱 使用設定。 |
基本精靈範例
上圖顯示 [增益集精靈] 的面板,這是「新增專案」類型的精靈,它會帶領您執行一連串建立增益集的步驟。 您可以自訂精靈的外觀,不過 [增益集精靈] 就是標準類型精靈樣式的良好範例。 完成的精靈將會變成 [新增專案] 或 [加入新項目] 對話方塊中可使用的樣板。
下面將說明如何建立基本精靈並選擇性地指定自訂圖示。
若要在 Visual Basic 和 Visual C# 中建立基本精靈
以系統管理員身分執行 Visual Studio。 註冊精靈必須更新登錄,因此需要此權限。
建立名為 MyNewWizard 的新類別庫 (Class Library) 專案。
-
若要進行這動作,請以滑鼠右鍵按一下專案,然後按一下 [加入參考]。 在 [加入參考] 對話方塊的 [.NET] 索引標籤中,按一下 [EnvDTE] 和 [EnvDTE80],然後按一下 [確定]。
在類別模組中,加入 EnvDTE 和 EnvDTE80 的參考,並且實作 IDTWizard 介面。 在此 Visual C# 範例中,您還必須加入 System.Windows.Forms 和 System.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)
在 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 程序。
以滑鼠右鍵按一下 [方案總管] 中的專案、按一下 [屬性] 開啟 [專案屬性] 頁面、按一下 [建置] 索引標籤,然後核取頁面最下方的 [註冊 COM Interop] 方塊。
在 AssemblyInfo.cs 檔中,尋找 [ComVisible] 屬性並將它設為 true。
按一下 [建置] 功能表上的 [建置方案],即可建置方案以便建立類別庫 (Class Library) dll。
針對精靈建立名為 MyNewWizard.vsz 的 .vsz 文字檔。
若要這麼做,請製作一份現有 .vsz 檔 (例如在 <Visual Studio 安裝目錄>\VC#\CSharpProjectItems\Windows Forms 的其中任何一個檔案) 的複本,然後將它重新命名為 "MyNewWizard.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 檔案儲存在下列目錄中:<Visual Studio 安裝目錄>\VB\VBProjectItems。
結束 Visual Studio,然後重新啟動。
這麼做會強制 Visual Studio 讀取新的 .vsz 檔。
建立新的 Visual Basic 專案,例如 Windows 應用程式專案。
以滑鼠右鍵按一下專案、指向 [加入項目],然後按一下 [新增項目]。
您應該會在 [加入新項目] 對話方塊中看見新的精靈 (MyNewWizard)。
按一下精靈,再按一下 [加入] 按鈕。
您將會看到「精靈正在執行」的訊息。
若要顯示新精靈的自訂圖示
將主檔名與 .dll 檔相同,但副檔名為 .ico 的圖示檔案,放在精靈檔案所在的同一個目錄中。
例如,如果精靈的名稱為 MyNewWizard.dll,就將 .ico 檔命名為 MyNewWizard.ico。
-或-
如果您已建立 VSDir 檔案,請在該檔案中指定圖示 (.ico) 檔案的路徑。
請參閱
工作
參考
概念
使用 .Vsdir 檔案將精靈加入至加入項目和新增專案對話方塊