T4 組件指示詞
在 Visual Studio 設計階段文字範本中,assembly
指示詞會載入組件,因此範本程式碼可以使用它的類型。 這種效果類似在 Visual Studio 專案中加入組件參考。
如需撰寫文字範本的一般概觀,請參閱撰寫 T4 文字範本 (部分機器翻譯)。
注意
在執行階段 (前置處理過的) 文字範本中,不需要 assembly
指示詞。 而是在 Visual Studio 專案的 [參考] 中加入所需的組件。
使用組件指示詞
指示詞的語法如下:
<#@ assembly name="[assembly strong name|assembly file name]" #>
組件名稱應該是下列其中一個:
GAC 中組件的強式名稱,例如
System.Xml.dll
。 您也可以使用完整格式,例如name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
。 如需詳細資訊,請參閱AssemblyName。組件的絕對路徑
$(variableName)
語法可用來參考 Visual Studio 變數 (例如$(SolutionDir)
),而%VariableName%
可用來參考環境變數。 例如:
<#@ assembly name="$(SolutionDir)\MyProject\bin\Debug\SomeLibrary.Dll" #>
assembly 指示詞在前置處理過的文字範本中無效。 因此,請改在 Visual Studio 專案的 [參考] 區段中加入必要的參考。 如需詳細資訊,請參閱使用 T4 文字範本產生執行階段文字 (部分機器翻譯)。
標準組件
下列組件會自動載入,因此您不需要為它們撰寫 assembly 指示詞:
Microsoft.VisualStudio.TextTemplating.1*.dll
System.dll
WindowsBase.dll
如果使用自訂指示詞,指示詞處理器可能會載入額外的組件。 例如,如果為特定領域語言 (DSL) 撰寫範本,就不需要為下列組件撰寫 assembly 指示詞:
Microsoft.VisualStudio.Modeling.Sdk.1*.dll
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.1*.dsl
Microsoft.VisualStudio.TextTemplating.Modeling.1*.dll
包含 DSL 的組件。
在 MSBuild 和 Visual Studio 中使用專案屬性。
Visual Studio 巨集 (如 $(SolutionDir)) 在 MSBuild 中無法運作。 如果想要轉換組建電腦中的範本,您必須改用專案屬性。
編輯您的 .csproj 或 .vbproj 檔案以定義專案屬性。 這個範例會定義名為 myLibFolder
的屬性:
<!-- Define a project property, myLibFolder: -->
<PropertyGroup>
<myLibFolder>$(MSBuildProjectDirectory)\..\libs</myLibFolder>
</PropertyGroup>
<!-- Tell the MSBuild T4 task to make the property available: -->
<ItemGroup>
<T4ParameterValues Include="myLibFolder">
<Value>$(myLibFolder)</Value>
</T4ParameterValues>
</ItemGroup>
現在您可以在文字範本中使用專案屬性,該屬性在 Visual Studio 和 MSBuild 中會正確轉換:
<#@ assembly name="$(myLibFolder)\MyLib.dll" #>