Share via


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" #>

関連項目