Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use class inside a T4 template

Tags:

c#

t4

I need to be able to use a class inside a T4 template, both of which reside in my solution. I have a class named Container in Container.cs. In my text template I want to be able to Access Container class. Any ideas on how can i do this. Basically something like this:

<#@ template language="C#" #>

<# var container = new Container() #>

like image 330
user1396149 Avatar asked Jun 18 '12 07:06

user1396149


People also ask

What is T4 template in Entity framework?

t4 template is used to scaffold a DbContext class for the database, and the EntityType. t4 template is used to scaffold entity type classes for each table and view in the database.


1 Answers

In general, if you need to actually use the Container class's functionality in your template, you'll want to load the assembly that your project is building. This does introduce a circular dependency, as you need a built version of your assembly in order to regenerate code that is going to be included in that assembly, so be aware of that.

If you're using VS2010 or above, you'll be able to use something like:

<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="Your.Namespace" #>

and then use your Container class.

If you have VS2010SP1 or above, this will cause you no probelms with locking that assembly in memory, but if you're earlier than that, then you'll have to restart Visual Studio after each generation before you can rebuild your project.

like image 114
GarethJ Avatar answered Oct 15 '22 11:10

GarethJ