问题
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() #>
回答1:
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.
来源:https://stackoverflow.com/questions/11078905/use-class-inside-a-t4-template