引用T4模板中的程序集

时间:2010-07-13 21:46:50

标签: visual-studio-2010 t4

自从我上次使用T4以来已经有一段时间了,这可能是一个愚蠢的问题......

是否可以从模板引用任意组件?

示例:

  • 我有一个我想在Project X中使用的课程
  • 项目X.Test引用X并包含.tt文件

我认为以下内容应该有效

<#@ assembly name="X" #>

但是我在保存时遇到以下错误:

  

编译转换:元数据   无法找到档案'X'

我做错了什么?

(如果有人感兴趣:我正在尝试根据我从X获得的一些元数据自动生成特定类型的测试)

更新:看起来VS2010破坏了我期待的装配分辨率行为。来自http://blogs.msdn.com/b/garethj/archive/2010/04/15/what-s-new-in-t4-in-visual-studio-2010.aspx

  

T4的装配完全是   与含有分开   项目的装配设置要避免   在a时拿起错误的组件   项目针对以前的框架   版本。项目组装没有   更长时间用于解析模板   装配指令。

除了使用绝对路径之外,还有其他解决方法吗?

3 个答案:

答案 0 :(得分:25)

从VS2010开始,您可以在参考中使用VS宏变量,例如$(SolutionDir) e.g。

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

答案 1 :(得分:1)

您也可以点击此处查看:Can't reference an assembly in a T4 template

答案 2 :(得分:0)

@GarethJ提供了一个很好的答案,但是对于从T4模板引用程序集的所有方法,请尝试:T4 Template error - Assembly Directive cannot locate referenced assembly in Visual Studio 2010 project

如果你喜欢VS Macro解决方案,那么你可以在这里找到它们:Macros for Build Commands and Properties