我正在开发我的第一个T4代码生成工具,以添加一些存储过程帮助器代码到我的项目中。我创建了自定义类型(例如StoredProcedure
和StoredProcedureParameter
),以帮助我的代码生成,并已在我的代码中包含了程序集和名称空间引用:
<#@ template debug="false" hostspecific="false" language="VB" #>
<#@ output extension=".generated.vb" #>
<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="StoredProcCodeGenerator" #>
这使我可以在T4模板代码中使用自定义类型。然而,由于我的自定义类型存在于与T4模板代码相同的项目中,因此一旦运行模板代码,就无法重新编译我的项目而不重新启动Visual Studio。 这不太好玩。
我读了一篇很棒的文章,它通过使用T4 Toolbox来解决这个问题,但它没有起作用。 我可能实现了VolatileAssembly
指令错误,或者T4工具箱只是未被安装。 我不确定工具箱是否已正确安装(我在Win XP上使用VS 2010)。
有哪些方法可以解决这个问题?
<#@ VolatileAssembly ...
之前必须先删除<#@ assembly name="$(TargetPath)" #>
。我已经添加了一个答案来解释这个问题。 - Ben McCormack