可替换参数

可在项目文件中使用可替换参数或 令牌,为在设计时不知道实际值的 SharePoint 解决方案项提供值。 它们的功能类似于标准 Visual Studio 模板令牌。 有关详细信息,请参阅 模板参数

令牌格式

令牌以美元符号($)字符开头和结尾。 在部署时,将项目打包到 SharePoint 解决方案包(.wsp 文件)中时,使用的任何令牌将替换为实际值。 例如,令牌 $SharePoint.Package.Name$ 可能解析为字符串“Test SharePoint Package”。

令牌规则

以下规则适用于令牌:

  • 可以在行中的任意位置指定令牌。

  • 令牌不能跨越多行。

  • 同一令牌可以在同一行和同一文件中多次指定。

  • 可以在同一行上指定不同的标记。

    不遵循这些规则的令牌将被忽略,并且不会导致警告或错误。

    在清单转换完成后,将令牌立即替换为字符串值。 此替换允许用户使用令牌编辑清单模板。

令牌名称解析

在大多数情况下,令牌解析为特定值,不管它出现在哪里。 但是,如果令牌与包或功能相关,则令牌的值取决于令牌包含的位置。 例如,如果某个功能位于包 A 中,则令牌 $SharePoint.Package.Name$ 解析为值“包 A”。如果包 B 中具有相同的功能,则 $SharePoint.Package.Name$ 解析为“包 B”。

令牌列表

下表列出了可用的令牌。

Name Description
$SharePoint.Project.FileName$ 包含项目文件的名称,例如 NewProj.csproj
$SharePoint.Project.FileNameWithoutExtension$ 不包含文件扩展名的项目文件的名称。 例如,“NewProj”。
$SharePoint.Project.AssemblyFullName$ 包含项目的输出程序集的显示名称(强名称)。
$SharePoint.Project.AssemblyFileName$ 包含项目的输出程序集的名称。
$SharePoint.Project.AssemblyFileNameWithoutExtension$ 包含项目的输出程序集的名称,没有文件扩展名。
$SharePoint.Project.AssemblyPublicKeyToken$ 包含项目的输出程序集的公钥标记,转换为字符串。 (“x2”十六进制格式为 16 个字符。)
$SharePoint.Package.Name$ 包含包的名称。
$SharePoint.Package.FileName$ 包含包的定义文件的名称。
$SharePoint.Package.FileNameWithoutExtension$ 包含包的定义文件的名称(无扩展名)。
$SharePoint.Package.Id$ 包含包的 SharePoint ID。 如果在多个包中使用某个功能,则此值将更改。
$SharePoint.Feature.FileName$ 包含功能的定义文件的名称,如 Feature1.feature
$SharePoint.Feature.FileNameWithoutExtension$ 功能定义文件的名称,没有文件扩展名。
$SharePoint.Feature.DeploymentPath$ 包含包中功能的文件夹的名称。 此令牌等同于功能设计器中的“部署路径”属性。 示例值为“Project1_Feature1”。
$SharePoint.Feature.Id$ 包含功能的 SharePoint ID。 此令牌与所有功能级令牌一样,只能在包含于功能中的包文件中使用,不能直接添加到不属于功能的包中。
$SharePoint.ProjectItem.Name$ ISharePointProjectItem.Name 获取的项目项的名称(而不是文件名)。
$SharePoint.Type.<GUID>.AssemblyQualifiedName$ 与令牌 GUID 匹配的类型的程序集限定名称。 GUID 的格式小写,对应于 Guid.ToString(“D”) 格式(即 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx)。
$SharePoint.Type.<GUID>.FullName$ 与令牌中的 GUID 匹配的类型的完整名称。 GUID 的格式小写,对应于 Guid.ToString(“D”) 格式(即 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx)。

将扩展添加到令牌替换文件扩展名列表

尽管令牌理论上可由属于包中包含的 SharePoint 项目项的任何文件使用,但默认情况下,Visual Studio 仅在包文件、清单文件和具有以下扩展名的文件中搜索令牌:

  • XML

  • ASCX

  • ASPX

  • Web 部件

  • DWP

    这些扩展由 Microsoft.VisualStudio.SharePoint.targets 文件中的 <TokenReplacementFileExtensions> 元素定义,该文件位于 ...\<program files>\MSBuild\Microsoft\VisualStudio\v11.0\SharePointTools 文件夹。

    但是,可以将其他文件扩展名添加到列表中。 在<TokenReplacementFileExtensions>元素添加到 SharePoint 项目文件的任何在导入 SharePoint 目标文件之前定义的 PropertyGroup 中。

注释

由于令牌替换在编译项目后发生,因此不应为编译的文件类型添加文件扩展名,例如 .cs.vb.resx。 令牌仅在未编译的文件中替换。

例如,若要将文件扩展名 (.myextension.yourextension) 添加到令牌替换文件扩展名列表,请将以下内容添加到项目 (.csproj) 文件:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
.
.
.
    <!-- Define the following property to add your extension to the list of token replacement file extensions.  -->
<TokenReplacementFileExtensions>myextension;yourextension</TokenReplacementFileExtensions>
</PropertyGroup>

可以直接将扩展添加到目标 (.targets) 文件。 但是,添加扩展会更改在本地系统上打包的所有 SharePoint 项目的扩展列表,而不仅仅是你自己的项目。 当你是系统上的唯一开发人员或大部分项目需要它时,此扩展可能很方便。 但是,由于此方法特定于系统,因此此方法不可移植,因此建议改为将任何扩展添加到项目文件。