共用方式為


建置流程中的程式碼產生

您可以叫用文字轉換做為 Visual Studio 方案建置流程的一部分。 這麼做可以確定從範本產生的檔案是最新的,然後再進行編譯。 如此一來,您就可以避免發生使用者在建置專案或簽入程式碼之前忘記按下 [轉換所有範本] 的情形。 文字轉換工作可以由 Visual Studio 或 MSBuild 在組建伺服器上執行。

在專案檔中加入文字轉換工作

Ee847423.collapse_all(zh-tw,VS.110).gif安裝 Visualization and Modeling SDK

若要在開發電腦上啟用建置工作,請安裝 Visual Studio Visualization and Modeling SDK (英文)。

若要在組建伺服器上啟用建置工作,請參閱組建伺服器上的文字轉換。

Ee847423.collapse_all(zh-tw,VS.110).gif編輯專案檔

若要叫用文字轉換,您必須編輯定義專案的檔案。 這些屬性無法在專案屬性編輯器中編輯。 因此,您必須關閉專案,然後將它當做文字檔來編輯。

若要編輯專案檔的文字

  1. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [卸載專案]。

  2. 以滑鼠右鍵再按一下專案,然後按一下 [編輯 project]。

    專案檔的文字隨即顯示在 XML 編輯器中。

若要在完成編輯時重新開啟專案

  1. 關閉 XML 編輯器。

  2. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [重新載入專案]。

Ee847423.collapse_all(zh-tw,VS.110).gif匯入文字轉換目標

文字轉換建置工作是在單一檔案中定義的。 您必須在設定標準 C# 或 Visual Basic 目標之後將它匯入。

若要匯入文字轉換目標

  1. 在檔案中搜尋類似下列其中一行的內容:

    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

    -或-

    <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />

  2. 在那一行之後,插入文字範本化匯入:

    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v11.0\Microsoft.TextTemplating.targets" />

Ee847423.collapse_all(zh-tw,VS.110).gif設定可控制建置執行方式的屬性

將下列文字插入至專案檔。 如需其他可插入此屬性群組的屬性,請參閱下列章節。

<PropertyGroup>
 <TransformOnBuild>true</TransformOnBuild>
 <!-- Other properties can be inserted here -->
</PropertyGroup>

TransformOnBuild 會在您建置專案時,促使執行專案中所有的範本。

Ee847423.collapse_all(zh-tw,VS.110).gif叫用轉換

Ee847423.collapse_all(zh-tw,VS.110).gif轉換專案組建中的所有範本

如果您在專案檔中加入下列屬性,則每當建置專案時,都會受到累加建置功能的影響而執行專案中所有的文字範本。

<TransformOnBuild>true</TransformOnBuild>

您可以在 Visual Studio 中按 F5 或使用 MSBuild 來叫用轉換。 例如:

msbuild myproject.csproj

如果略過 TransformOnBuild 或將它設為 false,範本就不會成為專案建置中需要自動轉換的部分。

Ee847423.collapse_all(zh-tw,VS.110).gif加入參考路徑

您可以加入一組路徑,讓主應用程式用來尋找範本所參考的組件。 例如:

<ItemGroup>
    <!-- Add VS\...\PublicAssemblies to the list of places
         to look for assemblies used by templates. -->
    <T4ReferencePath Include="$(VsIdePath)PublicAssemblies\" />
</ItemGroup>

Ee847423.collapse_all(zh-tw,VS.110).gif轉換特定範本

您可以透過 msbuild 公用程式叫用 Transform 工作來轉換指定的檔案。 這項工作未相依於 TransformOnBuild 屬性,也不會編譯專案檔。 您必須匯入文字範本化目標,如之前章節所述。

例如,轉換特定檔案:

msbuild myproj.proj /t:Transform /p:TransformFile=MyTemplate.tt

您也可以在 TransformFile 參數中使用萬用字元。 例如,下列命令會轉換 GeneratedCode 資料夾底下所有的 .tt 檔案:

