自从我上次使用T4以来已经有一段时间了,这可能是一个愚蠢的问题......
是否可以从模板引用任意组件?
示例:
我认为以下内容应该有效
<#@ 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时拿起错误的组件 项目针对以前的框架 版本。项目组装没有 更长时间用于解析模板 装配指令。
除了使用绝对路径之外,还有其他解决方法吗?
答案 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