談?wù)刅S中的模板_第1頁
談?wù)刅S中的模板_第2頁
談?wù)刅S中的模板_第3頁
談?wù)刅S中的模板_第4頁
談?wù)刅S中的模板_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

談?wù)刅S中的模板VS中建一個工程〔Project〕或項〔Item〕的時候,都用到了它的模板。這些模板給我們供給了一個好的開頭。假設(shè)你曾經(jīng)受過從ASP.NETWebApplicationAJAXWebApplication的升級,就會對此有所體會;假設(shè)你是一個開源愛好者,需要在工程中應(yīng)用大量的開源組件,那么每次的添加引用和配置也會讓人厭煩。模板給我們節(jié)約了很多時間,并能使同類型的工程/項保持全都。在VS中我們可以很便利地導(dǎo)出工程/項模板,可以參考下面兩篇文章:VS2005中創(chuàng)立工程模板來提高開發(fā)效率VisualStudio工程模板本文將介紹模板的更多內(nèi)容。什么是工程/項模板工程模板包含了創(chuàng)立特定類型的工程所需的必要文件〔包括引用〕。VS本身就供給了很多ConsoleApplication,ClassLibraryASP.NETWebApplication等等。大局部工程模板基于一種特定的語言,如C#、F#等,同時針對特定的領(lǐng)域,如Windows、WebTest等等,它們正是以此進(jìn)展分類組織:這里,創(chuàng)立一個掌握臺應(yīng)用程序,根本的引用已經(jīng)添加完畢,并且有了一個Program.csMain函數(shù)編寫代碼了。項模板用于創(chuàng)立規(guī)律上的單個文件〔有時可能是創(chuàng)立了多個文件,比方WebForm模板,不過它們在規(guī)律上仍被看作單個文件〕。這個過程就不再贅述了。工程/項模板簡析現(xiàn)在該了解一下這些模板是如何實現(xiàn)的了。前面提到,VS內(nèi)置了很多模板,那就看看它們是怎么做的。先來看工程模板,內(nèi)置的工程模板位于[VS2008Path]\Common7\IDE\ProjectTemplates,這里可以看到幾個以語言名稱命名的文件夾,進(jìn)入CSharpWindows、Web、Test等文件夾,這是前面提到的模板組織方式。連續(xù)下去,翻開Windows\1033文件夾,可以zip文件包。從文件名可以想到,VSzip包。事實正是如此。解壓縮ConsoleApplication.zip文件,這里有四個文件:.cs和.csproj文件就是創(chuàng)立工程后得到的文件,那vstemplate文件呢?它是模板的組織者,沒有它,zip包就只是幾個零散的文件而已。這個文件稱為模板清單〔TemplateManifest〕,XML文件。項模板的狀況與此類似,它們位于[VS2008Path]\Common7\IDE\ItemTemplates。模板清單〔TemplateManifest〕XMLSchema文件是[VS2008Path]\XML\Schemas\1033\vstemplate.xsd,通過xsd文件我們可以了解清單文件的構(gòu)造。它的根節(jié)點是<VSTemplate>,該節(jié)點有兩個Attribute:Type:指定模板類型〔工程模板還是項模板〕,取值可以是ProjectType:指定模板類型〔工程模板還是項模板〕,取值可以是Project、ProjectGroupItem;Version:模板所用于的.NETFramework版本號。Class文件的模板中是這樣的:<VSTemplateVersion=“3.0.0“Type=“Item“xmlns=““://schemas.microsoft/developer/vstemplate/2005“://schemas.microsoft/developer/vstemplate/2005“></VSTemplate><VSTemplate>節(jié)點可以有四種子節(jié)點:<TemplateData>:必選項,包含了模板的根本信息,如名稱、圖標(biāo)、默認(rèn)名稱等。<TemplateContent>:必選項,指定了模板所包含的文件。<WizardData>:可選項,包含了傳給自定義向?qū)У腦ML數(shù)據(jù)。<WizardExtension>:可選項,包含了一些自定義模板向?qū)У男畔?。由于這些節(jié)點包含的信息比較多,這里只好偷懶了,它們在MSDN的鏈接分別是:<TemplateData><TemplateContent><WizardData><WizardExtension>VisualStudioTemplates主頁,工程模板和項模板之間的區(qū)分。有了上面這些學(xué)問,就可以對清單文件有全面的生疏了,下面來看看如何創(chuàng)立模板。創(chuàng)立模板工程模板和項模板的創(chuàng)立有所不同,但是都有兩種方式:自動方式和手工方式。使用自動VS的向?qū)?chuàng)立模板,而使用手工方式,則需要編寫一些代碼,尤其是前面提到的清單文件。一般狀況下,自動方式更為簡潔、快捷,而手工方式則更為強(qiáng)大和敏捷。手工方式創(chuàng)立模板其過程包含三個步驟:創(chuàng)立模板所包含的文件;創(chuàng)立清單文件,編寫代碼對模板進(jìn)展配置;部署。首先創(chuàng)立一個類庫工程,它的構(gòu)造如下所示:接下來在MyClassLibTemplate.vstemplate文件內(nèi)對模板進(jìn)展配置:XMLCode-第一個模板清單文件<VSTemplateVersion=“2.0.0“ Type=“Project“xmlns“://schemas.m/“=“://schemas.microsoft/developer/vstemplate/2005“><TemplateData><Name>My ClassLib Template</Name><Description>A simpleclasslibrary template</Description>eButton>

