範本參數
將範本具現化時,您可以取代範本中的值。 若要設定這項功能,請使用「範本參數」。 範本參數可以用來取代範本中的值,例如類別名稱和命名空間。 當使用者新增項目或專案取代這些參數時,範本精靈會在背景中執行。
宣告和啟用範本參數
範本參數是以 $parameter$ 格式來宣告。 例如:
$rootnamespace$
$guid1$
$guid5$
啟用範本中的參數替換
在範本的 .vstemplate 檔案中,針對您要啟用參數取代的項目,找出對應的
ProjectItem
元素。將
ReplaceParameters
項目的ProjectItem
屬性設定為true
。在適當時,於專案項目的程式碼檔案中納入參數。 例如,下列參數指定用於檔案中命名空間的根命名空間:
namespace $rootnamespace$
保留的範本參數
下表列出可用於任何範本的保留範本參數:
參數 | 描述 |
---|---|
clrversion | 通用語言執行平台 (CLR) 的最新版本。 |
ext_* | 將 ext_ 前置詞新增至任何參數,以參考父代範本的變數。 例如: ext_safeprojectname 。 |
guid[1-10] | GUID;用來取代專案檔中的專案 GUID。 您最多可以指定 10 個唯一的 GUID (例如,guid1 )。 |
itemname | 正在使用該參數的檔案名稱。 |
machinename | 目前的電腦名稱 (例如,Computer01)。 |
projectname | 建立專案時,使用者所提供的名稱。 這個參數只適用於專案範本。 |
registeredorganization | 來自 HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization 的登錄機碼值。 |
rootnamespace | 目前專案的根命名空間,後面接著目前項目的子資料夾,以句點取代斜線。 |
defaultnamespace | 目前專案的根命名空間。 |
safeitemname | 與 itemname 相同,但所有不安全的字元和空格都會以底線字元取代。 |
safeitemrootname | 與 safeitemname 相同。 |
safeprojectname | 使用者在建立專案時時提供的名稱,但已移除所有不安全的字元和空格。 這個參數只適用於專案範本。 |
targetframeworkversion | 目標 .NET Framework 的目前版本。 |
time | 目前時間採用基於 Windows 使用者設定的格式。 其中一個時間格式範例為 DD/MM/YYYY 00:00:00。 |
specifiedsolutionname | 解決方案的名稱。 取消核取 [將方案與專案放在相同目錄中] 時, specifiedsolutionname 具有方案名稱。 若未核取 [建立方案目錄],specifiedsolutionname 則為空白。 |
userdomain | 目前的使用者網域。 |
username | 目前的使用者名稱。 |
webnamespace | 目前網站的名稱。 這個參數用於 Web 表單範本,以保證唯一的類別名稱。 如果網站位於 Web 伺服器的根目錄,此範本參數會解析為 Web 伺服器的根目錄。 |
year | 目前的年份,格式為 YYYY。 |
注意
範本參數會區分大小寫。
自訂範本參數
除了參數取代期間所使用的預設保留範本參數之外,您也可以指定自己的範本參數和值。 如需詳細資訊,請參閱 CustomParameters 項目 (Visual Studio 範本)。
範例:檔案名稱使用專案名稱
您可以在 TargetFileName
屬性中使用參數,來指定專案項目的變數檔案名稱。
下例會指定可執行檔的名稱使用 $projectname$
所指定的專案名稱。
<TemplateContent>
<ProjectItem
ReplaceParameters="true"
TargetFileName="$projectname$.exe">
File1.exe
</ProjectItem>
...
</TemplateContent>
範例:命名空間名稱使用安全的專案名稱
若要在 C# 類別檔案為命名空間使用安全的專案名稱,請使用下列語法:
namespace $safeprojectname$
{
public class Class1
{
public Class1()
{ }
}
}
當您參考檔案時,請在專案範本的 .vstemplate 檔案中,納入 ReplaceParameters="true"
屬性:
<TemplateContent>
<ProjectItem ReplaceParameters="true">
Class1.cs
</ProjectItem>
...
</TemplateContent>