什么是可替换参数呢?你可能会在代码里看到像$SharePoint.Project.AssemblyFullName$一样的标记。VS会在编译的时候用完整的签名来替换相应参数。例如,标记 $SharePoint.Package.Name$ 可能会解析为字符串“Test SharePoint Package”。
标记规则:
- 可以在行中的任意位置指定标记。
- 标记不能跨多个行。
- 可以在同一行上和同一文件中多次指定同一标记。
- 可以在同一行上指定不同的标。
不遵循上述规则的标记将被忽略,而不提供警告或错误。
在清单转换之后立即用字符串值替换标记,从而允许用户编辑的清单模板使用标记。
下表列出了可用的标记
名称 |
说明 |
$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-xxxxxxxxxxxx)对应。 |
$SharePoint.Type.<GUID>.FullName$ |
与标记中的 GUID 匹配的类型的全名。 GUID 的格式为小写,并与 Guid.ToString("D") 格式(即 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)对应。 |
默认情况下VS查找这些标记在包文件、清单文件和以下扩展名的文件:
XML
ASCX
ASPX
Webpart
DWP(DWP文件为主要与primarily SharePoint Portal Server Dashboard Web Part File (Microsoft Corporation)相关联的游戏文件)
这些扩展名被定义在$ProgramFiles$\MSBuild\Microsoft\VisualStudio\v10.0\SharePointTools文件夹下的Microsoft.VisualStudio.SharePoint.targets文件的<TokenReplacementFileExtensions>元素里。
你可以添加元素到这个列表里,如<TokenReplacementFileExtensions>ashx</TokenReplacementFileExtensions>。
这就是为什么我们在SharePoint里添加ashx(一般处理程序)时,需要在项目文件的PropertyGroup结点下添加<TokenReplacementFileExtensions>ashx</TokenReplacementFileExtensions>才能正确调用的原因。