<ProjectType>CSharp</ProjectType><ProjectSubType></ProjectSubType><SortOrder>1000</SortOrder><CreateNewFolder>true</CreateNewFolder><DefaultName>MyClassLibProj</DefaultName><ProvideDefaultName>true</ProvideDefaultName><LocationField>Enabled</LocationField><EnableLocationBrowseButton>true</EnableLocationBrows<Icon>ufo.ico</Icon></TemplateData><TemplateContent><Project TargetFileName=“MyClassLib.csproj“File=“MyClassLib.csproj“ReplaceParameters=“true“><ProjectItemTargetFileName=“SampleClass.cs“ReplaceParameters=“true“ >SampleClass.cs</</ProjectItem><Folder Name=“Properties“TargetFolderName=“Properties“><ProjectItemReplaceParameters=“true“TargetFileName=“AssemblyInfo.cs“>AssemblyInfo.cs</ProjectItem></Folder></Project></TemplateContent></VSTemplate>最終是部署。將全部這些文件放在一起〔假設(shè)有文件夾,要保持它的層次構(gòu)造〕,打包為zip文件。將文件拷貝到下面兩個路徑之一:假設(shè)是工程模板,拷到[MyDocumentsPath]\VisualStudio2008\Templates\ProjectTemplates;假設(shè)是項模板,拷到[MyDocumentsPath]\VisualStudio2008\Templates\ItemTemplates。由于剛剛創(chuàng)立的模板是工程模板,所以放在第一個路徑下。然后翻開由于剛剛創(chuàng)立的模板是工程模板,所以放在第一個路徑下。然后翻開VS2008,建一個MyTemplates下可以看到我們自定義的模板:關(guān)于以自動〔向?qū)А撤绞絼?chuàng)立模板,可以參考本文開頭提到的兩篇文章。自定義模板前面的例子很簡潔,甚至是過于簡潔了。在真實的開發(fā)中,可能需要向模板傳遞一些參數(shù)。Author,Author就是參數(shù)的名稱??聪旅娴睦樱篊#Code-設(shè)置模板參數(shù)占位符namespaceClassLibrary1{// Company:Company// CreatedBy: Authorpublic classSampleClass{}}接下來需要在模板清單文件中定義這些參數(shù)和它們的值,向<TemplateContent>節(jié)點中添加<CustomParameters>節(jié)點:XMLCode-設(shè)置參數(shù)值<CustomParameters><CustomParameterName=“Company“Value=“mycompany“/><CustomParameterName=“Author“Value=“Anders Cui“/></CustomParameters>好了,現(xiàn)在重部署這個模板,添加一個工程,得到的文件是:C#Code-使用參數(shù)之后namespaceClassLibrary1{// Company:mycompany// CreatedBy:AndersCuipublic classSampleClass{}}ProjectItemReplaceParameters特性值要為“true現(xiàn)在,假設(shè)模10Author,就能節(jié)約不少時間了,不過我還是不滿足,能不能在運行時獵取用戶的輸入呢?看看下一節(jié)關(guān)于向?qū)У膬?nèi)容。自定義模板向?qū)S/項的時候運行。向?qū)У暮锰幵谟诳梢裕菏占脩舻妮斎胄畔ⅲ幌蚰0逄砑訁?shù)值;向工程添加其它文件;DTE對象〔DevelopmentToolsExtensibilityVisualStudio自動化對象模型中的主對象〕,從而可以便利地操作工程。創(chuàng)立模板向?qū)У母静襟E為:IWizard接口;GAC〔GlobalAssemblyCache〕;更模板清單文件,使用該程序集。這里將連續(xù)使用上面的例子,不過這次要從用戶界面收集參數(shù)值,而不是把它們放在模板清單中。這里將連續(xù)使用上面的例子,不過這次要從用戶界面收集參數(shù)值,而不是把它們放在模板清單中。IWizard6個方法,這些方法會在工程模板生命周期的特定時刻執(zhí)行,其中的局部方法僅適用于項模板,它們的詳情請參考:IWizard成員。VisualStudioRunStarted方法,因此該方法是收集用戶。它有四個參數(shù):Object_DTE對象,以使您能夠自定義工程。Dictionary參數(shù),它包含模板中全部預(yù)定義參數(shù)的集合。WizardRunKind參數(shù),它包含有關(guān)所使用的模板種類的信息。ObjectVisualStudio傳遞給向?qū)У囊唤M參數(shù)。在本例中,將來自用戶的輸入添加到Dictionary參數(shù)中。好了,現(xiàn)在可以開頭編碼了,CustomTemplateWizardWindowsForm,用來承受用戶輸入,界面大體如下:其代碼為:C#Code-承受用戶輸入的窗體WizardImplIWizard接口:C#CodeIWizardWizardImpl然后,編譯工程,為工程添加強(qiáng)命名,接著注冊到GAC〔GlobalAssemblyCache〕。接下來要修改模板清單文件,來使用出爐的程序集,這要在</TemplateContent>之后添加:XMLCode-添加對程序集的引用這些都完成后,跟前面一樣,打包、部署,然后翻開VS,建一個工程,此時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論