Visual Studio T4에서 Statement, Expression, BoilerPlate 및 ClassFeature IIRC와 같은 다양한 세그먼트를 참조하므로 Helper/Block과의 의미가 다소 어렵습니다.
모노 T4에 대한 source code을 확인하는 동안 Block은 Statement와 Helpers를 참조하는 것이 ClassFeatures를 참조한다고 추측합니다.
T4 예 :
<# // This is a Statement #>
<#+ // This is a ClassFeature #>
그것은 문이 T4에서 ClassFeatures하지만 내가 여기서 무슨 일이 일어나고 생각하고 아래에 표시 할 수없는 사실은 ttinclude 파일의 Visual Studio를 T4가하는 "스마트"병합입니다. Mono T4는 그렇지 않을 수도 있습니다.
왜 이러한 두 개의 T4 파일을 고려해야할까요?
예 T4.ttinclude :
<# // 1. This is a Statement #>
<#+ // 1. This is a ClassFeature #>
예 T4.tt
<# // 2. This is a Statement #>
<#+ // 2. This is a ClassFeature #>
<#@ include file="T4.ttinclude" #>
직접적인 단지 파일을 병합 할 것 등의 구현 :
<# // 2. This is a Statement #>
<#+ // 2. This is a ClassFeature #>
<# // 1. This is a Statement #>
<#+ // 1. This is a ClassFeature #>
을하지만 이것은 불법이다 T4 템플릿을 사용하여 Visual Studio T4에서 (내 지식으로)이 파일을이 파일에 병합합니다. 법률 :
내가 추측을 할 수 있습니까 경우
<# // 1. This is a Statement #>
<# // 2. This is a Statement #>
<#+ // 1. This is a ClassFeature #>
<#+ // 2. This is a ClassFeature #>
그래서 모노 T4는 간단한 방법을 사용하여 파일을 포함하지만, 음속 템플릿을 약간 더 세련된 전략을 포함 사용하는 비주얼 스튜디오 T4에 대한 디자인 있다는 것입니다.
이것은 단지 ClassFeatures을 사용하려면
- 리팩터링 SQLLite.ttinclude에 또는 Settings.ttinclude 당신이 필요로 할 이유는 경우. 그것은 아마 a에서 주요한 리팩터링을 가지고있는 것입니다.ttinclude 파일은 매우 편리합니다.
- 리팩터링 모노 T4는
는 어느 쪽도 좋은 소식은 내가 두려워하지 Visual Studio를 T4와 유사한 일을 할 수 있습니다.
추신. 모노 코드를 읽는 동안은이를 생각 dev에 보인다
//TODO: are blocks permitted after helpers?
throw new ParserException ("Blocks are not permitted after helpers", seg.StartLocation);
SharpDevelop는 MonoDevelop T4 엔진을 사용하므로 둘 다 동일한 문제가 있습니다. 문제에 대한 훌륭한 분석. MonoDevelop T4 엔진은 클래스 기능이있는 템플릿을 포함 할 때 스마트 병합을 수행하지 않습니다. –