Поделиться через


Директива Assembly T4

В текстовом шаблоне времени разработки Visual Studio директива загружает сборку, assembly чтобы код шаблона использовал его типы. Эффект аналогичен добавлению ссылки на сборку в проекте Visual Studio.

Общие сведения о написании текстовых шаблонов см. в статье "Написание текстового шаблона T4".

Примечание.

В текстовом шаблоне времени выполнения (предварительно обработанном) директива assembly не требуется. Вместо этого добавьте необходимые сборки в ссылки проекта Visual Studio.

Использование директивы Assembly

Синтаксис директивы таков:

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

Имя сборки должно быть одним из следующих:

  • Строгое имя сборки в глобальном кэше сборок, такое как 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

Макросы 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" #>

См. также