开发者

Referencing an assembly in a T4 template

开发者 https://www.devze.com 2023-01-07 05:41 出处:网络
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?

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.

<#@ assembly name="$(SolutionDir)\Project1\bin\debug\Foo.dll" #>


You can also check here on SO: Can't reference an assembly in a T4 template


@GarethJ gives a good answer but for all the methods of referencing an assembly from a T4 template try this: T4 Template error - Assembly Directive cannot locate referenced assembly in Visual Studio 2010 project.

And if you like the VS Macro solution then you can find 'em all here: Macros for Build Commands and Properties

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号