Share via


可置換的參數

可置換的參數或語彙基元,可以在專案檔內使用,為實際值在設計階段時未知的 SharePoint 解決方案項目提供值。 其功能類似於標準 Visual Studio 範本語彙基元。 如需詳細資訊,請參閱範本參數

語彙基元格式

語彙基元會以貨幣符號 ($) 字元開頭和結尾。 在部署時,當專案封裝到 SharePoint 解決方案套件時,使用的任何語彙基元都會取代為實際值 (.wsp 檔案)。 例如,語彙基元 $SharePoint.Package.Name$ 可能會解析為字串 "Test SharePoint Package"。

語彙基元規則

下列規則適用於語彙基元:

  • 您可以在行中的任何位置指定語彙基元。

  • 語彙基元無法跨越多行。

  • 相同語彙基元可以在同一行上和相同檔案中指定多次。

  • 不同的語彙基元可以在同一行上指定。

    未遵循這些規則的語彙基元會被忽略,而且不會產生警告或錯誤。

    字串值取代語彙基元會在資訊清單轉換之後立即完成。 此取代可讓使用者使用語彙基元編輯資訊清單範本。

語彙基元名稱解析

在大部分情況下,不論其包含位置為何,語彙基元都會解析為特定值。 不過,如果語彙基元與封裝或功能相關,語彙基元的值取決於其包含的位置。 例如,如果功能位於套件 A 中,則語彙基元 $SharePoint.Package.Name$ 會解析為「套件 A」值。如果相同的功能位於套件 B 中,則 $SharePoint.Package.Name$ 會解析為「套件 B」。

語彙基元清單

下表列出可用的語彙基元。

名稱 描述
$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 識別碼。 如果某個功能在一個以上的套件中使用,則此值將會變更。
$SharePoint.Feature.FileName$ 包含功能的定義檔名稱,例如 Feature1.feature
$SharePoint.Feature.FileNameWithoutExtension$ 功能定義檔的名稱,不包括副檔名。
$SharePoint.Feature.DeploymentPath$ 包含套件中功能的資料夾名稱。 此語彙基元相當於功能設計工具中的「部署路徑」屬性。 範例值為 "Project1_Feature1"。
$SharePoint.Feature.Id$ 包含功能的 SharePoint 識別碼。 此語彙基元與所有功能層級語彙基元一樣,只能由透過功能包含在套件中的檔案使用,而不會直接新增至功能外部的套件。
$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)。

將延伸模組新增至語彙基元取代副檔名清單

雖然語彙基元理論上可供任何屬於套件內含 SharePoint 專案項目的檔案使用,但是根據預設,Visual Studio 只會在套件檔案、資訊清單檔案和具有下列副檔名的檔案中搜尋語彙基元:

  • XML

  • ASCX

  • ASPX

  • Webpart

  • DWP

    這些副檔名是由 Microsoft.VisualStudio.SharePoint.targets 檔案中的 <TokenReplacementFileExtensions> 元素定義,此檔案位於 ...\<program files>\MSBuild\Microsoft\VisualStudio\v11.0\SharePointTools 資料夾中。

    不過,您可以將其他副檔名新增至清單。 請將 <TokenReplacementFileExtensions> 元素新增至 SharePoint 專案檔中,定義於 SharePoint 目標檔 <Import> 之前的任何 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 專案的延伸模組清單,而不只是您自己的專案。 當您是系統上的唯一開發人員,或大部分專案需要時,此延伸模組可能會很方便。 不過,由於它是系統特定的,所以此方法不可移植,因此,建議您改為將任何延伸模組新增至專案檔。