Understanding T4: <#@ import #> directive
Here is how MSDN documentation defines the import directive.
By using the import directive, you can refer to types in a text template without providing a fully qualified name.
Here is what happens under the hood.
Template
<#@ template language="C#" debug="True" #> <#@ import namespace="System.Diagnostics" #> <# Debugger.Break(); #>
Compiled Template
using System; using System.Diagnostics; using Microsoft.VisualStudio.TextTemplating; namespace Microsoft.VisualStudio.TextTemplating559506E3E78F9B3E7 { public class GeneratedTextTransformation: TextTransformation { public override string TransformText() { Debugger.Break(); return this.GenerationEnvironment.ToString(); } } }
Notice that T4 transformed the import directive into a C# using directive in the compiled template. That allowed us to reference System.Diagnostics.Debugger class in the template code without specifying its namespace.
About T4
T4 (Text Template Transformation Toolkit) is a template-based code generation engine. It is available in Visual Studio 2008 and as a download in DSL and GAT toolkits for Visual Studio 2005. T4 engine allows you to use ASP.NET-like template syntax to generate C#, T-SQL, XML or any other text files.
Ready for more? Read about <#@ assembly #> directive or go back to the overview.


