Директива 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" #>