Mem*_*per 2 t4 templates code-generation visual-studio-2010
我一直在努力
编译转换:已导入具有相同标识"xxxx"的程序集.尝试删除其中一个重复的引用.
使用T4在设计时生成一些代码 - 将几个不同的可重用模板保存为.ttinclude文件,并在许多不同的"父"模板中共享.
我在这之间切换,当我删除其中一个引用(在我自己的ttinclude文件中)时,替换为:
编译转换:找不到类型或命名空间名称'yyy'(您是否缺少using指令或程序集引用?)
围绕圈子,任何想法?
好吧,找到一个肮脏的解决方法.
如果有人有建议,会喜欢更好的解决方案/方法吗?
发布我的过程可能对其他人有帮助.
使用模板指令将模板和包含模板放入调试模式,例如
<#@ template language ="C#" debug ="true" hostspecific ="true"#>
在获得编译转换错误后,弹出打开%TEMP%以查看生成的文件(最近修改过的).
搜索使用的丢失/加倍装配/类别.发现哪些"包含"模板都具有相同的参考例如
<#@ include file ="MyHelperTemplate.ttinclude"#>
并且:
<#@ include file ="EF.Utility.CS.ttinclude"#>
打开导致与我自己发生冲突的非自定义包含的include文件夹
..\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes
打开这个文件,删除了麻烦的导入
<#@ import namespace ="EnvDTE"#>
使用相同文件夹中的新名称和更新的引用保存它以指向此新版本,例如
<#@ include file ="EF.Utility.CS.Custom.ttinclude"#>
将所需的导入放入"父"模板,并从"包含"模板中删除.在我的情况下,这是:
<#@ import namespace ="EnvDTE"#>
现在它运行正常,没有任何问题,没有重复的导入,并且正确引用了所有必需的程序集.
我确信有一种更复杂的方法来处理T4代码重用,完全否定了这个问题.我最初尝试导入我自己的自定义程序集,使用模板的帮助程序,但当我尝试构建自定义类库时,看起来像锁定dll的经典问题.
似乎T4 Toolbox有一个解决方案,使用VolatileAssembly自定义指令,并且很受欢迎,但对于我相当简单的需求看起来有点过分.也许当我有更多的时间.
归档时间: |
|
查看次数: |
1593 次 |
最近记录: |