Visual studio 2010 在T4模板中引用部件
我上次使用T4已经有一段时间了,这可能是一个愚蠢的问题 是否可以从模板引用任意程序集 例如:Visual studio 2010 在T4模板中引用部件,visual-studio-2010,t4,Visual Studio 2010,T4,我上次使用T4已经有一段时间了,这可能是一个愚蠢的问题 是否可以从模板引用任意程序集 例如: 我想在ProjectX中使用一个类 projectx.Test引用X并包含.tt文件 我认为以下方法应该有效 <#@ assembly name="X" #> 但我在保存时遇到以下错误: 编译转换:元数据 找不到文件“X” 我做错了什么 (如果有人感兴趣:我正试图根据从X获得的一些元数据自动生成特定类型的测试) 更新:看起来VS2010破坏了我所期望的程序集解析行为。发件人: T4
- 我想在ProjectX中使用一个类
- projectx.Test引用X并包含.tt文件
<#@ assembly name="X" #>
但我在保存时遇到以下错误:
编译转换:元数据
找不到文件“X”
我做错了什么
(如果有人感兴趣:我正试图根据从X获得的一些元数据自动生成特定类型的测试)
更新:看起来VS2010破坏了我所期望的程序集解析行为。发件人:
T4的装配套件已完全安装完毕
与容器分离
要避免的项目的程序集
在发生错误时拾取错误的程序集
项目针对以前的框架
版本。项目程序集不可用
不再用于解析模板
汇编指令
除了使用绝对路径之外,还有其他解决方法吗?您可以在VS2010的参考中使用VS宏变量,例如$(SolutionDir) e、 g
您也可以在此处查看,因此:@GarethJ给出了一个很好的答案,但对于从T4模板引用程序集的所有方法,请尝试以下方法:
如果您喜欢VS宏解决方案,那么您可以在这里找到它们:您是否尝试过使用该程序集的完全限定路径?文本模板工具是一个外部工具,可能不知道您已加载到VS中的项目是否有效,但我需要在多台机器上运行此工具,这些机器可能具有不同路径的项目。这正是我所寻找的。谢谢这对我没用。你知道我做错了什么吗?我的assembly ref如下:这应该可以很好地工作,但它听起来像是来自于你使用的VS2008,而不是VS2010?如果您使用的是VS2008,建议您将程序集添加为宿主项目中的项目引用。+1非常有用。我必须引用当前的程序集,并使用以下命令:在Mvc中编辑scaffolding tts时如何?MVCWebApplication1\CodeTemplates\AddView\CSHTML\Edit.tt。在简单的.tt中工作,但不在编辑中工作。tt:也可以通过“$(SolutionDir)”尝试
<#@ assembly name="$(SolutionDir)\Project1\bin\debug\Foo.dll" #>