如何製作 Visual Studio 2010 的專案範本 (Windows Form)
1. 建立與設定專案範本
首先新增或開啟一個 Windows 應用程式專案,加入要放置於範本中的程式碼、資源檔、參考類別等等,並設定所需的組件資訊。
裡面最重要的一項為 GUID 的設定,請務必要設定,以避免所有的程式都有相同的GUID值。
以下為可使用的範本參數,注意參數有區分大小寫。
參數 | 說明 |
clrversion | 目前版本的 Common Language Runtime (CLR)。 |
GUID [1-10] | GUID,用來取代專案檔的專案 GUID。 您最多可以指定 10 個唯一 GUID (例如 guid1)。 |
itemname | 使用者在加入新項目對話方塊中提供的名稱。 |
machinename | 目前的電腦名稱 (例如 Computer01)。 |
projectname | 使用者在新增專案對話方塊中提供的名稱。 |
registeredorganization | 來自 HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization 的登錄機碼 (Registry Key) 值。 |
rootnamespace | 目前專案的根命名空間。 這個參數只用來取代專案內所加入項目的命名空間。 |
safeitemname | 使用者在 [加入新項目] 對話方塊中提供的名稱,但名稱中所有的 Unsafe 字元和空格都已刪除。 |
safeprojectname | 使用者在 [新增專案] 對話方塊中提供的名稱,但名稱中所有的 Unsafe 字元和空格都已刪除。 |
targetframeworkversion | 使用者所選用的 Framework 版本編號,例:3.5。 |
time | 目前時間,其格式為 DD/MM/YYYY 00:00:00。 |
userdomain | 目前使用者的網域。 |
username | 目前使用者的名稱。 |
webnamespace | 目前網站的名稱。 這個參數使用於 Web 表單範本中,以確保類別名稱是唯一的。 如果網站位於 Web 伺服器的根目錄,則這個範本參數會解析至 Web 伺服器的根目錄。 |
year | 目前年份,其格式為 YYYY。 |
若是使用C# 時,還必需要變更所有程式檔的 namespace,建議變更為 $safeprojectname$。
如果您有參考 Third Party 或是自有的元件時,必需要編輯該專案的專案檔 (C# 為 *.csproj、VB.NET 則為 *.vbproj),除非所使用的元件參考路徑在所有的電腦上都是相同的路徑。
編輯參考設定中的 ItemGroup 區段
<Reference Include="自定元件名稱">
<HintPath>自定元件的完整檔案含路徑</HintPath>
</Reference>
例:
如果不指定特別版本,請加上<SpecificVersion>False</SpecificVersion>。
修改 <HintPath> 的內容,可以使用環境變數值。
如 $(ProgramFiles) 即等於 C:\Program Files
查詢環境變數可以開啟 DOS 視窗,輸入 SET 按下 Enter 鍵,即會列出系統目前所有使用的環境變數資料。
或者是直接編輯專案檔 (*.csproj or *.vbproj)
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>$guid1$</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>$safeprojectname$</RootNamespace>
<AssemblyName>$safeprojectname$</AssemblyName>
<TargetFrameworkVersion>v$targetframeworkversion$</TargetFrameworkVersion>
$if$ ($targetframeworkversion$ > 4.0)
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
$endif$
<FileAlignment>512</FileAlignment>
<ReferencePath>$(ProgramFiles)\MyAppDLL\</ReferencePath>
</PropertyGroup>
必要修改的設定
<PropertyGroup> 區段
<ProjectGuid>$guid1$</ProjectGuid>
此處和組件資訊的設定一樣,只不過組件資訊是存入到 AssemblyInfo.cs or AssemblyInfo.vb 中。
AssemblyInfo.cs 的設定 [assembly: Guid("$guid1$")]
AssemblyInfo.vb 的設定 <Assembly: Guid("$guid1$")>
<RootNamespace>$safeprojectname$</RootNamespace>
定義「命名空間」的名稱為專案名稱。
<AssemblyName>$safeprojectname$</AssemblyName>
定義「組件名稱」為專案名稱。
<TargetFrameworkVersion>v$targetframeworkversion$</TargetFrameworkVersion>
定義所使用的 .NET Framework 版本為使用者在新增專案時所選用的版本。
$if$ ($targetframeworkversion$ > 4.0)
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
$endif$
定義當選用的 .NET Framework 版本高於 4.0 時,則選用 Client 版本,例 .Net Framework 4.0 Client Profile。《註:本人不建議加入這一個設定》
-
<ItemGroup> 區段
因應不同的 .NET Framework,透過 &targetframeworkvrsion$ 來判斷載入不同的組件。
<Reference Include="System.Core"/>
<Reference Include="System.Xml.Linq"/>
<Reference Include="System.Data.DataSetExtensions"/>
$endif$
$if$ ($targetframeworkversion$ >= 4.0)
<Reference Include="Microsoft.CSharp"/>
$endif$
<Reference Include="System.Data"/>
<Reference Include="System.Deployment"/>
<Reference Include="System.Drawing"/>
<Reference Include="System.Windows.Forms"/>
<Reference Include="System.Xml"/>
-
非必要的設定
在 Project 區段中新增一個 ItemGroup 區段
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
$endif$
定義當使用的 .NET Framework 版本大於 4.0 時,則加入 App.Config 的設定。
2. 匯出專案範本
開啟檔案選單,選擇匯出範本功能。
選擇「專案範本」,下方請選取所要使用的專案,接著按下一步。
填寫範本的基本設定。請先取消勾選「自動將範本匯入 Visual Studio」,因為後面還要進行範本設定檔的修改,所以現在不要自動匯入。在檔案總管上顯示輸入檔資料夾則建議勾選,如此完成匯出後方便接下來的修改動作。按下完成鍵後匯出範本壓縮檔。
如果範本名稱為中文,則會顯示此訊息。按下是(Y)確定產生該檔案。
3. 編輯範本設定檔
先將匯出的檔案更名為日後要顯示的專案範本名稱。
將壓縮檔解開到同名的資料夾之後,再將該壓縮檔案刪除。
編輯MyTemplate.vstemplate檔案。
Name:即先前填寫的範本名稱。
Description:即先前填寫的範本描述。
ProjectType:定義專案範本的類別,請勿修改。
CreateNewFolder:定義是否勾選為方案建立目錄。
DefaultName:定義新專案的預設名稱。
ProvideDefaultName:定義新專案是否要使用預設名稱。
LocationField:定義是否可修改專案存放位置。
EnableLocationBrowserButton:定義是否可以使用瀏覽鍵來設定專案存放位置。
<Projeft TargetFileName="自定專案.csproj" File="CSharpWindowForm.csproj" ReplaceParameters="true">
此處可以使用範本參數來取代既有的名稱。
<Projeft TargetFileName="$projectname$csproj" File="CSharpWindowForm.csproj" ReplaceParameters="true">
編輯完成後,選取所有的檔案與資料夾,透過傳送到壓縮的(zipped)資料的方式,產生壓縮檔。
4. 建立Visual Studio內容安裝檔
使用NotePad新增一個XML文字檔,副檔名設定為vscontent。
FileName:設定為先前透過傳送到壓縮的(zipped)資料的方式,所產生的壓縮檔案名稱。
DisplayName:執行安裝時所要顯示的名稱。
Description:執行安裝時所要顯示的描述文字訊息。
FileContentType:定義為範本類別 VSTemplate。
ContentVersion:定義版本資訊。
Attributes屬性值:
TemplateType:定義範本的類別,Project=專案、Item=物件。
ProjectType:定義專案所使用的程式語言。
ProjectSubType:定義專案的子類別,Windows=WinForm、Web=WebForm等等。
選取Visual Studio內容安裝設定檔和先前準備好的壓縮檔,如同先前產生壓縮檔的方式,一樣再產生另一個壓縮檔。
將新產生的壓縮檔,更名為 *.vsi
如此即大功告成,完成專案範本檔的建立。只要點選這個 vsi 檔案,就會自動安裝所設定的專案範本。
5. 安裝專案範本檔
直接點選 vsi 檔案,即可以進行安裝動作。
按下一步進行下一個動作。
出現此警告訊息,是在告知您目前所要安裝的這個範本是沒有經過驗證的,詢問你是否要繼續安裝。
請按下 Yes 鍵繼續執行。
按下完成鍵後,開始進行安裝動作。
如果先前有安裝過,則會出現檔案已存在的畫面,請選擇 Overwrite the file with the same name,否則將會產生另一個範本名稱。
按下 Close 鍵結束安裝。
開啟 Visual Studio 並選擇新增專案即可以看到剛剛匯入的專案。
程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者,不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的魯莽行動。