It’s been a while since I last used T4 and this is probably a silly question…
Is it possible to reference an arbitrary assembly from a template?
Example:
- I have a class that I’d like to use in Project X
- Project X.Test references X and contains the .tt file
I assume the following should work
<#@ assembly name="X" #>
But I get the following error on save:
Compiling transformation: Metadata
file ‘X’ could not be found
What am I doing wrong?
(In case anyone’s interested: I’m trying to automatically generate a particular type of tests based on some metadata that I get from X)
Update: it looks like VS2010 has broken the assembly resolution behavior that I was expecting. From Link:
T4’s assembly set is completely
separated from the containing
project’s assembly set to avoid
picking up the wrong assemblies when a
project targets previous framework
versions. Project assemblies are no
longer used to resolve template
assembly directives.
Are there any workarounds, besides using absolute paths?
You can use VS macro variables such as $(SolutionDir) in your reference as of VS2010
e.g.