我在生成 T4 代码时遇到了一个小问题。
我已将 T4 模板分解为单独的文件并将它们放置在不同的目录中,我已经这样做了,因此我的代码生成的部分内容可以在多个项目中重复使用,例如模型生成、存储库生成和服务生成都包含核心 EntityGeneration.tt 文件。
不幸的是,当 TextTemplate 解析我的嵌套包含时,它会在生成的 .cs 文件中构建一个很长的 #line 预处理器指令,将所有相对路径组合到最低级别包含文件。
不幸的是,由于该路径是用相对路径构建的,因此它最终会变得不必要的长,实际上长到超过了最大路径长度(Windows 7)。
如果您感兴趣的话,这是生成代码中的错误行:
#line 3 "C:\VS2010\AlbatrossTravelGroup\ASC\AlbatrossTravelGroup.ASC.BusinessRules\Services\Contracts\..\..\..\..\AlbatrossTravelGroup.BusinessRules\Services\Contracts\..\..\..\AlbatrossTravelGroup.Models\Repositories\Contracts\..\..\../AlbatrossTravelGroup.Common/CodeGeneration.tt"
我的问题是,如何禁用这些指令写入生成的代码文件?如果做不到这一点,如何在不更改文件结构的情况下避免此问题?
Visual Studio 2012 添加了linePragmas="false"
模板指令:
<#@ template language="C#" linePragmas="false" #>
http://msdn.microsoft.com/en-us/library/gg586945(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/gg586945(v=vs.110).aspx
仍然不确定如何在 VS2010 中执行此操作,我在工作中一直在使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)