c# – 如何禁用写入T4代输出文件的#line指令

我的T4代码生成遇到了一个小问题。

我已将T4模板分解成不同的文件并将它们放在各种目录中,我已经做到了这一点,所以我的代码生成的一部分可能会被重用在多个项目中。模型生成,存储库生成和服务生成都包含一个核心的EntityGeneration.tt文件。

不幸的是,当TextTemplating解析我的嵌套包含时,它在其生成的.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

仍然不知道如何做到这一点在VS2010,我被困在工作。

http://stackoverflow.com/questions/7887081/how-to-disable-line-directives-being-written-to-the-t4-generation-output-file

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 如何禁用写入T4代输出文件的#line指令