T4 アセンブリ ディレクティブT4 Assembly Directive

Visual Studio のデザイン時テキストテンプレートでは、 assembly ディレクティブはアセンブリを読み込み、テンプレートコードがその型を使用できるようにします。In a Visual Studio design-time text template, the assembly directive loads an assembly so that your template code can use its types. 効果は、Visual Studio プロジェクトにアセンブリ参照を追加することに似ています。The effect is similar to adding an assembly reference in a Visual Studio project.

テキストテンプレートの記述の概要については、「 T4 テキストテンプレートの作成」を参照してください。For a general overview of writing text templates, see Writing a T4 Text Template.

注意

実行時 (前処理された) テキスト テンプレートでは、assembly ディレクティブは不要です。You do not need the assembly directive in a run-time (preprocessed) text template. 代わりに、必要なアセンブリを Visual Studio プロジェクトの 参照 に追加します。Instead, add the necessary assemblies to the References of your Visual Studio project.

assembly ディレクティブの使用Using the Assembly Directive

ディレクティブの構文は次のとおりです。The syntax of the directive is as follows:

<#@ assembly name="[assembly strong name|assembly file name]" #>

アセンブリ名は、次のいずれかであることが必要です。The assembly name should be one of the following:

  • GAC のアセンブリの厳密な名前 (System.Xml.dll など)。The strong name of an assembly in the GAC, such as System.Xml.dll. name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" のような長い形式を使用することもできます。You can also use the long form, such as name="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". 詳細については、「AssemblyName」を参照してください。For more information, see AssemblyName.

  • アセンブリの絶対パス。The absolute path of the assembly

    構文を使用し $(variableName) て、などの Visual Studio 変数を参照 $(SolutionDir) したり、 %VariableName% 環境変数を参照したりすることができます。You can use the $(variableName) syntax to reference Visual Studio variables such as $(SolutionDir), and %VariableName% to reference environment variables. 次に例を示します。For example:

<#@ assembly name="$(SolutionDir)\MyProject\bin\Debug\SomeLibrary.Dll" #>

assembly ディレクティブは、前処理されたテキスト テンプレートでは無効です。The assembly directive has no effect in a preprocessed text template. 代わりに、必要な参照を Visual Studio プロジェクトの [ 参照 ] セクションに含めます。Instead, include the necessary references in the References section of your Visual Studio project. 詳細については、「 T4 テキストテンプレートを使用した実行時テキスト生成」を参照してください。For more information, see Run-Time Text Generation with T4 Text Templates.

標準アセンブリStandard Assemblies

次のアセンブリは自動的に読み込まれるので、これらのアセンブリのアセンブリ ディレクティブを記述する必要はありません。The following assemblies are loaded automatically, so that you do not need to write assembly directives for them:

  • Microsoft.VisualStudio.TextTemplating.1*.dll

  • System.dll

  • WindowsBase.dll

    カスタム ディレクティブを使用する場合は、ディレクティブ プロセッサによって追加のアセンブリが読み込まれます。If you use a custom directive, the directive processor might load additional assemblies. たとえば、ドメイン固有言語 (DSL) のテンプレートを作成した場合、次のアセンブリのアセンブリ ディレクティブを記述する必要はありません。For example, if you write templates for a domain-specific language (DSL), you do not need to write assembly directives for the following assemblies:

  • Microsoft.VisualStudio.Modeling.Sdk.1*.dll

  • Microsoft.VisualStudio.Modeling.Sdk.Diagrams.1*.dsl

  • Microsoft.VisualStudio.TextTemplating.Modeling.1*.dll

  • DSL を含むアセンブリThe assembly containing your DSL.

MSBuild と Visual Studio の両方でのプロジェクトプロパティの使用Using project properties in both MSBuild and Visual Studio

$ (SolutionDir) などの Visual Studio マクロは、MSBuild では動作しません。Visual Studio macros like $(SolutionDir) don't work in MSBuild. ビルド コンピューターでテンプレートを変換する場合、代わりにプロジェクトのプロパティを使用する必要があります。If you want to transform templates in your build machine, you have to use project properties instead.

.csproj ファイルまたは .vbproj ファイルを編集してプロジェクトのプロパティを定義します。Edit your .csproj or .vbproj file to define a project property. この例では、myLibFolder という名前のプロパティを定義します。This example defines a property named 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 の両方で正しく変換できるテキスト テンプレートでプロジェクトのプロパティを使用できます。Now you can use your project property in text templates, which transform correctly in both Visual Studio and MSBuild:

<#@ assembly name="$(myLibFolder)\MyLib.dll" #>

こちらもご覧くださいSee also