共用方式為


新專案產生: 在幕後,組件 1

您曾經想過如何建立您自己的專案類型嗎? 不知道實際時會發生什麼事您建立新的專案? 讓我們來看一下底下,並查看真的事情。

有數個 Visual Studio 的協調,讓您的工作:

  • 它會顯示所有可用的專案類型的樹狀結構。

  • 它會顯示每個專案類型的應用程式範本的清單,並讓您挑選一個。

  • 它會收集應用程式,例如專案名稱和路徑的專案資訊。

  • 這項資訊傳遞至專案的工廠。

  • 它目前方案中產生專案項目和資料夾。

新的 [專案] 對話方塊

當您選取新的專案的專案型別開始一切。 首先按一下新的專案檔案功能表。 新的專案 ] 對話方塊隨即出現,看起來就像這樣:

新增專案對話方塊

讓我們仔細看。 專案類型樹狀目錄會列出您可以建立各種專案類型。 當您選取的專案類型,就像 C# 視覺 Windows,您會看到一份應用程式範本,以協助您開始。 Visual Studio 已安裝的範本由 Visual Studio 安裝使用和您的電腦的每位使用者。 可以加入新的範本所建立,或蒐集我的範本 ,並只提供給您。

當您選取的範本,就像的 Windows 應用程式,應用程式類型的描述會出現在此對話方塊。 如此一來, 用來建立具有 Windows 使用者介面的應用程式的 [A 專案

底部的新的專案對話方塊中,您會看到數個控制項,蒐集更多資訊。 專案類型而定,取決於您所看到的控制項,但是它們通常包括專案名稱 文字] 方塊中, 位置 文字方塊及相關 瀏覽 ] 按鈕,和 方案名稱 文字方塊及相關 為方案建立目錄 ] 核取方塊。

填入新的 [專案] 對話方塊

其中不會新的專案 ] 對話方塊中取得其資訊? 在這裡作怪,其中一個已被取代的圖形有兩種機制。 新的專案對話方塊結合了,它會顯示這兩種機制的資訊。

系統登錄項目和.vsdir 檔,就會使用較舊 (被取代) 的方法。 Visual Studio 開啟時,就會執行這項機制。 較新的方法使用.vstemplate 檔。 Visual Studio 初始化時,例如,藉由執行這項機制會執行

devenv /setup

devenv /installvstemplates

專案類型

位置和名稱的專案類型 根節點,例如 視覺 C#其他語言,由系統登錄項目。 組織的子節點,例如資料庫智慧型裝置,對映到含有對應的.vstemplate 檔資料夾的階層架構。 讓我們先查看根節點。

專案類型的根節點

當Visual Studio是初始化,周遊子機碼的系統登錄機碼若要建置並命名的根節點的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\TemplateDirs 專案類型樹狀結構。 這項資訊會快取,以供日後使用。 請查看 TemplateDirs\ {FAE04EC1-301F-11D3-BF4B-00C04F79EFBC} \/1 機碼。 每個項目是 VSPackage 的 GUID。 子機碼的名稱 (/ 1) 會被忽略,但它的出現,表示這是專案類型根節點。 根節點也可能會有子機碼控制其外觀專案類型樹狀結構。 讓我們來看看其中的一部份。

(預設值)

這是資源識別碼命名的根節點的當地語系化字串。 字串資源位於附屬 DLL 選取由 VSPackage GUID。

在範例中,VSPackage GUID 是

{} FAE04EC1-301F-11D3-BF4B-00C04F79EFBC

與資源識別碼 (預設值) 之根節點 (/ 1) 是 # 2345年

如果您尋找附近的封裝機碼中的 GUID,並檢查 SatelliteDll 子機碼,您可以找到含有該字串資源的組件的路徑:

< Visual Studio 的安裝路徑 > \VC#\VCSPackages\1033\csprojui.dll

若要確認這種情況,請開啟 [檔案總管] 並拖曳 csprojui.dll 到 Visual Studio 目錄。. 資源 # 2345年有標題的字串資料表內,顯示視覺 C#

SortPriority

這個選項會決定在根節點的位置專案類型樹狀結構。

SortPriority REG_DWORD 0x00000014 (20)

編號更低的優先順序,樹狀結構中愈高的位置。

DeveloperActivity

如果這個子機碼存在時,由開發人員設定] 對話方塊控制的根節點的位置。 例如:

DeveloperActivity REG_SZ VC#

表示視覺化 C# 將根節點如果設定 Visual Studio Visual C++開發。 否則,它是子節點的其他語言

資料夾

如果這個子機碼存在,根節點就會成為指定的資料夾的子節點。 機碼下會顯示可能的資料夾清單

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\PseudoFolders

比方說,資料庫專案項目會有一個比對其他專案類型中的項目 PseudoFolders 的資料夾索引鍵。 這樣,在專案類型 樹狀目錄中, 資料庫專案 將會是其子節點 其他專案類型

專案類型的子節點和.vstdir 的檔案

