可在项目文件中使用可替换参数或 令牌,为在设计时不知道实际值的 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 项目的扩展列表,而不仅仅是你自己的项目。 当你是系统上的唯一开发人员或大部分项目需要它时,此扩展可能很方便。 但是,由于此方法特定于系统,因此此方法不可移植,因此建议改为将任何扩展添加到项目文件。