新專案產生: 在幕後,組件 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 檔案 (我的範本) 的資料夾。 使用者應用程式專案型別名稱沒有當地語系化,並依照字母順序顯示。
快速的檢視
我們要修改新的專案對話方塊方塊,然後建立新的使用者專案範本。
\Program Files\Microsoft Visual Studio 10\Common7\IDE\ProjectTemplates\CSharp 資料夾中加入 MyProjectNode 的子資料夾。
建立一個 MyProject.vstdir 檔案中使用任何文字編輯器的 [MyProjectNode] 資料夾。
.Vstdir 檔案中加入這行程式碼:
<TemplateDir Version="1.0.0"> <SortOrder>6</SortOrder> </TemplateDir>
儲存並關閉.vstdir 檔案。
建立一個 MyProject.vstemplate 檔案中使用任何文字編輯器的 [MyProjectNode] 資料夾。
.Vstemplate 檔中加入下列幾行:
<VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <ProjectType>CSharp</ProjectType> </TemplateData> </VSTemplate>
將 the.vstemplate 檔案儲存並關閉編輯器。
傳送至新的壓縮的 MyProjectNode\MyProject.zip 資料夾的.vstemplate 檔。
從 [Visual Studio 命令] 視窗中,鍵入:
devenv /installvstemplates
開啟 Visual Studio。
- 開啟新的專案 對話方塊方塊,然後展開 視覺 C# 專案節點。
MyProjectNode 做為子節點的視覺 C# Windows 節點的下方會出現。