在 [子節點的位置專案類型樹狀結構遵循 [ProjectTemplates] 資料夾中的資料夾階層。 機器範本 (Visual Studio 的已安裝的範本),一般位置是 \Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\,以及使用者範本 (我的範本),一般位置是 \My Documents\Visual Studio 10\Templates\ProjectTemplates\。 若要建立合併來自這兩個位置的資料夾階層專案類型樹狀結構。

針對使用 Visual Studio Visual C++開發人員設定專案類型樹狀結構看起來像這樣:

專案類型

對應的 [ProjectTemplates] 資料夾,如下所示:

專案範本

新的專案 對話方塊開啟時,Visual Studio周遊 [ProjectTemplates] 資料夾,並重新建立它的結構,在專案類型樹狀目錄中的有一些變更:

  • 根節點,在專案類型樹狀結構由應用程式樣板。

  • 節點名稱可以當地語系化,而且可包含特殊字元。

  • 您可以變更排序順序。

尋找專案類型的根節點

當Visual Studio周遊 [ProjectTemplates] 資料夾中,它會開啟所有的.zip 檔案,並擷取任何的.vstemplate 檔。 .Vstemplate 檔會使用 XML 來描述應用程式樣板。 如需詳細資訊,請參閱 新的專案產生: 在幕後,第二部

<ProjectType> 標記會決定應用程式的專案類型。 例如,\CSharp\SmartDevice\WindowsCE\1033\WindowsCE-EmptyProject.zip 檔案包含具有該標籤的 EmptyProject.vstemplate 檔案:

<ProjectType>CSharp</ProjectType>

<ProjectType> 標記,並不在 [ProjectTemplates] 資料夾中,子資料夾會決定應用程式的根節點,在專案類型樹狀結構。 在範例中,Windows CE 的應用程式會出現在視覺 C# 根節點,而且即使您是要將 [WindowsCE] 資料夾移到 [VisualBasic] 資料夾,Windows CE 應用程式仍會出現在視覺 C# 根節點。

當地語系化的節點名稱

當 Visual Studio 周遊 ProjectTemplates 資料夾時,它會檢查任何找到的.vstdir 檔案。 .Vstdir 檔是一個 XML 檔案,控制中的專案類型的外觀新的專案對話方塊。 在.vstdir 檔案中,使用 <LocalizedName> 標籤名稱, 專案類型節點。

例如,\CSharp\Database\TemplateIndex.vstdir 檔案會包含這個標記:

<LocalizedName Package="{462b036f-7349-4835-9e21-bec60e989b9c}" ID="4598"/>

這個選項會決定附屬 DLL 和資源 ID 的當地語系化字串名稱根節點,如此一來, 資料庫。 當地語系化的名稱可包含特殊字元,並不適用於資料夾名稱,例如 。NET.

如果沒有 <LocalizedName> 標籤的話,資料夾本身,由命名的專案型別 SmartPhone2003

尋找專案類型的排序順序

如果要判斷專案類型的排序順序,.vstdir 檔案,請使用 <SortOrder> 標記。

例如,\CSharp\Windows\Windows.vstdir 檔案會包含這個標記:

<SortOrder>5</SortOrder>

\CSharp\Database\TemplateIndex.vstdir 檔案包含具有較大的值的標記:

<SortOrder>5000</SortOrder>

中 <SortOrder> 的低數字 標記越高孔口、 樹狀目錄中,所以 Windows 節點出現高於資料庫 中的節點 專案類型樹狀結構。

如果沒有 <SortOrder> 標記指定專案類型,則它會出現在下列任何包含 <SortOrder> 的專案類型的字母順序 規格。

請注意在 [我的文件中沒有.vstdir 檔案 (我的範本) 的資料夾。 使用者應用程式專案型別名稱沒有當地語系化,並依照字母順序顯示。

快速的檢視

我們要修改新的專案對話方塊方塊,然後建立新的使用者專案範本。

  1. \Program Files\Microsoft Visual Studio 10\Common7\IDE\ProjectTemplates\CSharp 資料夾中加入 MyProjectNode 的子資料夾。

  2. 建立一個 MyProject.vstdir 檔案中使用任何文字編輯器的 [MyProjectNode] 資料夾。

  3. .Vstdir 檔案中加入這行程式碼:

    <TemplateDir Version="1.0.0">
        <SortOrder>6</SortOrder>
    </TemplateDir>
    
  4. 儲存並關閉.vstdir 檔案。

  5. 建立一個 MyProject.vstemplate 檔案中使用任何文字編輯器的 [MyProjectNode] 資料夾。

  6. .Vstemplate 檔中加入下列幾行:

    <VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
        <TemplateData>
            <ProjectType>CSharp</ProjectType>
        </TemplateData>
    </VSTemplate>
    
  7. 將 the.vstemplate 檔案儲存並關閉編輯器。

  8. 傳送至新的壓縮的 MyProjectNode\MyProject.zip 資料夾的.vstemplate 檔。

  9. 從 [Visual Studio 命令] 視窗中,鍵入:

    devenv /installvstemplates
    

開啟 Visual Studio。

  1. 開啟新的專案 對話方塊方塊,然後展開 視覺 C# 專案節點。

MyProjectNode

MyProjectNode 做為子節點的視覺 C# Windows 節點的下方會出現。

請參閱

概念

新的專案產生: 在幕後,第二部