实例化模板时,可替换模板中的值。 若要设置此功能,请使用模板参数。 模板参数可用于替换值,例如模板中的类名和命名空间。 当用户添加新项或项目时,后台运行的模板向导会替换这些参数。
声明和启用模板参数
模板参数以 $参数$ 的格式进行声明。 例如:
- $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>