T4 アセンブリ ディレクティブ
Visual Studio のデザイン時テキスト テンプレートでは、テンプレート コードでアセンブリの型を使用できるように、assembly
ディレクティブによってアセンブリが読み込まれます。 結果は、Visual Studio プロジェクトでアセンブリ参照を追加した場合と同様です。
テキスト テンプレートの作成方法の概要については、「T4 テキスト テンプレートの作成」を参照してください。
Note
実行時 (前処理された) テキスト テンプレートでは、assembly
ディレクティブは不要です。 代わりに、必要なアセンブリを Visual Studio プロジェクトの [参照] に追加します。
assembly ディレクティブの使用
ディレクティブの構文は次のとおりです。
<#@ 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 テキスト テンプレートを使用した実行時テキスト生成」を参照してください。
標準アセンブリ
次のアセンブリは自動的に読み込まれるので、これらのアセンブリのアセンブリ ディレクティブを記述する必要はありません。
Microsoft.VisualStudio.TextTemplating.1*.dll
System.dll
WindowsBase.dll
カスタム ディレクティブを使用する場合は、ディレクティブ プロセッサによって追加のアセンブリが読み込まれます。 たとえば、ドメイン固有言語 (DSL) のテンプレートを作成した場合、次のアセンブリのアセンブリ ディレクティブを記述する必要はありません。
Microsoft.VisualStudio.Modeling.Sdk.1*.dll
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.1*.dsl
Microsoft.VisualStudio.TextTemplating.Modeling.1*.dll
DSL を含むアセンブリ
MSBuild と Visual Studio の両方でプロジェクト プロパティを使用する
$(SolutionDir) などの Visual Studio のマクロは、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" #>
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示