msbuild dsl.csproj /t:Transform /p:TransformFile="GeneratedCode\**\*.tt"

Ee847423.collapse_all(zh-tw,VS.110).gif累加建置

根據預設,如果範本的輸出檔是最新的,組建管理員會嘗試避免執行該範本。 為達成此目的,它會監視檔案系統以檢查範本程式碼讀取了哪些檔案。 接下來,則會比較這些檔案的修改日期與輸出檔的日期。 如果有任何輸入檔的修改日期比輸出檔日期還要晚,就執行範本。 如果沒有之前執行此範本的相關資訊,也會執行該範本。

因此,如果輸出檔比下列任何檔案還舊,將會重新產生該輸出檔:

  • 文字範本檔

  • <#@include#> 指示詞中指定的檔案

  • 範本中程式碼所讀取的檔案

  • 範本中使用之指示詞處理器所讀取或包含的檔案

如果您想要確保會在每個組建中執行所有的範本,請插入以下屬性:

<TransformOutOfDateOnly>false</TransformOutOfDateOnly>

Ee847423.collapse_all(zh-tw,VS.110).gif原始檔控制

與原始檔控制系統的特定內建整合並未提供。 但是您可以加入自己的擴充項目,例如簽出和簽入已產生的檔案。

根據預設,文字轉換工作會避免覆寫標記為唯讀的檔案,一旦遇到這樣的檔案時,就會在 Visual Studio 錯誤清單中記錄錯誤,而且工作會失敗。

若要指定必須覆寫唯讀檔案,請插入以下屬性:

<OverwriteReadOnlyOuputFiles>true</OverwriteReadOnlyOuputFiles>

除非您自訂後置處理步驟,否則覆寫檔案時就會將警告記錄於錯誤清單中。

Ee847423.collapse_all(zh-tw,VS.110).gif自訂建置流程

您可以自訂建置流程,例如簽出已遭覆寫的檔案。 系統提供了兩個自訂點,轉換之前和之後會分別呼叫這兩個點。

若要定義這些自訂點,請定義屬性 $(BeforeTransform) 和 $(AfterTransform)。

例如:

<PropertyGroup>
    <BeforeTransform>CustomPreTransform</BeforeTransform>
    <AfterTransform>CustomPostTransform;$(AfterTransform)</AfterTransform>
  </PropertyGroup>
  <Target Name="CustomPreTransform">
    <Message Text="In CustomPreTransform..." Importance="High" />
  </Target>
  <Target Name="CustomPostTransform">
    <Message Text="In CustomPostTransform..." Importance="High" />
  </Target>

在 AfterTransform 中,可以參考下列清單:

  • GeneratedFiles:流程所寫入之檔案的清單。 對於已覆寫現有唯讀檔的檔案而言,%(GeneratedFiles.ReadOnlyFileOverwritten) 將會是 true。 您可以從原始檔控制中簽出這些檔案。

  • NonGeneratedFiles:不會遭到覆寫之唯讀檔案的清單。

例如,您可以使用這些清單來簽出遭覆寫的檔案。

組建伺服器上的文字轉換

如果組建伺服器執行所在的電腦未安裝 Visual Studio,您應該從已安裝 Visual Studio SDK 的電腦將下列檔案複製到組建電腦:

  • \Program Files\Microsoft Visual Studio 2010 SDK\VisualStudioIntegration\Common\Assemblies\v4.0\

    • Microsoft.VisualStudio.TextTemplating.11.0.dll

    • Microsoft.VisualStudio.TextTemplating.Interfaces.11.0.dll

    • Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll

  • \Program Files\MSBuild\Microsoft\VisualStudio\TextTemplating\v11.0\

    • Microsoft.VisualStudio.TextTemplating.Sdk.Host.11.0.dll
  • \Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\

    • Microsoft.VisualStudio.TextTemplating.Modeling.11.0.dll

如需詳細資訊,請參閱部署和設定組建控制器

請參閱

其他資源

Visual Studio Visualization and Modeling SDK