[{"data":1,"prerenderedAt":3561},["ShallowReactive",2],{"blog:2009:multiple-outputs-from-t4-made-easy":3,"blogMore-Development":3091,"comments-multiple-outputs-from-t4-made-easy":3104},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"category":11,"tags":12,"excerpt":16,"body":38,"_type":3083,"_id":3084,"_source":3085,"_file":3086,"_stem":3087,"_extension":3088,"url":3089,"wordCount":3090,"minutes":393,"commentCount":681},"/blog/2009/multiple-outputs-from-t4-made-easy","2009",false,"en","Multiple outputs from T4 made easy","","2009-01-22T11:53:13+00:00","Development",[13,14,15],".NET","T4","C#",{"type":17,"children":18},"root",[19,29],{"type":20,"tag":21,"props":22,"children":23},"element","p",{},[24,27],{"type":25,"value":26},"text","An ",{"type":25,"value":28},"improved version is now available.",{"type":20,"tag":21,"props":30,"children":31},{},[32,34,36],{"type":25,"value":33},"One of the things I wanted my ",{"type":25,"value":35},"LINQ to SQL T4 templates",{"type":25,"value":37}," to do was be able to split the output into a file-per-entity. Existing solutions used either a separate set of templates with duplicate code or intrusive handling code throughout the template. Here’s my helper class to abstract the problem away from what is already complicated enough template code.",{"type":17,"children":39,"toc":3074},[40,54,66,73,80,85,197,203,208,311,317,322,416,422,427,467,475,481,486,508,3059,3068],{"type":20,"tag":41,"props":42,"children":43},"blockquote",{},[44],{"type":20,"tag":21,"props":45,"children":46},{},[47,48],{"type":25,"value":26},{"type":20,"tag":49,"props":50,"children":52},"a",{"href":51},"/blog/2009/multiple-outputs-from-t4-made-easy-revisited/",[53],{"type":25,"value":28},{"type":20,"tag":21,"props":55,"children":56},{},[57,58,65],{"type":25,"value":33},{"type":20,"tag":49,"props":59,"children":63},{"href":60,"rel":61},"https://l2st4.codeplex.com",[62],"nofollow",[64],{"type":25,"value":35},{"type":25,"value":37},{"type":20,"tag":67,"props":68,"children":70},"h2",{"id":69},"using-the-manager-class",[71],{"type":25,"value":72},"Using the Manager class",{"type":20,"tag":74,"props":75,"children":77},"h3",{"id":76},"setup",[78],{"type":25,"value":79},"Setup",{"type":20,"tag":21,"props":81,"children":82},{},[83],{"type":25,"value":84},"You’ll need to get the code into your template, either by copying the code in or referencing it with an include directive. Then declare an instance of the Manager class passing in some environmental options such as the desired default output path.",{"type":20,"tag":86,"props":87,"children":91},"pre",{"className":88,"code":89,"language":90,"meta":9,"style":9},"language-csharp shiki shiki-themes everforest-light dracula","\u003C#@ template language=\"C#v3.5\" hostspecific=\"True\"\n#>\u003C#@ include file=\"Manager.ttinclude\"\n#>\u003C# var manager = new Manager(Host, GenerationEnvironment, true) { OutputPath = Path.GetDirectoryName(Host.TemplateFile) }; #>\n","csharp",[92],{"type":20,"tag":93,"props":94,"children":95},"code",{"__ignoreMap":9},[96,169,184],{"type":20,"tag":97,"props":98,"children":101},"span",{"class":99,"line":100},"line",1,[102,108,114,120,125,130,136,142,146,151,155,159,164],{"type":20,"tag":97,"props":103,"children":105},{"style":104},"--shiki-default:#F57D26;--shiki-dark:#FF79C6",[106],{"type":25,"value":107},"\u003C",{"type":20,"tag":97,"props":109,"children":111},{"style":110},"--shiki-default:#5C6A72;--shiki-dark:#F8F8F2",[112],{"type":25,"value":113},"#@ ",{"type":20,"tag":97,"props":115,"children":117},{"style":116},"--shiki-default:#3A94C5;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic",[118],{"type":25,"value":119},"template",{"type":20,"tag":97,"props":121,"children":122},{"style":110},[123],{"type":25,"value":124}," language",{"type":20,"tag":97,"props":126,"children":127},{"style":104},[128],{"type":25,"value":129},"=",{"type":20,"tag":97,"props":131,"children":133},{"style":132},"--shiki-default:#8DA101;--shiki-dark:#E9F284",[134],{"type":25,"value":135},"\"",{"type":20,"tag":97,"props":137,"children":139},{"style":138},"--shiki-default:#8DA101;--shiki-dark:#F1FA8C",[140],{"type":25,"value":141},"C#v3.5",{"type":20,"tag":97,"props":143,"children":144},{"style":132},[145],{"type":25,"value":135},{"type":20,"tag":97,"props":147,"children":148},{"style":110},[149],{"type":25,"value":150}," hostspecific",{"type":20,"tag":97,"props":152,"children":153},{"style":104},[154],{"type":25,"value":129},{"type":20,"tag":97,"props":156,"children":157},{"style":132},[158],{"type":25,"value":135},{"type":20,"tag":97,"props":160,"children":161},{"style":138},[162],{"type":25,"value":163},"True",{"type":20,"tag":97,"props":165,"children":166},{"style":132},[167],{"type":25,"value":168},"\"\n",{"type":20,"tag":97,"props":170,"children":172},{"class":99,"line":171},2,[173,179],{"type":20,"tag":97,"props":174,"children":176},{"style":175},"--shiki-default:#5C6A72;--shiki-dark:#FF79C6",[177],{"type":25,"value":178},"#",{"type":20,"tag":97,"props":180,"children":181},{"style":110},[182],{"type":25,"value":183},">\u003C#@ include file=\"Manager.ttinclude\"\n",{"type":20,"tag":97,"props":185,"children":187},{"class":99,"line":186},3,[188,192],{"type":20,"tag":97,"props":189,"children":190},{"style":175},[191],{"type":25,"value":178},{"type":20,"tag":97,"props":193,"children":194},{"style":110},[195],{"type":25,"value":196},">\u003C# var manager = new Manager(Host, GenerationEnvironment, true) { OutputPath = Path.GetDirectoryName(Host.TemplateFile) }; #>\n",{"type":20,"tag":74,"props":198,"children":200},{"id":199},"define-a-block",[201],{"type":25,"value":202},"Define a block",{"type":20,"tag":21,"props":204,"children":205},{},[206],{"type":25,"value":207},"Then add one line before and one line after each block which could be split out into it’s own file passing in what the filename would be if split.",{"type":20,"tag":86,"props":209,"children":211},{"className":88,"code":210,"language":90,"meta":9,"style":9},"\u003C# manager.StartBlock(\"Employee.generated.cs\"); #>\npublic class Employee { … }\n\u003C# manager.EndBlock(); #>\n",[212],{"type":20,"tag":93,"props":213,"children":214},{"__ignoreMap":9},[215,261,286],{"type":20,"tag":97,"props":216,"children":217},{"class":99,"line":100},[218,222,227,233,238,242,247,251,256],{"type":20,"tag":97,"props":219,"children":220},{"style":104},[221],{"type":25,"value":107},{"type":20,"tag":97,"props":223,"children":224},{"style":110},[225],{"type":25,"value":226},"# manager.",{"type":20,"tag":97,"props":228,"children":230},{"style":229},"--shiki-default:#8DA101;--shiki-dark:#50FA7B",[231],{"type":25,"value":232},"StartBlock",{"type":20,"tag":97,"props":234,"children":235},{"style":110},[236],{"type":25,"value":237},"(",{"type":20,"tag":97,"props":239,"children":240},{"style":132},[241],{"type":25,"value":135},{"type":20,"tag":97,"props":243,"children":244},{"style":138},[245],{"type":25,"value":246},"Employee.generated.cs",{"type":20,"tag":97,"props":248,"children":249},{"style":132},[250],{"type":25,"value":135},{"type":20,"tag":97,"props":252,"children":253},{"style":110},[254],{"type":25,"value":255},"); #",{"type":20,"tag":97,"props":257,"children":258},{"style":104},[259],{"type":25,"value":260},">\n",{"type":20,"tag":97,"props":262,"children":263},{"class":99,"line":171},[264,269,275,281],{"type":20,"tag":97,"props":265,"children":266},{"style":104},[267],{"type":25,"value":268},"public",{"type":20,"tag":97,"props":270,"children":272},{"style":271},"--shiki-default:#F85552;--shiki-dark:#FF79C6",[273],{"type":25,"value":274}," class",{"type":20,"tag":97,"props":276,"children":278},{"style":277},"--shiki-default:#3A94C5;--shiki-dark:#8BE9FD",[279],{"type":25,"value":280}," Employee",{"type":20,"tag":97,"props":282,"children":283},{"style":110},[284],{"type":25,"value":285}," { … }\n",{"type":20,"tag":97,"props":287,"children":288},{"class":99,"line":186},[289,293,297,302,307],{"type":20,"tag":97,"props":290,"children":291},{"style":104},[292],{"type":25,"value":107},{"type":20,"tag":97,"props":294,"children":295},{"style":110},[296],{"type":25,"value":226},{"type":20,"tag":97,"props":298,"children":299},{"style":229},[300],{"type":25,"value":301},"EndBlock",{"type":20,"tag":97,"props":303,"children":304},{"style":110},[305],{"type":25,"value":306},"(); #",{"type":20,"tag":97,"props":308,"children":309},{"style":104},[310],{"type":25,"value":260},{"type":20,"tag":74,"props":312,"children":314},{"id":313},"headers-and-footers",[315],{"type":25,"value":316},"Headers and footers",{"type":20,"tag":21,"props":318,"children":319},{},[320],{"type":25,"value":321},"Many templates need to share a common header/footer for such things as comments or using/import statements or turning on/off warnings. Simply use StartHeader/EndHeader and StartFooter/EndFooter. The resulting blocks will be emitted into all split files and left in the original output too.",{"type":20,"tag":86,"props":323,"children":325},{"className":88,"code":324,"language":90,"meta":9,"style":9},"\u003C# manager.StartHeader(); #>\n// Code generated template\nusing System;\n\n\u003C# manager.EndHeader(); #>\n",[326],{"type":20,"tag":93,"props":327,"children":328},{"__ignoreMap":9},[329,353,362,381,391],{"type":20,"tag":97,"props":330,"children":331},{"class":99,"line":100},[332,336,340,345,349],{"type":20,"tag":97,"props":333,"children":334},{"style":104},[335],{"type":25,"value":107},{"type":20,"tag":97,"props":337,"children":338},{"style":110},[339],{"type":25,"value":226},{"type":20,"tag":97,"props":341,"children":342},{"style":229},[343],{"type":25,"value":344},"StartHeader",{"type":20,"tag":97,"props":346,"children":347},{"style":110},[348],{"type":25,"value":306},{"type":20,"tag":97,"props":350,"children":351},{"style":104},[352],{"type":25,"value":260},{"type":20,"tag":97,"props":354,"children":355},{"class":99,"line":171},[356],{"type":20,"tag":97,"props":357,"children":359},{"style":358},"--shiki-default:#939F91;--shiki-default-font-style:italic;--shiki-dark:#6272A4;--shiki-dark-font-style:inherit",[360],{"type":25,"value":361},"// Code generated template\n",{"type":20,"tag":97,"props":363,"children":364},{"class":99,"line":186},[365,370,376],{"type":20,"tag":97,"props":366,"children":367},{"style":271},[368],{"type":25,"value":369},"using",{"type":20,"tag":97,"props":371,"children":373},{"style":372},"--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic",[374],{"type":25,"value":375}," System",{"type":20,"tag":97,"props":377,"children":378},{"style":110},[379],{"type":25,"value":380},";\n",{"type":20,"tag":97,"props":382,"children":384},{"class":99,"line":383},4,[385],{"type":20,"tag":97,"props":386,"children":388},{"emptyLinePlaceholder":387},true,[389],{"type":25,"value":390},"\n",{"type":20,"tag":97,"props":392,"children":394},{"class":99,"line":393},5,[395,399,403,408,412],{"type":20,"tag":97,"props":396,"children":397},{"style":104},[398],{"type":25,"value":107},{"type":20,"tag":97,"props":400,"children":401},{"style":110},[402],{"type":25,"value":226},{"type":20,"tag":97,"props":404,"children":405},{"style":229},[406],{"type":25,"value":407},"EndHeader",{"type":20,"tag":97,"props":409,"children":410},{"style":110},[411],{"type":25,"value":306},{"type":20,"tag":97,"props":413,"children":414},{"style":104},[415],{"type":25,"value":260},{"type":20,"tag":74,"props":417,"children":419},{"id":418},"process",[420],{"type":25,"value":421},"Process",{"type":20,"tag":21,"props":423,"children":424},{},[425],{"type":25,"value":426},"At the end of the template call Process to handle splitting the files (true) or not (false). Anything not included in a specific start/end block will remain in the original output file.",{"type":20,"tag":86,"props":428,"children":430},{"className":88,"code":429,"language":90,"meta":9,"style":9},"\u003C# manager.Process(true); #>\n",[431],{"type":20,"tag":93,"props":432,"children":433},{"__ignoreMap":9},[434],{"type":20,"tag":97,"props":435,"children":436},{"class":99,"line":100},[437,441,445,449,453,459,463],{"type":20,"tag":97,"props":438,"children":439},{"style":104},[440],{"type":25,"value":107},{"type":20,"tag":97,"props":442,"children":443},{"style":110},[444],{"type":25,"value":226},{"type":20,"tag":97,"props":446,"children":447},{"style":229},[448],{"type":25,"value":421},{"type":20,"tag":97,"props":450,"children":451},{"style":110},[452],{"type":25,"value":237},{"type":20,"tag":97,"props":454,"children":456},{"style":455},"--shiki-default:#DF69BA;--shiki-dark:#BD93F9",[457],{"type":25,"value":458},"true",{"type":20,"tag":97,"props":460,"children":461},{"style":110},[462],{"type":25,"value":255},{"type":20,"tag":97,"props":464,"children":465},{"style":104},[466],{"type":25,"value":260},{"type":20,"tag":41,"props":468,"children":469},{},[470],{"type":20,"tag":21,"props":471,"children":472},{},[473],{"type":25,"value":474},"When processing each block name in the Output path will either be overwritten or deleted to enable proper clean-up. It will also add and remove the files from Visual Studio so make sure your generated names aren’t going to collide with hand-written ones!",{"type":20,"tag":67,"props":476,"children":478},{"id":477},"manager-classes",[479],{"type":25,"value":480},"Manager classes",{"type":20,"tag":21,"props":482,"children":483},{},[484],{"type":25,"value":485},"Here is the Manger class itself as well as the small ManagementStrategy classes that determines what to do with the files within Visual Studio (add/remove project items) and outside of Visual Studio (create/delete files).",{"type":20,"tag":41,"props":487,"children":488},{},[489],{"type":20,"tag":21,"props":490,"children":491},{},[492,494,500,502],{"type":25,"value":493},"Download ",{"type":20,"tag":49,"props":495,"children":497},{"href":496},"https://dl.damieng.com/dotnet/Manager.ttinclude",[498],{"type":25,"value":499},"Manager.ttinclude",{"type":25,"value":501}," (4KB)\nLicensed under the ",{"type":20,"tag":49,"props":503,"children":505},{"href":504},"https://www.microsoft.com/opensource/licenses.mspx",[506],{"type":25,"value":507},"Microsoft Public License (MS-PL)",{"type":20,"tag":86,"props":509,"children":511},{"className":88,"code":510,"language":90,"meta":9,"style":9},"\u003C#@ assembly name=\"System.Core\"\n#>\u003C#@ assembly name=\"EnvDTE\"\n#>\u003C#@ import namespace=\"System.Collections.Generic\"\n#>\u003C#@ import namespace=\"System.IO\"\n#>\u003C#@ import namespace=\"System.Text\"\n#>\u003C#@ import namespace=\"Microsoft.VisualStudio.TextTemplating\"\n#>\u003C#+\n\n// T4 Template Block manager for handling multiple file outputs more easily.\n// Copyright (c) Microsoft Corporation.  All rights reserved.\n// This source code is made available under the terms of the Microsoft Public License (MS-PL)\n\n// Manager class records the various blocks so it can split them up\nclass Manager\n{\n    private struct Block {\n        public String Name;\n        public int Start, Length;\n    }\n\n    private List\u003CBlock> blocks = new List\u003CBlock>();\n    private Block currentBlock;\n    private Block footerBlock = new Block();\n    private Block headerBlock = new Block();\n    private ITextTemplatingEngineHost host;\n    private ManagementStrategy strategy;\n    private StringBuilder template;\n    public String OutputPath { get; set; }\n\n    public Manager(ITextTemplatingEngineHost host, StringBuilder template, bool commonHeader) {\n        this.host = host;\n        this.template = template;\n        OutputPath = String.Empty;\n        strategy = ManagementStrategy.Create(host);\n    }\n\n    public void StartBlock(String name) {\n        currentBlock = new Block { Name = name, Start = template.Length };\n    }\n\n    public void StartFooter() {\n        footerBlock.Start = template.Length;\n    }\n\n    public void EndFooter() {\n        footerBlock.Length = template.Length - footerBlock.Start;\n    }\n\n    public void StartHeader() {\n        headerBlock.Start = template.Length;\n    }\n\n    public void EndHeader() {\n        headerBlock.Length = template.Length - headerBlock.Start;\n    }\n\n    public void EndBlock() {\n        currentBlock.Length = template.Length - currentBlock.Start;\n        blocks.Add(currentBlock);\n    }\n\n    public void Process(bool split) {\n        String header = template.ToString(headerBlock.Start, headerBlock.Length);\n        String footer = template.ToString(footerBlock.Start, footerBlock.Length);\n        blocks.Reverse();\n        foreach(Block block in blocks) {\n            String fileName = Path.Combine(OutputPath, block.Name);\n            if (split) {\n                String content = header + template.ToString(block.Start, block.Length) + footer;\n                strategy.CreateFile(fileName, content);\n                template.Remove(block.Start, block.Length);\n            } else {\n                strategy.DeleteFile(fileName);\n            }\n        }\n    }\n}\n\nclass ManagementStrategy\n{\n    internal static ManagementStrategy Create(ITextTemplatingEngineHost host) {\n        return (host is IServiceProvider) ? new VSManagementStrategy(host) : new ManagementStrategy(host);\n    }\n\n    internal ManagementStrategy(ITextTemplatingEngineHost host) { }\n\n    internal virtual void CreateFile(String fileName, String content) {\n        File.WriteAllText(fileName, content);\n    }\n\n    internal virtual void DeleteFile(String fileName) {\n        if (File.Exists(fileName))\n            File.Delete(fileName);\n    }\n}\n\nclass VSManagementStrategy : ManagementStrategy\n{\n    private EnvDTE.ProjectItem templateProjectItem;\n\n    internal VSManagementStrategy(ITextTemplatingEngineHost host) : base(host) {\n        IServiceProvider hostServiceProvider = (IServiceProvider)host;\n        if (hostServiceProvider == null)\n            throw new ArgumentNullException(\"Could not obtain hostServiceProvider\");\n\n        EnvDTE.DTE dte = (EnvDTE.DTE)hostServiceProvider.GetService(typeof(EnvDTE.DTE));\n        if (dte == null)\n            throw new ArgumentNullException(\"Could not obtain DTE from host\");\n\n        templateProjectItem = dte.Solution.FindProjectItem(host.TemplateFile);\n    }\n\n    internal override void CreateFile(String fileName, String content) {\n        base.CreateFile(fileName, content);\n        ((EventHandler)delegate { templateProjectItem.ProjectItems.AddFromFile(fileName); }).BeginInvoke(null, null, null, null);\n    }\n\n    internal override void DeleteFile(String fileName) {\n        ((EventHandler)delegate { FindAndDeleteFile(fileName); }).BeginInvoke(null, null, null, null);\n    }\n\n    private void FindAndDeleteFile(String fileName) {\n        foreach(EnvDTE.ProjectItem projectItem in templateProjectItem.ProjectItems) {\n            if (projectItem.get_FileNames(0) == fileName) {\n                projectItem.Delete();\n                return;\n            }\n        }\n    }\n}#>\n",[512],{"type":20,"tag":93,"props":513,"children":514},{"__ignoreMap":9},[515,553,565,577,589,601,614,627,635,644,653,662,670,679,688,697,706,715,735,744,752,807,816,843,868,877,886,895,904,912,941,972,997,1024,1052,1060,1068,1091,1145,1153,1161,1183,1213,1221,1229,1250,1292,1300,1308,1329,1358,1366,1374,1395,1436,1444,1452,1473,1515,1534,1542,1550,1580,1625,1668,1685,1709,1746,1760,1823,1842,1876,1885,1903,1912,1921,1929,1938,1946,1955,1963,1981,2046,2054,2062,2081,2089,2112,2130,2138,2146,2168,2192,2210,2218,2226,2234,2252,2260,2279,2287,2320,2348,2376,2415,2423,2503,2528,2565,2573,2619,2627,2635,2656,2677,2768,2776,2784,2804,2878,2886,2894,2916,2956,2996,3013,3022,3030,3038,3046],{"type":20,"tag":97,"props":516,"children":517},{"class":99,"line":100},[518,522,526,531,536,540,544,549],{"type":20,"tag":97,"props":519,"children":520},{"style":104},[521],{"type":25,"value":107},{"type":20,"tag":97,"props":523,"children":524},{"style":110},[525],{"type":25,"value":113},{"type":20,"tag":97,"props":527,"children":528},{"style":116},[529],{"type":25,"value":530},"assembly",{"type":20,"tag":97,"props":532,"children":533},{"style":110},[534],{"type":25,"value":535}," name",{"type":20,"tag":97,"props":537,"children":538},{"style":104},[539],{"type":25,"value":129},{"type":20,"tag":97,"props":541,"children":542},{"style":132},[543],{"type":25,"value":135},{"type":20,"tag":97,"props":545,"children":546},{"style":138},[547],{"type":25,"value":548},"System.Core",{"type":20,"tag":97,"props":550,"children":551},{"style":132},[552],{"type":25,"value":168},{"type":20,"tag":97,"props":554,"children":555},{"class":99,"line":171},[556,560],{"type":20,"tag":97,"props":557,"children":558},{"style":175},[559],{"type":25,"value":178},{"type":20,"tag":97,"props":561,"children":562},{"style":110},[563],{"type":25,"value":564},">\u003C#@ assembly name=\"EnvDTE\"\n",{"type":20,"tag":97,"props":566,"children":567},{"class":99,"line":186},[568,572],{"type":20,"tag":97,"props":569,"children":570},{"style":175},[571],{"type":25,"value":178},{"type":20,"tag":97,"props":573,"children":574},{"style":110},[575],{"type":25,"value":576},">\u003C#@ import namespace=\"System.Collections.Generic\"\n",{"type":20,"tag":97,"props":578,"children":579},{"class":99,"line":383},[580,584],{"type":20,"tag":97,"props":581,"children":582},{"style":175},[583],{"type":25,"value":178},{"type":20,"tag":97,"props":585,"children":586},{"style":110},[587],{"type":25,"value":588},">\u003C#@ import namespace=\"System.IO\"\n",{"type":20,"tag":97,"props":590,"children":591},{"class":99,"line":393},[592,596],{"type":20,"tag":97,"props":593,"children":594},{"style":175},[595],{"type":25,"value":178},{"type":20,"tag":97,"props":597,"children":598},{"style":110},[599],{"type":25,"value":600},">\u003C#@ import namespace=\"System.Text\"\n",{"type":20,"tag":97,"props":602,"children":604},{"class":99,"line":603},6,[605,609],{"type":20,"tag":97,"props":606,"children":607},{"style":175},[608],{"type":25,"value":178},{"type":20,"tag":97,"props":610,"children":611},{"style":110},[612],{"type":25,"value":613},">\u003C#@ import namespace=\"Microsoft.VisualStudio.TextTemplating\"\n",{"type":20,"tag":97,"props":615,"children":617},{"class":99,"line":616},7,[618,622],{"type":20,"tag":97,"props":619,"children":620},{"style":175},[621],{"type":25,"value":178},{"type":20,"tag":97,"props":623,"children":624},{"style":110},[625],{"type":25,"value":626},">\u003C#+\n",{"type":20,"tag":97,"props":628,"children":630},{"class":99,"line":629},8,[631],{"type":20,"tag":97,"props":632,"children":633},{"emptyLinePlaceholder":387},[634],{"type":25,"value":390},{"type":20,"tag":97,"props":636,"children":638},{"class":99,"line":637},9,[639],{"type":20,"tag":97,"props":640,"children":641},{"style":358},[642],{"type":25,"value":643},"// T4 Template Block manager for handling multiple file outputs more easily.\n",{"type":20,"tag":97,"props":645,"children":647},{"class":99,"line":646},10,[648],{"type":20,"tag":97,"props":649,"children":650},{"style":358},[651],{"type":25,"value":652},"// Copyright (c) Microsoft Corporation.  All rights reserved.\n",{"type":20,"tag":97,"props":654,"children":656},{"class":99,"line":655},11,[657],{"type":20,"tag":97,"props":658,"children":659},{"style":358},[660],{"type":25,"value":661},"// This source code is made available under the terms of the Microsoft Public License (MS-PL)\n",{"type":20,"tag":97,"props":663,"children":665},{"class":99,"line":664},12,[666],{"type":20,"tag":97,"props":667,"children":668},{"emptyLinePlaceholder":387},[669],{"type":25,"value":390},{"type":20,"tag":97,"props":671,"children":673},{"class":99,"line":672},13,[674],{"type":20,"tag":97,"props":675,"children":676},{"style":358},[677],{"type":25,"value":678},"// Manager class records the various blocks so it can split them up\n",{"type":20,"tag":97,"props":680,"children":682},{"class":99,"line":681},14,[683],{"type":20,"tag":97,"props":684,"children":685},{"style":110},[686],{"type":25,"value":687},"class Manager\n",{"type":20,"tag":97,"props":689,"children":691},{"class":99,"line":690},15,[692],{"type":20,"tag":97,"props":693,"children":694},{"style":110},[695],{"type":25,"value":696},"{\n",{"type":20,"tag":97,"props":698,"children":700},{"class":99,"line":699},16,[701],{"type":20,"tag":97,"props":702,"children":703},{"style":110},[704],{"type":25,"value":705},"    private struct Block {\n",{"type":20,"tag":97,"props":707,"children":709},{"class":99,"line":708},17,[710],{"type":20,"tag":97,"props":711,"children":712},{"style":110},[713],{"type":25,"value":714},"        public String Name;\n",{"type":20,"tag":97,"props":716,"children":718},{"class":99,"line":717},18,[719,724,730],{"type":20,"tag":97,"props":720,"children":721},{"style":110},[722],{"type":25,"value":723},"        public ",{"type":20,"tag":97,"props":725,"children":727},{"style":726},"--shiki-default:#3A94C5;--shiki-dark:#FF79C6",[728],{"type":25,"value":729},"int",{"type":20,"tag":97,"props":731,"children":732},{"style":110},[733],{"type":25,"value":734}," Start, Length;\n",{"type":20,"tag":97,"props":736,"children":738},{"class":99,"line":737},19,[739],{"type":20,"tag":97,"props":740,"children":741},{"style":110},[742],{"type":25,"value":743},"    }\n",{"type":20,"tag":97,"props":745,"children":747},{"class":99,"line":746},20,[748],{"type":20,"tag":97,"props":749,"children":750},{"emptyLinePlaceholder":387},[751],{"type":25,"value":390},{"type":20,"tag":97,"props":753,"children":755},{"class":99,"line":754},21,[756,761,765,770,775,780,784,789,794,798,802],{"type":20,"tag":97,"props":757,"children":758},{"style":110},[759],{"type":25,"value":760},"    private List",{"type":20,"tag":97,"props":762,"children":763},{"style":104},[764],{"type":25,"value":107},{"type":20,"tag":97,"props":766,"children":767},{"style":110},[768],{"type":25,"value":769},"Block",{"type":20,"tag":97,"props":771,"children":772},{"style":104},[773],{"type":25,"value":774},">",{"type":20,"tag":97,"props":776,"children":777},{"style":110},[778],{"type":25,"value":779}," blocks ",{"type":20,"tag":97,"props":781,"children":782},{"style":104},[783],{"type":25,"value":129},{"type":20,"tag":97,"props":785,"children":786},{"style":271},[787],{"type":25,"value":788}," new",{"type":20,"tag":97,"props":790,"children":791},{"style":116},[792],{"type":25,"value":793}," List",{"type":20,"tag":97,"props":795,"children":796},{"style":110},[797],{"type":25,"value":107},{"type":20,"tag":97,"props":799,"children":800},{"style":116},[801],{"type":25,"value":769},{"type":20,"tag":97,"props":803,"children":804},{"style":110},[805],{"type":25,"value":806},">();\n",{"type":20,"tag":97,"props":808,"children":810},{"class":99,"line":809},22,[811],{"type":20,"tag":97,"props":812,"children":813},{"style":110},[814],{"type":25,"value":815},"    private Block currentBlock;\n",{"type":20,"tag":97,"props":817,"children":819},{"class":99,"line":818},23,[820,825,829,833,838],{"type":20,"tag":97,"props":821,"children":822},{"style":110},[823],{"type":25,"value":824},"    private Block footerBlock ",{"type":20,"tag":97,"props":826,"children":827},{"style":104},[828],{"type":25,"value":129},{"type":20,"tag":97,"props":830,"children":831},{"style":271},[832],{"type":25,"value":788},{"type":20,"tag":97,"props":834,"children":835},{"style":116},[836],{"type":25,"value":837}," Block",{"type":20,"tag":97,"props":839,"children":840},{"style":110},[841],{"type":25,"value":842},"();\n",{"type":20,"tag":97,"props":844,"children":846},{"class":99,"line":845},24,[847,852,856,860,864],{"type":20,"tag":97,"props":848,"children":849},{"style":110},[850],{"type":25,"value":851},"    private Block headerBlock ",{"type":20,"tag":97,"props":853,"children":854},{"style":104},[855],{"type":25,"value":129},{"type":20,"tag":97,"props":857,"children":858},{"style":271},[859],{"type":25,"value":788},{"type":20,"tag":97,"props":861,"children":862},{"style":116},[863],{"type":25,"value":837},{"type":20,"tag":97,"props":865,"children":866},{"style":110},[867],{"type":25,"value":842},{"type":20,"tag":97,"props":869,"children":871},{"class":99,"line":870},25,[872],{"type":20,"tag":97,"props":873,"children":874},{"style":110},[875],{"type":25,"value":876},"    private ITextTemplatingEngineHost host;\n",{"type":20,"tag":97,"props":878,"children":880},{"class":99,"line":879},26,[881],{"type":20,"tag":97,"props":882,"children":883},{"style":110},[884],{"type":25,"value":885},"    private ManagementStrategy strategy;\n",{"type":20,"tag":97,"props":887,"children":889},{"class":99,"line":888},27,[890],{"type":20,"tag":97,"props":891,"children":892},{"style":110},[893],{"type":25,"value":894},"    private StringBuilder template;\n",{"type":20,"tag":97,"props":896,"children":898},{"class":99,"line":897},28,[899],{"type":20,"tag":97,"props":900,"children":901},{"style":110},[902],{"type":25,"value":903},"    public String OutputPath { get; set; }\n",{"type":20,"tag":97,"props":905,"children":907},{"class":99,"line":906},29,[908],{"type":20,"tag":97,"props":909,"children":910},{"emptyLinePlaceholder":387},[911],{"type":25,"value":390},{"type":20,"tag":97,"props":913,"children":915},{"class":99,"line":914},30,[916,921,926,931,936],{"type":20,"tag":97,"props":917,"children":918},{"style":110},[919],{"type":25,"value":920},"    public ",{"type":20,"tag":97,"props":922,"children":923},{"style":229},[924],{"type":25,"value":925},"Manager",{"type":20,"tag":97,"props":927,"children":928},{"style":110},[929],{"type":25,"value":930},"(ITextTemplatingEngineHost host, StringBuilder template, ",{"type":20,"tag":97,"props":932,"children":933},{"style":726},[934],{"type":25,"value":935},"bool",{"type":20,"tag":97,"props":937,"children":938},{"style":110},[939],{"type":25,"value":940}," commonHeader) {\n",{"type":20,"tag":97,"props":942,"children":944},{"class":99,"line":943},31,[945,951,956,962,967],{"type":20,"tag":97,"props":946,"children":948},{"style":947},"--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#BD93F9;--shiki-dark-font-style:italic",[949],{"type":25,"value":950},"        this",{"type":20,"tag":97,"props":952,"children":953},{"style":110},[954],{"type":25,"value":955},".",{"type":20,"tag":97,"props":957,"children":959},{"style":958},"--shiki-default:#35A77C;--shiki-dark:#F8F8F2",[960],{"type":25,"value":961},"host",{"type":20,"tag":97,"props":963,"children":964},{"style":104},[965],{"type":25,"value":966}," =",{"type":20,"tag":97,"props":968,"children":969},{"style":110},[970],{"type":25,"value":971}," host;\n",{"type":20,"tag":97,"props":973,"children":975},{"class":99,"line":974},32,[976,980,984,988,992],{"type":20,"tag":97,"props":977,"children":978},{"style":947},[979],{"type":25,"value":950},{"type":20,"tag":97,"props":981,"children":982},{"style":110},[983],{"type":25,"value":955},{"type":20,"tag":97,"props":985,"children":986},{"style":958},[987],{"type":25,"value":119},{"type":20,"tag":97,"props":989,"children":990},{"style":104},[991],{"type":25,"value":966},{"type":20,"tag":97,"props":993,"children":994},{"style":110},[995],{"type":25,"value":996}," template;\n",{"type":20,"tag":97,"props":998,"children":1000},{"class":99,"line":999},33,[1001,1006,1010,1015,1020],{"type":20,"tag":97,"props":1002,"children":1003},{"style":110},[1004],{"type":25,"value":1005},"        OutputPath ",{"type":20,"tag":97,"props":1007,"children":1008},{"style":104},[1009],{"type":25,"value":129},{"type":20,"tag":97,"props":1011,"children":1012},{"style":110},[1013],{"type":25,"value":1014}," String.",{"type":20,"tag":97,"props":1016,"children":1017},{"style":958},[1018],{"type":25,"value":1019},"Empty",{"type":20,"tag":97,"props":1021,"children":1022},{"style":110},[1023],{"type":25,"value":380},{"type":20,"tag":97,"props":1025,"children":1027},{"class":99,"line":1026},34,[1028,1033,1037,1042,1047],{"type":20,"tag":97,"props":1029,"children":1030},{"style":110},[1031],{"type":25,"value":1032},"        strategy ",{"type":20,"tag":97,"props":1034,"children":1035},{"style":104},[1036],{"type":25,"value":129},{"type":20,"tag":97,"props":1038,"children":1039},{"style":110},[1040],{"type":25,"value":1041}," ManagementStrategy.",{"type":20,"tag":97,"props":1043,"children":1044},{"style":229},[1045],{"type":25,"value":1046},"Create",{"type":20,"tag":97,"props":1048,"children":1049},{"style":110},[1050],{"type":25,"value":1051},"(host);\n",{"type":20,"tag":97,"props":1053,"children":1055},{"class":99,"line":1054},35,[1056],{"type":20,"tag":97,"props":1057,"children":1058},{"style":110},[1059],{"type":25,"value":743},{"type":20,"tag":97,"props":1061,"children":1063},{"class":99,"line":1062},36,[1064],{"type":20,"tag":97,"props":1065,"children":1066},{"emptyLinePlaceholder":387},[1067],{"type":25,"value":390},{"type":20,"tag":97,"props":1069,"children":1071},{"class":99,"line":1070},37,[1072,1076,1081,1086],{"type":20,"tag":97,"props":1073,"children":1074},{"style":110},[1075],{"type":25,"value":920},{"type":20,"tag":97,"props":1077,"children":1078},{"style":726},[1079],{"type":25,"value":1080},"void",{"type":20,"tag":97,"props":1082,"children":1083},{"style":229},[1084],{"type":25,"value":1085}," StartBlock",{"type":20,"tag":97,"props":1087,"children":1088},{"style":110},[1089],{"type":25,"value":1090},"(String name) {\n",{"type":20,"tag":97,"props":1092,"children":1094},{"class":99,"line":1093},38,[1095,1100,1104,1108,1112,1117,1121,1126,1130,1135,1140],{"type":20,"tag":97,"props":1096,"children":1097},{"style":110},[1098],{"type":25,"value":1099},"        currentBlock ",{"type":20,"tag":97,"props":1101,"children":1102},{"style":104},[1103],{"type":25,"value":129},{"type":20,"tag":97,"props":1105,"children":1106},{"style":271},[1107],{"type":25,"value":788},{"type":20,"tag":97,"props":1109,"children":1110},{"style":116},[1111],{"type":25,"value":837},{"type":20,"tag":97,"props":1113,"children":1114},{"style":110},[1115],{"type":25,"value":1116}," { Name ",{"type":20,"tag":97,"props":1118,"children":1119},{"style":104},[1120],{"type":25,"value":129},{"type":20,"tag":97,"props":1122,"children":1123},{"style":110},[1124],{"type":25,"value":1125}," name, Start ",{"type":20,"tag":97,"props":1127,"children":1128},{"style":104},[1129],{"type":25,"value":129},{"type":20,"tag":97,"props":1131,"children":1132},{"style":110},[1133],{"type":25,"value":1134}," template.",{"type":20,"tag":97,"props":1136,"children":1137},{"style":958},[1138],{"type":25,"value":1139},"Length",{"type":20,"tag":97,"props":1141,"children":1142},{"style":110},[1143],{"type":25,"value":1144}," };\n",{"type":20,"tag":97,"props":1146,"children":1148},{"class":99,"line":1147},39,[1149],{"type":20,"tag":97,"props":1150,"children":1151},{"style":110},[1152],{"type":25,"value":743},{"type":20,"tag":97,"props":1154,"children":1156},{"class":99,"line":1155},40,[1157],{"type":20,"tag":97,"props":1158,"children":1159},{"emptyLinePlaceholder":387},[1160],{"type":25,"value":390},{"type":20,"tag":97,"props":1162,"children":1164},{"class":99,"line":1163},41,[1165,1169,1173,1178],{"type":20,"tag":97,"props":1166,"children":1167},{"style":110},[1168],{"type":25,"value":920},{"type":20,"tag":97,"props":1170,"children":1171},{"style":726},[1172],{"type":25,"value":1080},{"type":20,"tag":97,"props":1174,"children":1175},{"style":229},[1176],{"type":25,"value":1177}," StartFooter",{"type":20,"tag":97,"props":1179,"children":1180},{"style":110},[1181],{"type":25,"value":1182},"() {\n",{"type":20,"tag":97,"props":1184,"children":1186},{"class":99,"line":1185},42,[1187,1192,1197,1201,1205,1209],{"type":20,"tag":97,"props":1188,"children":1189},{"style":110},[1190],{"type":25,"value":1191},"        footerBlock.",{"type":20,"tag":97,"props":1193,"children":1194},{"style":958},[1195],{"type":25,"value":1196},"Start",{"type":20,"tag":97,"props":1198,"children":1199},{"style":104},[1200],{"type":25,"value":966},{"type":20,"tag":97,"props":1202,"children":1203},{"style":110},[1204],{"type":25,"value":1134},{"type":20,"tag":97,"props":1206,"children":1207},{"style":958},[1208],{"type":25,"value":1139},{"type":20,"tag":97,"props":1210,"children":1211},{"style":110},[1212],{"type":25,"value":380},{"type":20,"tag":97,"props":1214,"children":1216},{"class":99,"line":1215},43,[1217],{"type":20,"tag":97,"props":1218,"children":1219},{"style":110},[1220],{"type":25,"value":743},{"type":20,"tag":97,"props":1222,"children":1224},{"class":99,"line":1223},44,[1225],{"type":20,"tag":97,"props":1226,"children":1227},{"emptyLinePlaceholder":387},[1228],{"type":25,"value":390},{"type":20,"tag":97,"props":1230,"children":1232},{"class":99,"line":1231},45,[1233,1237,1241,1246],{"type":20,"tag":97,"props":1234,"children":1235},{"style":110},[1236],{"type":25,"value":920},{"type":20,"tag":97,"props":1238,"children":1239},{"style":726},[1240],{"type":25,"value":1080},{"type":20,"tag":97,"props":1242,"children":1243},{"style":229},[1244],{"type":25,"value":1245}," EndFooter",{"type":20,"tag":97,"props":1247,"children":1248},{"style":110},[1249],{"type":25,"value":1182},{"type":20,"tag":97,"props":1251,"children":1253},{"class":99,"line":1252},46,[1254,1258,1262,1266,1270,1274,1279,1284,1288],{"type":20,"tag":97,"props":1255,"children":1256},{"style":110},[1257],{"type":25,"value":1191},{"type":20,"tag":97,"props":1259,"children":1260},{"style":958},[1261],{"type":25,"value":1139},{"type":20,"tag":97,"props":1263,"children":1264},{"style":104},[1265],{"type":25,"value":966},{"type":20,"tag":97,"props":1267,"children":1268},{"style":110},[1269],{"type":25,"value":1134},{"type":20,"tag":97,"props":1271,"children":1272},{"style":958},[1273],{"type":25,"value":1139},{"type":20,"tag":97,"props":1275,"children":1276},{"style":104},[1277],{"type":25,"value":1278}," -",{"type":20,"tag":97,"props":1280,"children":1281},{"style":110},[1282],{"type":25,"value":1283}," footerBlock.",{"type":20,"tag":97,"props":1285,"children":1286},{"style":958},[1287],{"type":25,"value":1196},{"type":20,"tag":97,"props":1289,"children":1290},{"style":110},[1291],{"type":25,"value":380},{"type":20,"tag":97,"props":1293,"children":1295},{"class":99,"line":1294},47,[1296],{"type":20,"tag":97,"props":1297,"children":1298},{"style":110},[1299],{"type":25,"value":743},{"type":20,"tag":97,"props":1301,"children":1303},{"class":99,"line":1302},48,[1304],{"type":20,"tag":97,"props":1305,"children":1306},{"emptyLinePlaceholder":387},[1307],{"type":25,"value":390},{"type":20,"tag":97,"props":1309,"children":1311},{"class":99,"line":1310},49,[1312,1316,1320,1325],{"type":20,"tag":97,"props":1313,"children":1314},{"style":110},[1315],{"type":25,"value":920},{"type":20,"tag":97,"props":1317,"children":1318},{"style":726},[1319],{"type":25,"value":1080},{"type":20,"tag":97,"props":1321,"children":1322},{"style":229},[1323],{"type":25,"value":1324}," StartHeader",{"type":20,"tag":97,"props":1326,"children":1327},{"style":110},[1328],{"type":25,"value":1182},{"type":20,"tag":97,"props":1330,"children":1332},{"class":99,"line":1331},50,[1333,1338,1342,1346,1350,1354],{"type":20,"tag":97,"props":1334,"children":1335},{"style":110},[1336],{"type":25,"value":1337},"        headerBlock.",{"type":20,"tag":97,"props":1339,"children":1340},{"style":958},[1341],{"type":25,"value":1196},{"type":20,"tag":97,"props":1343,"children":1344},{"style":104},[1345],{"type":25,"value":966},{"type":20,"tag":97,"props":1347,"children":1348},{"style":110},[1349],{"type":25,"value":1134},{"type":20,"tag":97,"props":1351,"children":1352},{"style":958},[1353],{"type":25,"value":1139},{"type":20,"tag":97,"props":1355,"children":1356},{"style":110},[1357],{"type":25,"value":380},{"type":20,"tag":97,"props":1359,"children":1361},{"class":99,"line":1360},51,[1362],{"type":20,"tag":97,"props":1363,"children":1364},{"style":110},[1365],{"type":25,"value":743},{"type":20,"tag":97,"props":1367,"children":1369},{"class":99,"line":1368},52,[1370],{"type":20,"tag":97,"props":1371,"children":1372},{"emptyLinePlaceholder":387},[1373],{"type":25,"value":390},{"type":20,"tag":97,"props":1375,"children":1377},{"class":99,"line":1376},53,[1378,1382,1386,1391],{"type":20,"tag":97,"props":1379,"children":1380},{"style":110},[1381],{"type":25,"value":920},{"type":20,"tag":97,"props":1383,"children":1384},{"style":726},[1385],{"type":25,"value":1080},{"type":20,"tag":97,"props":1387,"children":1388},{"style":229},[1389],{"type":25,"value":1390}," EndHeader",{"type":20,"tag":97,"props":1392,"children":1393},{"style":110},[1394],{"type":25,"value":1182},{"type":20,"tag":97,"props":1396,"children":1398},{"class":99,"line":1397},54,[1399,1403,1407,1411,1415,1419,1423,1428,1432],{"type":20,"tag":97,"props":1400,"children":1401},{"style":110},[1402],{"type":25,"value":1337},{"type":20,"tag":97,"props":1404,"children":1405},{"style":958},[1406],{"type":25,"value":1139},{"type":20,"tag":97,"props":1408,"children":1409},{"style":104},[1410],{"type":25,"value":966},{"type":20,"tag":97,"props":1412,"children":1413},{"style":110},[1414],{"type":25,"value":1134},{"type":20,"tag":97,"props":1416,"children":1417},{"style":958},[1418],{"type":25,"value":1139},{"type":20,"tag":97,"props":1420,"children":1421},{"style":104},[1422],{"type":25,"value":1278},{"type":20,"tag":97,"props":1424,"children":1425},{"style":110},[1426],{"type":25,"value":1427}," headerBlock.",{"type":20,"tag":97,"props":1429,"children":1430},{"style":958},[1431],{"type":25,"value":1196},{"type":20,"tag":97,"props":1433,"children":1434},{"style":110},[1435],{"type":25,"value":380},{"type":20,"tag":97,"props":1437,"children":1439},{"class":99,"line":1438},55,[1440],{"type":20,"tag":97,"props":1441,"children":1442},{"style":110},[1443],{"type":25,"value":743},{"type":20,"tag":97,"props":1445,"children":1447},{"class":99,"line":1446},56,[1448],{"type":20,"tag":97,"props":1449,"children":1450},{"emptyLinePlaceholder":387},[1451],{"type":25,"value":390},{"type":20,"tag":97,"props":1453,"children":1455},{"class":99,"line":1454},57,[1456,1460,1464,1469],{"type":20,"tag":97,"props":1457,"children":1458},{"style":110},[1459],{"type":25,"value":920},{"type":20,"tag":97,"props":1461,"children":1462},{"style":726},[1463],{"type":25,"value":1080},{"type":20,"tag":97,"props":1465,"children":1466},{"style":229},[1467],{"type":25,"value":1468}," EndBlock",{"type":20,"tag":97,"props":1470,"children":1471},{"style":110},[1472],{"type":25,"value":1182},{"type":20,"tag":97,"props":1474,"children":1476},{"class":99,"line":1475},58,[1477,1482,1486,1490,1494,1498,1502,1507,1511],{"type":20,"tag":97,"props":1478,"children":1479},{"style":110},[1480],{"type":25,"value":1481},"        currentBlock.",{"type":20,"tag":97,"props":1483,"children":1484},{"style":958},[1485],{"type":25,"value":1139},{"type":20,"tag":97,"props":1487,"children":1488},{"style":104},[1489],{"type":25,"value":966},{"type":20,"tag":97,"props":1491,"children":1492},{"style":110},[1493],{"type":25,"value":1134},{"type":20,"tag":97,"props":1495,"children":1496},{"style":958},[1497],{"type":25,"value":1139},{"type":20,"tag":97,"props":1499,"children":1500},{"style":104},[1501],{"type":25,"value":1278},{"type":20,"tag":97,"props":1503,"children":1504},{"style":110},[1505],{"type":25,"value":1506}," currentBlock.",{"type":20,"tag":97,"props":1508,"children":1509},{"style":958},[1510],{"type":25,"value":1196},{"type":20,"tag":97,"props":1512,"children":1513},{"style":110},[1514],{"type":25,"value":380},{"type":20,"tag":97,"props":1516,"children":1518},{"class":99,"line":1517},59,[1519,1524,1529],{"type":20,"tag":97,"props":1520,"children":1521},{"style":110},[1522],{"type":25,"value":1523},"        blocks.",{"type":20,"tag":97,"props":1525,"children":1526},{"style":229},[1527],{"type":25,"value":1528},"Add",{"type":20,"tag":97,"props":1530,"children":1531},{"style":110},[1532],{"type":25,"value":1533},"(currentBlock);\n",{"type":20,"tag":97,"props":1535,"children":1537},{"class":99,"line":1536},60,[1538],{"type":20,"tag":97,"props":1539,"children":1540},{"style":110},[1541],{"type":25,"value":743},{"type":20,"tag":97,"props":1543,"children":1545},{"class":99,"line":1544},61,[1546],{"type":20,"tag":97,"props":1547,"children":1548},{"emptyLinePlaceholder":387},[1549],{"type":25,"value":390},{"type":20,"tag":97,"props":1551,"children":1553},{"class":99,"line":1552},62,[1554,1558,1562,1567,1571,1575],{"type":20,"tag":97,"props":1555,"children":1556},{"style":110},[1557],{"type":25,"value":920},{"type":20,"tag":97,"props":1559,"children":1560},{"style":726},[1561],{"type":25,"value":1080},{"type":20,"tag":97,"props":1563,"children":1564},{"style":229},[1565],{"type":25,"value":1566}," Process",{"type":20,"tag":97,"props":1568,"children":1569},{"style":110},[1570],{"type":25,"value":237},{"type":20,"tag":97,"props":1572,"children":1573},{"style":726},[1574],{"type":25,"value":935},{"type":20,"tag":97,"props":1576,"children":1577},{"style":110},[1578],{"type":25,"value":1579}," split) {\n",{"type":20,"tag":97,"props":1581,"children":1583},{"class":99,"line":1582},63,[1584,1589,1593,1597,1602,1607,1611,1616,1620],{"type":20,"tag":97,"props":1585,"children":1586},{"style":110},[1587],{"type":25,"value":1588},"        String header ",{"type":20,"tag":97,"props":1590,"children":1591},{"style":104},[1592],{"type":25,"value":129},{"type":20,"tag":97,"props":1594,"children":1595},{"style":110},[1596],{"type":25,"value":1134},{"type":20,"tag":97,"props":1598,"children":1599},{"style":229},[1600],{"type":25,"value":1601},"ToString",{"type":20,"tag":97,"props":1603,"children":1604},{"style":110},[1605],{"type":25,"value":1606},"(headerBlock.",{"type":20,"tag":97,"props":1608,"children":1609},{"style":958},[1610],{"type":25,"value":1196},{"type":20,"tag":97,"props":1612,"children":1613},{"style":110},[1614],{"type":25,"value":1615},", headerBlock.",{"type":20,"tag":97,"props":1617,"children":1618},{"style":958},[1619],{"type":25,"value":1139},{"type":20,"tag":97,"props":1621,"children":1622},{"style":110},[1623],{"type":25,"value":1624},");\n",{"type":20,"tag":97,"props":1626,"children":1628},{"class":99,"line":1627},64,[1629,1634,1638,1642,1646,1651,1655,1660,1664],{"type":20,"tag":97,"props":1630,"children":1631},{"style":110},[1632],{"type":25,"value":1633},"        String footer ",{"type":20,"tag":97,"props":1635,"children":1636},{"style":104},[1637],{"type":25,"value":129},{"type":20,"tag":97,"props":1639,"children":1640},{"style":110},[1641],{"type":25,"value":1134},{"type":20,"tag":97,"props":1643,"children":1644},{"style":229},[1645],{"type":25,"value":1601},{"type":20,"tag":97,"props":1647,"children":1648},{"style":110},[1649],{"type":25,"value":1650},"(footerBlock.",{"type":20,"tag":97,"props":1652,"children":1653},{"style":958},[1654],{"type":25,"value":1196},{"type":20,"tag":97,"props":1656,"children":1657},{"style":110},[1658],{"type":25,"value":1659},", footerBlock.",{"type":20,"tag":97,"props":1661,"children":1662},{"style":958},[1663],{"type":25,"value":1139},{"type":20,"tag":97,"props":1665,"children":1666},{"style":110},[1667],{"type":25,"value":1624},{"type":20,"tag":97,"props":1669,"children":1671},{"class":99,"line":1670},65,[1672,1676,1681],{"type":20,"tag":97,"props":1673,"children":1674},{"style":110},[1675],{"type":25,"value":1523},{"type":20,"tag":97,"props":1677,"children":1678},{"style":229},[1679],{"type":25,"value":1680},"Reverse",{"type":20,"tag":97,"props":1682,"children":1683},{"style":110},[1684],{"type":25,"value":842},{"type":20,"tag":97,"props":1686,"children":1688},{"class":99,"line":1687},66,[1689,1694,1699,1704],{"type":20,"tag":97,"props":1690,"children":1691},{"style":229},[1692],{"type":25,"value":1693},"        foreach",{"type":20,"tag":97,"props":1695,"children":1696},{"style":110},[1697],{"type":25,"value":1698},"(Block block ",{"type":20,"tag":97,"props":1700,"children":1701},{"style":104},[1702],{"type":25,"value":1703},"in",{"type":20,"tag":97,"props":1705,"children":1706},{"style":110},[1707],{"type":25,"value":1708}," blocks) {\n",{"type":20,"tag":97,"props":1710,"children":1712},{"class":99,"line":1711},67,[1713,1718,1722,1727,1732,1737,1742],{"type":20,"tag":97,"props":1714,"children":1715},{"style":110},[1716],{"type":25,"value":1717},"            String fileName ",{"type":20,"tag":97,"props":1719,"children":1720},{"style":104},[1721],{"type":25,"value":129},{"type":20,"tag":97,"props":1723,"children":1724},{"style":110},[1725],{"type":25,"value":1726}," Path.",{"type":20,"tag":97,"props":1728,"children":1729},{"style":229},[1730],{"type":25,"value":1731},"Combine",{"type":20,"tag":97,"props":1733,"children":1734},{"style":110},[1735],{"type":25,"value":1736},"(OutputPath, block.",{"type":20,"tag":97,"props":1738,"children":1739},{"style":958},[1740],{"type":25,"value":1741},"Name",{"type":20,"tag":97,"props":1743,"children":1744},{"style":110},[1745],{"type":25,"value":1624},{"type":20,"tag":97,"props":1747,"children":1749},{"class":99,"line":1748},68,[1750,1755],{"type":20,"tag":97,"props":1751,"children":1752},{"style":229},[1753],{"type":25,"value":1754},"            if",{"type":20,"tag":97,"props":1756,"children":1757},{"style":110},[1758],{"type":25,"value":1759}," (split) {\n",{"type":20,"tag":97,"props":1761,"children":1763},{"class":99,"line":1762},69,[1764,1769,1773,1778,1783,1787,1791,1796,1800,1805,1809,1814,1818],{"type":20,"tag":97,"props":1765,"children":1766},{"style":110},[1767],{"type":25,"value":1768},"                String content ",{"type":20,"tag":97,"props":1770,"children":1771},{"style":104},[1772],{"type":25,"value":129},{"type":20,"tag":97,"props":1774,"children":1775},{"style":110},[1776],{"type":25,"value":1777}," header ",{"type":20,"tag":97,"props":1779,"children":1780},{"style":104},[1781],{"type":25,"value":1782},"+",{"type":20,"tag":97,"props":1784,"children":1785},{"style":110},[1786],{"type":25,"value":1134},{"type":20,"tag":97,"props":1788,"children":1789},{"style":229},[1790],{"type":25,"value":1601},{"type":20,"tag":97,"props":1792,"children":1793},{"style":110},[1794],{"type":25,"value":1795},"(block.",{"type":20,"tag":97,"props":1797,"children":1798},{"style":958},[1799],{"type":25,"value":1196},{"type":20,"tag":97,"props":1801,"children":1802},{"style":110},[1803],{"type":25,"value":1804},", block.",{"type":20,"tag":97,"props":1806,"children":1807},{"style":958},[1808],{"type":25,"value":1139},{"type":20,"tag":97,"props":1810,"children":1811},{"style":110},[1812],{"type":25,"value":1813},") ",{"type":20,"tag":97,"props":1815,"children":1816},{"style":104},[1817],{"type":25,"value":1782},{"type":20,"tag":97,"props":1819,"children":1820},{"style":110},[1821],{"type":25,"value":1822}," footer;\n",{"type":20,"tag":97,"props":1824,"children":1826},{"class":99,"line":1825},70,[1827,1832,1837],{"type":20,"tag":97,"props":1828,"children":1829},{"style":110},[1830],{"type":25,"value":1831},"                strategy.",{"type":20,"tag":97,"props":1833,"children":1834},{"style":229},[1835],{"type":25,"value":1836},"CreateFile",{"type":20,"tag":97,"props":1838,"children":1839},{"style":110},[1840],{"type":25,"value":1841},"(fileName, content);\n",{"type":20,"tag":97,"props":1843,"children":1845},{"class":99,"line":1844},71,[1846,1851,1856,1860,1864,1868,1872],{"type":20,"tag":97,"props":1847,"children":1848},{"style":110},[1849],{"type":25,"value":1850},"                template.",{"type":20,"tag":97,"props":1852,"children":1853},{"style":229},[1854],{"type":25,"value":1855},"Remove",{"type":20,"tag":97,"props":1857,"children":1858},{"style":110},[1859],{"type":25,"value":1795},{"type":20,"tag":97,"props":1861,"children":1862},{"style":958},[1863],{"type":25,"value":1196},{"type":20,"tag":97,"props":1865,"children":1866},{"style":110},[1867],{"type":25,"value":1804},{"type":20,"tag":97,"props":1869,"children":1870},{"style":958},[1871],{"type":25,"value":1139},{"type":20,"tag":97,"props":1873,"children":1874},{"style":110},[1875],{"type":25,"value":1624},{"type":20,"tag":97,"props":1877,"children":1879},{"class":99,"line":1878},72,[1880],{"type":20,"tag":97,"props":1881,"children":1882},{"style":110},[1883],{"type":25,"value":1884},"            } else {\n",{"type":20,"tag":97,"props":1886,"children":1888},{"class":99,"line":1887},73,[1889,1893,1898],{"type":20,"tag":97,"props":1890,"children":1891},{"style":110},[1892],{"type":25,"value":1831},{"type":20,"tag":97,"props":1894,"children":1895},{"style":229},[1896],{"type":25,"value":1897},"DeleteFile",{"type":20,"tag":97,"props":1899,"children":1900},{"style":110},[1901],{"type":25,"value":1902},"(fileName);\n",{"type":20,"tag":97,"props":1904,"children":1906},{"class":99,"line":1905},74,[1907],{"type":20,"tag":97,"props":1908,"children":1909},{"style":110},[1910],{"type":25,"value":1911},"            }\n",{"type":20,"tag":97,"props":1913,"children":1915},{"class":99,"line":1914},75,[1916],{"type":20,"tag":97,"props":1917,"children":1918},{"style":110},[1919],{"type":25,"value":1920},"        }\n",{"type":20,"tag":97,"props":1922,"children":1924},{"class":99,"line":1923},76,[1925],{"type":20,"tag":97,"props":1926,"children":1927},{"style":110},[1928],{"type":25,"value":743},{"type":20,"tag":97,"props":1930,"children":1932},{"class":99,"line":1931},77,[1933],{"type":20,"tag":97,"props":1934,"children":1935},{"style":110},[1936],{"type":25,"value":1937},"}\n",{"type":20,"tag":97,"props":1939,"children":1941},{"class":99,"line":1940},78,[1942],{"type":20,"tag":97,"props":1943,"children":1944},{"emptyLinePlaceholder":387},[1945],{"type":25,"value":390},{"type":20,"tag":97,"props":1947,"children":1949},{"class":99,"line":1948},79,[1950],{"type":20,"tag":97,"props":1951,"children":1952},{"style":110},[1953],{"type":25,"value":1954},"class ManagementStrategy\n",{"type":20,"tag":97,"props":1956,"children":1958},{"class":99,"line":1957},80,[1959],{"type":20,"tag":97,"props":1960,"children":1961},{"style":110},[1962],{"type":25,"value":696},{"type":20,"tag":97,"props":1964,"children":1966},{"class":99,"line":1965},81,[1967,1972,1976],{"type":20,"tag":97,"props":1968,"children":1969},{"style":110},[1970],{"type":25,"value":1971},"    internal static ManagementStrategy ",{"type":20,"tag":97,"props":1973,"children":1974},{"style":229},[1975],{"type":25,"value":1046},{"type":20,"tag":97,"props":1977,"children":1978},{"style":110},[1979],{"type":25,"value":1980},"(ITextTemplatingEngineHost host) {\n",{"type":20,"tag":97,"props":1982,"children":1984},{"class":99,"line":1983},82,[1985,1990,1995,2000,2005,2009,2014,2018,2023,2028,2033,2037,2042],{"type":20,"tag":97,"props":1986,"children":1987},{"style":229},[1988],{"type":25,"value":1989},"        return",{"type":20,"tag":97,"props":1991,"children":1992},{"style":110},[1993],{"type":25,"value":1994}," (host ",{"type":20,"tag":97,"props":1996,"children":1997},{"style":271},[1998],{"type":25,"value":1999},"is",{"type":20,"tag":97,"props":2001,"children":2002},{"style":116},[2003],{"type":25,"value":2004}," IServiceProvider",{"type":20,"tag":97,"props":2006,"children":2007},{"style":110},[2008],{"type":25,"value":1813},{"type":20,"tag":97,"props":2010,"children":2011},{"style":104},[2012],{"type":25,"value":2013},"?",{"type":20,"tag":97,"props":2015,"children":2016},{"style":271},[2017],{"type":25,"value":788},{"type":20,"tag":97,"props":2019,"children":2020},{"style":116},[2021],{"type":25,"value":2022}," VSManagementStrategy",{"type":20,"tag":97,"props":2024,"children":2025},{"style":110},[2026],{"type":25,"value":2027},"(host) ",{"type":20,"tag":97,"props":2029,"children":2030},{"style":104},[2031],{"type":25,"value":2032},":",{"type":20,"tag":97,"props":2034,"children":2035},{"style":271},[2036],{"type":25,"value":788},{"type":20,"tag":97,"props":2038,"children":2039},{"style":116},[2040],{"type":25,"value":2041}," ManagementStrategy",{"type":20,"tag":97,"props":2043,"children":2044},{"style":110},[2045],{"type":25,"value":1051},{"type":20,"tag":97,"props":2047,"children":2049},{"class":99,"line":2048},83,[2050],{"type":20,"tag":97,"props":2051,"children":2052},{"style":110},[2053],{"type":25,"value":743},{"type":20,"tag":97,"props":2055,"children":2057},{"class":99,"line":2056},84,[2058],{"type":20,"tag":97,"props":2059,"children":2060},{"emptyLinePlaceholder":387},[2061],{"type":25,"value":390},{"type":20,"tag":97,"props":2063,"children":2065},{"class":99,"line":2064},85,[2066,2071,2076],{"type":20,"tag":97,"props":2067,"children":2068},{"style":110},[2069],{"type":25,"value":2070},"    internal ",{"type":20,"tag":97,"props":2072,"children":2073},{"style":229},[2074],{"type":25,"value":2075},"ManagementStrategy",{"type":20,"tag":97,"props":2077,"children":2078},{"style":110},[2079],{"type":25,"value":2080},"(ITextTemplatingEngineHost host) { }\n",{"type":20,"tag":97,"props":2082,"children":2084},{"class":99,"line":2083},86,[2085],{"type":20,"tag":97,"props":2086,"children":2087},{"emptyLinePlaceholder":387},[2088],{"type":25,"value":390},{"type":20,"tag":97,"props":2090,"children":2092},{"class":99,"line":2091},87,[2093,2098,2102,2107],{"type":20,"tag":97,"props":2094,"children":2095},{"style":110},[2096],{"type":25,"value":2097},"    internal virtual ",{"type":20,"tag":97,"props":2099,"children":2100},{"style":726},[2101],{"type":25,"value":1080},{"type":20,"tag":97,"props":2103,"children":2104},{"style":229},[2105],{"type":25,"value":2106}," CreateFile",{"type":20,"tag":97,"props":2108,"children":2109},{"style":110},[2110],{"type":25,"value":2111},"(String fileName, String content) {\n",{"type":20,"tag":97,"props":2113,"children":2115},{"class":99,"line":2114},88,[2116,2121,2126],{"type":20,"tag":97,"props":2117,"children":2118},{"style":110},[2119],{"type":25,"value":2120},"        File.",{"type":20,"tag":97,"props":2122,"children":2123},{"style":229},[2124],{"type":25,"value":2125},"WriteAllText",{"type":20,"tag":97,"props":2127,"children":2128},{"style":110},[2129],{"type":25,"value":1841},{"type":20,"tag":97,"props":2131,"children":2133},{"class":99,"line":2132},89,[2134],{"type":20,"tag":97,"props":2135,"children":2136},{"style":110},[2137],{"type":25,"value":743},{"type":20,"tag":97,"props":2139,"children":2141},{"class":99,"line":2140},90,[2142],{"type":20,"tag":97,"props":2143,"children":2144},{"emptyLinePlaceholder":387},[2145],{"type":25,"value":390},{"type":20,"tag":97,"props":2147,"children":2149},{"class":99,"line":2148},91,[2150,2154,2158,2163],{"type":20,"tag":97,"props":2151,"children":2152},{"style":110},[2153],{"type":25,"value":2097},{"type":20,"tag":97,"props":2155,"children":2156},{"style":726},[2157],{"type":25,"value":1080},{"type":20,"tag":97,"props":2159,"children":2160},{"style":229},[2161],{"type":25,"value":2162}," DeleteFile",{"type":20,"tag":97,"props":2164,"children":2165},{"style":110},[2166],{"type":25,"value":2167},"(String fileName) {\n",{"type":20,"tag":97,"props":2169,"children":2171},{"class":99,"line":2170},92,[2172,2177,2182,2187],{"type":20,"tag":97,"props":2173,"children":2174},{"style":229},[2175],{"type":25,"value":2176},"        if",{"type":20,"tag":97,"props":2178,"children":2179},{"style":110},[2180],{"type":25,"value":2181}," (File.",{"type":20,"tag":97,"props":2183,"children":2184},{"style":229},[2185],{"type":25,"value":2186},"Exists",{"type":20,"tag":97,"props":2188,"children":2189},{"style":110},[2190],{"type":25,"value":2191},"(fileName))\n",{"type":20,"tag":97,"props":2193,"children":2195},{"class":99,"line":2194},93,[2196,2201,2206],{"type":20,"tag":97,"props":2197,"children":2198},{"style":110},[2199],{"type":25,"value":2200},"            File.",{"type":20,"tag":97,"props":2202,"children":2203},{"style":229},[2204],{"type":25,"value":2205},"Delete",{"type":20,"tag":97,"props":2207,"children":2208},{"style":110},[2209],{"type":25,"value":1902},{"type":20,"tag":97,"props":2211,"children":2213},{"class":99,"line":2212},94,[2214],{"type":20,"tag":97,"props":2215,"children":2216},{"style":110},[2217],{"type":25,"value":743},{"type":20,"tag":97,"props":2219,"children":2221},{"class":99,"line":2220},95,[2222],{"type":20,"tag":97,"props":2223,"children":2224},{"style":110},[2225],{"type":25,"value":1937},{"type":20,"tag":97,"props":2227,"children":2229},{"class":99,"line":2228},96,[2230],{"type":20,"tag":97,"props":2231,"children":2232},{"emptyLinePlaceholder":387},[2233],{"type":25,"value":390},{"type":20,"tag":97,"props":2235,"children":2237},{"class":99,"line":2236},97,[2238,2243,2247],{"type":20,"tag":97,"props":2239,"children":2240},{"style":110},[2241],{"type":25,"value":2242},"class VSManagementStrategy ",{"type":20,"tag":97,"props":2244,"children":2245},{"style":104},[2246],{"type":25,"value":2032},{"type":20,"tag":97,"props":2248,"children":2249},{"style":110},[2250],{"type":25,"value":2251}," ManagementStrategy\n",{"type":20,"tag":97,"props":2253,"children":2255},{"class":99,"line":2254},98,[2256],{"type":20,"tag":97,"props":2257,"children":2258},{"style":110},[2259],{"type":25,"value":696},{"type":20,"tag":97,"props":2261,"children":2263},{"class":99,"line":2262},99,[2264,2269,2274],{"type":20,"tag":97,"props":2265,"children":2266},{"style":110},[2267],{"type":25,"value":2268},"    private EnvDTE.",{"type":20,"tag":97,"props":2270,"children":2271},{"style":958},[2272],{"type":25,"value":2273},"ProjectItem",{"type":20,"tag":97,"props":2275,"children":2276},{"style":110},[2277],{"type":25,"value":2278}," templateProjectItem;\n",{"type":20,"tag":97,"props":2280,"children":2282},{"class":99,"line":2281},100,[2283],{"type":20,"tag":97,"props":2284,"children":2285},{"emptyLinePlaceholder":387},[2286],{"type":25,"value":390},{"type":20,"tag":97,"props":2288,"children":2290},{"class":99,"line":2289},101,[2291,2295,2300,2305,2309,2315],{"type":20,"tag":97,"props":2292,"children":2293},{"style":110},[2294],{"type":25,"value":2070},{"type":20,"tag":97,"props":2296,"children":2297},{"style":229},[2298],{"type":25,"value":2299},"VSManagementStrategy",{"type":20,"tag":97,"props":2301,"children":2302},{"style":110},[2303],{"type":25,"value":2304},"(ITextTemplatingEngineHost host) ",{"type":20,"tag":97,"props":2306,"children":2307},{"style":104},[2308],{"type":25,"value":2032},{"type":20,"tag":97,"props":2310,"children":2312},{"style":2311},"--shiki-default:#5C6A72;--shiki-default-font-style:inherit;--shiki-dark:#BD93F9;--shiki-dark-font-style:italic",[2313],{"type":25,"value":2314}," base",{"type":20,"tag":97,"props":2316,"children":2317},{"style":110},[2318],{"type":25,"value":2319},"(host) {\n",{"type":20,"tag":97,"props":2321,"children":2323},{"class":99,"line":2322},102,[2324,2329,2333,2338,2343],{"type":20,"tag":97,"props":2325,"children":2326},{"style":110},[2327],{"type":25,"value":2328},"        IServiceProvider hostServiceProvider ",{"type":20,"tag":97,"props":2330,"children":2331},{"style":104},[2332],{"type":25,"value":129},{"type":20,"tag":97,"props":2334,"children":2335},{"style":110},[2336],{"type":25,"value":2337}," (",{"type":20,"tag":97,"props":2339,"children":2340},{"style":116},[2341],{"type":25,"value":2342},"IServiceProvider",{"type":20,"tag":97,"props":2344,"children":2345},{"style":110},[2346],{"type":25,"value":2347},")host;\n",{"type":20,"tag":97,"props":2349,"children":2351},{"class":99,"line":2350},103,[2352,2356,2361,2366,2371],{"type":20,"tag":97,"props":2353,"children":2354},{"style":229},[2355],{"type":25,"value":2176},{"type":20,"tag":97,"props":2357,"children":2358},{"style":110},[2359],{"type":25,"value":2360}," (hostServiceProvider ",{"type":20,"tag":97,"props":2362,"children":2363},{"style":104},[2364],{"type":25,"value":2365},"==",{"type":20,"tag":97,"props":2367,"children":2368},{"style":455},[2369],{"type":25,"value":2370}," null",{"type":20,"tag":97,"props":2372,"children":2373},{"style":110},[2374],{"type":25,"value":2375},")\n",{"type":20,"tag":97,"props":2377,"children":2379},{"class":99,"line":2378},104,[2380,2385,2389,2394,2398,2402,2407,2411],{"type":20,"tag":97,"props":2381,"children":2382},{"style":271},[2383],{"type":25,"value":2384},"            throw",{"type":20,"tag":97,"props":2386,"children":2387},{"style":271},[2388],{"type":25,"value":788},{"type":20,"tag":97,"props":2390,"children":2391},{"style":116},[2392],{"type":25,"value":2393}," ArgumentNullException",{"type":20,"tag":97,"props":2395,"children":2396},{"style":110},[2397],{"type":25,"value":237},{"type":20,"tag":97,"props":2399,"children":2400},{"style":132},[2401],{"type":25,"value":135},{"type":20,"tag":97,"props":2403,"children":2404},{"style":138},[2405],{"type":25,"value":2406},"Could not obtain hostServiceProvider",{"type":20,"tag":97,"props":2408,"children":2409},{"style":132},[2410],{"type":25,"value":135},{"type":20,"tag":97,"props":2412,"children":2413},{"style":110},[2414],{"type":25,"value":1624},{"type":20,"tag":97,"props":2416,"children":2418},{"class":99,"line":2417},105,[2419],{"type":20,"tag":97,"props":2420,"children":2421},{"emptyLinePlaceholder":387},[2422],{"type":25,"value":390},{"type":20,"tag":97,"props":2424,"children":2426},{"class":99,"line":2425},106,[2427,2432,2437,2442,2446,2450,2455,2459,2463,2468,2473,2477,2482,2486,2490,2494,2498],{"type":20,"tag":97,"props":2428,"children":2429},{"style":110},[2430],{"type":25,"value":2431},"        EnvDTE.",{"type":20,"tag":97,"props":2433,"children":2434},{"style":958},[2435],{"type":25,"value":2436},"DTE",{"type":20,"tag":97,"props":2438,"children":2439},{"style":110},[2440],{"type":25,"value":2441}," dte ",{"type":20,"tag":97,"props":2443,"children":2444},{"style":104},[2445],{"type":25,"value":129},{"type":20,"tag":97,"props":2447,"children":2448},{"style":110},[2449],{"type":25,"value":2337},{"type":20,"tag":97,"props":2451,"children":2452},{"style":116},[2453],{"type":25,"value":2454},"EnvDTE",{"type":20,"tag":97,"props":2456,"children":2457},{"style":110},[2458],{"type":25,"value":955},{"type":20,"tag":97,"props":2460,"children":2461},{"style":116},[2462],{"type":25,"value":2436},{"type":20,"tag":97,"props":2464,"children":2465},{"style":110},[2466],{"type":25,"value":2467},")hostServiceProvider.",{"type":20,"tag":97,"props":2469,"children":2470},{"style":229},[2471],{"type":25,"value":2472},"GetService",{"type":20,"tag":97,"props":2474,"children":2475},{"style":110},[2476],{"type":25,"value":237},{"type":20,"tag":97,"props":2478,"children":2479},{"style":271},[2480],{"type":25,"value":2481},"typeof",{"type":20,"tag":97,"props":2483,"children":2484},{"style":110},[2485],{"type":25,"value":237},{"type":20,"tag":97,"props":2487,"children":2488},{"style":116},[2489],{"type":25,"value":2454},{"type":20,"tag":97,"props":2491,"children":2492},{"style":110},[2493],{"type":25,"value":955},{"type":20,"tag":97,"props":2495,"children":2496},{"style":116},[2497],{"type":25,"value":2436},{"type":20,"tag":97,"props":2499,"children":2500},{"style":110},[2501],{"type":25,"value":2502},"));\n",{"type":20,"tag":97,"props":2504,"children":2506},{"class":99,"line":2505},107,[2507,2511,2516,2520,2524],{"type":20,"tag":97,"props":2508,"children":2509},{"style":229},[2510],{"type":25,"value":2176},{"type":20,"tag":97,"props":2512,"children":2513},{"style":110},[2514],{"type":25,"value":2515}," (dte ",{"type":20,"tag":97,"props":2517,"children":2518},{"style":104},[2519],{"type":25,"value":2365},{"type":20,"tag":97,"props":2521,"children":2522},{"style":455},[2523],{"type":25,"value":2370},{"type":20,"tag":97,"props":2525,"children":2526},{"style":110},[2527],{"type":25,"value":2375},{"type":20,"tag":97,"props":2529,"children":2531},{"class":99,"line":2530},108,[2532,2536,2540,2544,2548,2552,2557,2561],{"type":20,"tag":97,"props":2533,"children":2534},{"style":271},[2535],{"type":25,"value":2384},{"type":20,"tag":97,"props":2537,"children":2538},{"style":271},[2539],{"type":25,"value":788},{"type":20,"tag":97,"props":2541,"children":2542},{"style":116},[2543],{"type":25,"value":2393},{"type":20,"tag":97,"props":2545,"children":2546},{"style":110},[2547],{"type":25,"value":237},{"type":20,"tag":97,"props":2549,"children":2550},{"style":132},[2551],{"type":25,"value":135},{"type":20,"tag":97,"props":2553,"children":2554},{"style":138},[2555],{"type":25,"value":2556},"Could not obtain DTE from host",{"type":20,"tag":97,"props":2558,"children":2559},{"style":132},[2560],{"type":25,"value":135},{"type":20,"tag":97,"props":2562,"children":2563},{"style":110},[2564],{"type":25,"value":1624},{"type":20,"tag":97,"props":2566,"children":2568},{"class":99,"line":2567},109,[2569],{"type":20,"tag":97,"props":2570,"children":2571},{"emptyLinePlaceholder":387},[2572],{"type":25,"value":390},{"type":20,"tag":97,"props":2574,"children":2576},{"class":99,"line":2575},110,[2577,2582,2586,2591,2596,2600,2605,2610,2615],{"type":20,"tag":97,"props":2578,"children":2579},{"style":110},[2580],{"type":25,"value":2581},"        templateProjectItem ",{"type":20,"tag":97,"props":2583,"children":2584},{"style":104},[2585],{"type":25,"value":129},{"type":20,"tag":97,"props":2587,"children":2588},{"style":110},[2589],{"type":25,"value":2590}," dte.",{"type":20,"tag":97,"props":2592,"children":2593},{"style":958},[2594],{"type":25,"value":2595},"Solution",{"type":20,"tag":97,"props":2597,"children":2598},{"style":110},[2599],{"type":25,"value":955},{"type":20,"tag":97,"props":2601,"children":2602},{"style":229},[2603],{"type":25,"value":2604},"FindProjectItem",{"type":20,"tag":97,"props":2606,"children":2607},{"style":110},[2608],{"type":25,"value":2609},"(host.",{"type":20,"tag":97,"props":2611,"children":2612},{"style":958},[2613],{"type":25,"value":2614},"TemplateFile",{"type":20,"tag":97,"props":2616,"children":2617},{"style":110},[2618],{"type":25,"value":1624},{"type":20,"tag":97,"props":2620,"children":2622},{"class":99,"line":2621},111,[2623],{"type":20,"tag":97,"props":2624,"children":2625},{"style":110},[2626],{"type":25,"value":743},{"type":20,"tag":97,"props":2628,"children":2630},{"class":99,"line":2629},112,[2631],{"type":20,"tag":97,"props":2632,"children":2633},{"emptyLinePlaceholder":387},[2634],{"type":25,"value":390},{"type":20,"tag":97,"props":2636,"children":2638},{"class":99,"line":2637},113,[2639,2644,2648,2652],{"type":20,"tag":97,"props":2640,"children":2641},{"style":110},[2642],{"type":25,"value":2643},"    internal override ",{"type":20,"tag":97,"props":2645,"children":2646},{"style":726},[2647],{"type":25,"value":1080},{"type":20,"tag":97,"props":2649,"children":2650},{"style":229},[2651],{"type":25,"value":2106},{"type":20,"tag":97,"props":2653,"children":2654},{"style":110},[2655],{"type":25,"value":2111},{"type":20,"tag":97,"props":2657,"children":2659},{"class":99,"line":2658},114,[2660,2665,2669,2673],{"type":20,"tag":97,"props":2661,"children":2662},{"style":2311},[2663],{"type":25,"value":2664},"        base",{"type":20,"tag":97,"props":2666,"children":2667},{"style":110},[2668],{"type":25,"value":955},{"type":20,"tag":97,"props":2670,"children":2671},{"style":229},[2672],{"type":25,"value":1836},{"type":20,"tag":97,"props":2674,"children":2675},{"style":110},[2676],{"type":25,"value":1841},{"type":20,"tag":97,"props":2678,"children":2680},{"class":99,"line":2679},115,[2681,2686,2691,2696,2701,2706,2711,2715,2720,2725,2730,2734,2739,2744,2748,2752,2756,2760,2764],{"type":20,"tag":97,"props":2682,"children":2683},{"style":110},[2684],{"type":25,"value":2685},"        ((",{"type":20,"tag":97,"props":2687,"children":2688},{"style":116},[2689],{"type":25,"value":2690},"EventHandler",{"type":20,"tag":97,"props":2692,"children":2693},{"style":110},[2694],{"type":25,"value":2695},")",{"type":20,"tag":97,"props":2697,"children":2698},{"style":726},[2699],{"type":25,"value":2700},"delegate",{"type":20,"tag":97,"props":2702,"children":2703},{"style":110},[2704],{"type":25,"value":2705}," { templateProjectItem.",{"type":20,"tag":97,"props":2707,"children":2708},{"style":958},[2709],{"type":25,"value":2710},"ProjectItems",{"type":20,"tag":97,"props":2712,"children":2713},{"style":110},[2714],{"type":25,"value":955},{"type":20,"tag":97,"props":2716,"children":2717},{"style":229},[2718],{"type":25,"value":2719},"AddFromFile",{"type":20,"tag":97,"props":2721,"children":2722},{"style":110},[2723],{"type":25,"value":2724},"(fileName); }).",{"type":20,"tag":97,"props":2726,"children":2727},{"style":229},[2728],{"type":25,"value":2729},"BeginInvoke",{"type":20,"tag":97,"props":2731,"children":2732},{"style":110},[2733],{"type":25,"value":237},{"type":20,"tag":97,"props":2735,"children":2736},{"style":455},[2737],{"type":25,"value":2738},"null",{"type":20,"tag":97,"props":2740,"children":2741},{"style":110},[2742],{"type":25,"value":2743},", ",{"type":20,"tag":97,"props":2745,"children":2746},{"style":455},[2747],{"type":25,"value":2738},{"type":20,"tag":97,"props":2749,"children":2750},{"style":110},[2751],{"type":25,"value":2743},{"type":20,"tag":97,"props":2753,"children":2754},{"style":455},[2755],{"type":25,"value":2738},{"type":20,"tag":97,"props":2757,"children":2758},{"style":110},[2759],{"type":25,"value":2743},{"type":20,"tag":97,"props":2761,"children":2762},{"style":455},[2763],{"type":25,"value":2738},{"type":20,"tag":97,"props":2765,"children":2766},{"style":110},[2767],{"type":25,"value":1624},{"type":20,"tag":97,"props":2769,"children":2771},{"class":99,"line":2770},116,[2772],{"type":20,"tag":97,"props":2773,"children":2774},{"style":110},[2775],{"type":25,"value":743},{"type":20,"tag":97,"props":2777,"children":2779},{"class":99,"line":2778},117,[2780],{"type":20,"tag":97,"props":2781,"children":2782},{"emptyLinePlaceholder":387},[2783],{"type":25,"value":390},{"type":20,"tag":97,"props":2785,"children":2787},{"class":99,"line":2786},118,[2788,2792,2796,2800],{"type":20,"tag":97,"props":2789,"children":2790},{"style":110},[2791],{"type":25,"value":2643},{"type":20,"tag":97,"props":2793,"children":2794},{"style":726},[2795],{"type":25,"value":1080},{"type":20,"tag":97,"props":2797,"children":2798},{"style":229},[2799],{"type":25,"value":2162},{"type":20,"tag":97,"props":2801,"children":2802},{"style":110},[2803],{"type":25,"value":2167},{"type":20,"tag":97,"props":2805,"children":2807},{"class":99,"line":2806},119,[2808,2812,2816,2820,2824,2829,2834,2838,2842,2846,2850,2854,2858,2862,2866,2870,2874],{"type":20,"tag":97,"props":2809,"children":2810},{"style":110},[2811],{"type":25,"value":2685},{"type":20,"tag":97,"props":2813,"children":2814},{"style":116},[2815],{"type":25,"value":2690},{"type":20,"tag":97,"props":2817,"children":2818},{"style":110},[2819],{"type":25,"value":2695},{"type":20,"tag":97,"props":2821,"children":2822},{"style":726},[2823],{"type":25,"value":2700},{"type":20,"tag":97,"props":2825,"children":2826},{"style":110},[2827],{"type":25,"value":2828}," { ",{"type":20,"tag":97,"props":2830,"children":2831},{"style":229},[2832],{"type":25,"value":2833},"FindAndDeleteFile",{"type":20,"tag":97,"props":2835,"children":2836},{"style":110},[2837],{"type":25,"value":2724},{"type":20,"tag":97,"props":2839,"children":2840},{"style":229},[2841],{"type":25,"value":2729},{"type":20,"tag":97,"props":2843,"children":2844},{"style":110},[2845],{"type":25,"value":237},{"type":20,"tag":97,"props":2847,"children":2848},{"style":455},[2849],{"type":25,"value":2738},{"type":20,"tag":97,"props":2851,"children":2852},{"style":110},[2853],{"type":25,"value":2743},{"type":20,"tag":97,"props":2855,"children":2856},{"style":455},[2857],{"type":25,"value":2738},{"type":20,"tag":97,"props":2859,"children":2860},{"style":110},[2861],{"type":25,"value":2743},{"type":20,"tag":97,"props":2863,"children":2864},{"style":455},[2865],{"type":25,"value":2738},{"type":20,"tag":97,"props":2867,"children":2868},{"style":110},[2869],{"type":25,"value":2743},{"type":20,"tag":97,"props":2871,"children":2872},{"style":455},[2873],{"type":25,"value":2738},{"type":20,"tag":97,"props":2875,"children":2876},{"style":110},[2877],{"type":25,"value":1624},{"type":20,"tag":97,"props":2879,"children":2881},{"class":99,"line":2880},120,[2882],{"type":20,"tag":97,"props":2883,"children":2884},{"style":110},[2885],{"type":25,"value":743},{"type":20,"tag":97,"props":2887,"children":2889},{"class":99,"line":2888},121,[2890],{"type":20,"tag":97,"props":2891,"children":2892},{"emptyLinePlaceholder":387},[2893],{"type":25,"value":390},{"type":20,"tag":97,"props":2895,"children":2897},{"class":99,"line":2896},122,[2898,2903,2907,2912],{"type":20,"tag":97,"props":2899,"children":2900},{"style":110},[2901],{"type":25,"value":2902},"    private ",{"type":20,"tag":97,"props":2904,"children":2905},{"style":726},[2906],{"type":25,"value":1080},{"type":20,"tag":97,"props":2908,"children":2909},{"style":229},[2910],{"type":25,"value":2911}," FindAndDeleteFile",{"type":20,"tag":97,"props":2913,"children":2914},{"style":110},[2915],{"type":25,"value":2167},{"type":20,"tag":97,"props":2917,"children":2919},{"class":99,"line":2918},123,[2920,2924,2929,2933,2938,2942,2947,2951],{"type":20,"tag":97,"props":2921,"children":2922},{"style":229},[2923],{"type":25,"value":1693},{"type":20,"tag":97,"props":2925,"children":2926},{"style":110},[2927],{"type":25,"value":2928},"(EnvDTE.",{"type":20,"tag":97,"props":2930,"children":2931},{"style":958},[2932],{"type":25,"value":2273},{"type":20,"tag":97,"props":2934,"children":2935},{"style":110},[2936],{"type":25,"value":2937}," projectItem ",{"type":20,"tag":97,"props":2939,"children":2940},{"style":104},[2941],{"type":25,"value":1703},{"type":20,"tag":97,"props":2943,"children":2944},{"style":110},[2945],{"type":25,"value":2946}," templateProjectItem.",{"type":20,"tag":97,"props":2948,"children":2949},{"style":958},[2950],{"type":25,"value":2710},{"type":20,"tag":97,"props":2952,"children":2953},{"style":110},[2954],{"type":25,"value":2955},") {\n",{"type":20,"tag":97,"props":2957,"children":2959},{"class":99,"line":2958},124,[2960,2964,2969,2974,2978,2983,2987,2991],{"type":20,"tag":97,"props":2961,"children":2962},{"style":229},[2963],{"type":25,"value":1754},{"type":20,"tag":97,"props":2965,"children":2966},{"style":110},[2967],{"type":25,"value":2968}," (projectItem.",{"type":20,"tag":97,"props":2970,"children":2971},{"style":229},[2972],{"type":25,"value":2973},"get_FileNames",{"type":20,"tag":97,"props":2975,"children":2976},{"style":110},[2977],{"type":25,"value":237},{"type":20,"tag":97,"props":2979,"children":2980},{"style":455},[2981],{"type":25,"value":2982},"0",{"type":20,"tag":97,"props":2984,"children":2985},{"style":110},[2986],{"type":25,"value":1813},{"type":20,"tag":97,"props":2988,"children":2989},{"style":104},[2990],{"type":25,"value":2365},{"type":20,"tag":97,"props":2992,"children":2993},{"style":110},[2994],{"type":25,"value":2995}," fileName) {\n",{"type":20,"tag":97,"props":2997,"children":2999},{"class":99,"line":2998},125,[3000,3005,3009],{"type":20,"tag":97,"props":3001,"children":3002},{"style":110},[3003],{"type":25,"value":3004},"                projectItem.",{"type":20,"tag":97,"props":3006,"children":3007},{"style":229},[3008],{"type":25,"value":2205},{"type":20,"tag":97,"props":3010,"children":3011},{"style":110},[3012],{"type":25,"value":842},{"type":20,"tag":97,"props":3014,"children":3016},{"class":99,"line":3015},126,[3017],{"type":20,"tag":97,"props":3018,"children":3019},{"style":110},[3020],{"type":25,"value":3021},"                return;\n",{"type":20,"tag":97,"props":3023,"children":3025},{"class":99,"line":3024},127,[3026],{"type":20,"tag":97,"props":3027,"children":3028},{"style":110},[3029],{"type":25,"value":1911},{"type":20,"tag":97,"props":3031,"children":3033},{"class":99,"line":3032},128,[3034],{"type":20,"tag":97,"props":3035,"children":3036},{"style":110},[3037],{"type":25,"value":1920},{"type":20,"tag":97,"props":3039,"children":3041},{"class":99,"line":3040},129,[3042],{"type":20,"tag":97,"props":3043,"children":3044},{"style":110},[3045],{"type":25,"value":743},{"type":20,"tag":97,"props":3047,"children":3049},{"class":99,"line":3048},130,[3050,3055],{"type":20,"tag":97,"props":3051,"children":3052},{"style":110},[3053],{"type":25,"value":3054},"}#",{"type":20,"tag":97,"props":3056,"children":3057},{"style":104},[3058],{"type":25,"value":260},{"type":20,"tag":21,"props":3060,"children":3061},{},[3062],{"type":20,"tag":3063,"props":3064,"children":3065},"em",{},[3066],{"type":25,"value":3067},"[)amien",{"type":20,"tag":3069,"props":3070,"children":3071},"style",{},[3072],{"type":25,"value":3073},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":9,"searchDepth":171,"depth":171,"links":3075},[3076,3082],{"id":69,"depth":171,"text":72,"children":3077},[3078,3079,3080,3081],{"id":76,"depth":186,"text":79},{"id":199,"depth":186,"text":202},{"id":313,"depth":186,"text":316},{"id":418,"depth":186,"text":421},{"id":477,"depth":171,"text":480},"markdown","content:blog:2009:multiple-outputs-from-t4-made-easy.md","content","blog/2009/multiple-outputs-from-t4-made-easy.md","blog/2009/multiple-outputs-from-t4-made-easy","md","/blog/2009/multiple-outputs-from-t4-made-easy/",1044,[3092,3096,3100],{"title":3093,"date":3094,"url":3095},"HTML5 Video Cheatsheet: Optimizing videos for the web","2025-12-05T00:00:00Z","/blog/2025/html5-video-cheatsheet/",{"title":3097,"date":3098,"url":3099},"Transactions in the MongoDB EF Core Provider","2025-10-25","/blog/2025/mongodb-explicit-transactions/",{"title":3101,"date":3102,"url":3103},"Queryable Encryption with the MongoDB EF Core Provider","2025-09-22","/blog/2025/mongodb-queryable-encryption/",[3105,3125,3145,3166,3191,3324,3351,3380,3410,3440,3457,3483,3513,3530],{"_path":3106,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3108,"description":3109,"id":3110,"date":3111,"name":3112,"avatar":3113,"body":3114,"_type":3083,"_id":3122,"_source":3085,"_file":3123,"_stem":3124,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/d612a351","multiple-outputs-from-t4-made-easy","D612a351","You have really saved my life with this man, still going strong nearly 11 years later !!","d612a351","2020-06-11T07:12:32.9445818Z","Alixx Skevington","https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp&f=y",{"type":17,"children":3115,"toc":3120},[3116],{"type":20,"tag":21,"props":3117,"children":3118},{},[3119],{"type":25,"value":3109},{"title":9,"searchDepth":171,"depth":171,"links":3121},[],"content:comments:multiple-outputs-from-t4-made-easy:d612a351.md","comments/multiple-outputs-from-t4-made-easy/d612a351.md","comments/multiple-outputs-from-t4-made-easy/d612a351",{"_path":3126,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3127,"description":3128,"id":3129,"name":3130,"email":3131,"avatar":3132,"date":3133,"body":3134,"_type":3083,"_id":3142,"_source":3085,"_file":3143,"_stem":3144,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/42761","42761","I love it! We we're previously using mygeneration (a free t3/4 editor). This handles generation so much better because its native to VS.\nThanks a 1000000.",42761,"Tim","tim@nospam.com","https://www.gravatar.com/avatar/968cffeb902de75cba1b9b1985945087?r=pg&d=retro","2010-12-01T11:04:55",{"type":17,"children":3135,"toc":3140},[3136],{"type":20,"tag":21,"props":3137,"children":3138},{},[3139],{"type":25,"value":3128},{"title":9,"searchDepth":171,"depth":171,"links":3141},[],"content:comments:multiple-outputs-from-t4-made-easy:42761.md","comments/multiple-outputs-from-t4-made-easy/42761.md","comments/multiple-outputs-from-t4-made-easy/42761",{"_path":3146,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3147,"description":3148,"id":3149,"name":3150,"email":3151,"avatar":3152,"url":3153,"date":3154,"body":3155,"_type":3083,"_id":3163,"_source":3085,"_file":3164,"_stem":3165,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/28978","28978","When I look in the directory you mentioned, I don't see a ...TextTemplating.Interfaces.dll, only a ...TextTemplating.Modeling.dll.  Specifying the import as suggested by Valk seems to have solved the problem for me, though.",28978,"Mel Grubb","melgrubb@live.com","https://www.gravatar.com/avatar/7248ee185cf2a0b4e78ae854eadc177a?r=pg&d=retro","https://melgrubb.spaces.live.com","2009-11-02T08:30:50",{"type":17,"children":3156,"toc":3161},[3157],{"type":20,"tag":21,"props":3158,"children":3159},{},[3160],{"type":25,"value":3148},{"title":9,"searchDepth":171,"depth":171,"links":3162},[],"content:comments:multiple-outputs-from-t4-made-easy:28978.md","comments/multiple-outputs-from-t4-made-easy/28978.md","comments/multiple-outputs-from-t4-made-easy/28978",{"_path":3167,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3168,"description":3169,"id":3170,"name":3171,"email":3172,"avatar":3173,"date":3174,"body":3175,"_type":3083,"_id":3188,"_source":3085,"_file":3189,"_stem":3190,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/28584","28584","After looking around the internet I found where the interface is hiding.",28584,"Valk","Valkarie_@Hotmail.com","https://www.gravatar.com/avatar/5a8642486df183e21ab3ad306fe3f757?r=pg&d=retro","2009-10-30T02:12:42",{"type":17,"children":3176,"toc":3186},[3177,3181],{"type":20,"tag":21,"props":3178,"children":3179},{},[3180],{"type":25,"value":3169},{"type":20,"tag":21,"props":3182,"children":3183},{},[3184],{"type":25,"value":3185},"try: import namespace=\"Microsoft.VisualStudio.TextTemplating.Interfaces\"",{"title":9,"searchDepth":171,"depth":171,"links":3187},[],"content:comments:multiple-outputs-from-t4-made-easy:28584.md","comments/multiple-outputs-from-t4-made-easy/28584.md","comments/multiple-outputs-from-t4-made-easy/28584",{"_path":3192,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3193,"description":3194,"id":3195,"name":3196,"email":3197,"avatar":3198,"url":3199,"date":3200,"body":3201,"_type":3083,"_id":3321,"_source":3085,"_file":3322,"_stem":3323,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/28400","28400","There is a problem with T4 in VS2010 whereby that interface was moved to Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll and so it can't find it. You can add an assembly reference to it for now but I've been assured that it will be fixed for RTM:",28400,"Damien Guard","damien@envytech.co.uk","https://www.gravatar.com/avatar/dc72963e7279d34c85ed4c0b731ce5a9?r=pg&d=retro","https://damieng.com/","2009-10-28T14:45:26",{"type":17,"children":3202,"toc":3319},[3203,3207,3310,3315],{"type":20,"tag":21,"props":3204,"children":3205},{},[3206],{"type":25,"value":3194},{"type":20,"tag":86,"props":3208,"children":3210},{"className":88,"code":3209,"language":90,"meta":9,"style":9},"\u003C#@ assembly name=\"C:\\\\Program Files (x86)\\\\Microsoft Visual Studio 10.0\\\\Common7\\\\IDE\\\\PublicAssemblies\\\\Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll\">\n",[3211],{"type":20,"tag":93,"props":3212,"children":3213},{"__ignoreMap":9},[3214],{"type":20,"tag":97,"props":3215,"children":3216},{"class":99,"line":100},[3217,3221,3225,3229,3233,3237,3241,3246,3252,3257,3261,3266,3270,3275,3279,3284,3288,3293,3297,3302,3306],{"type":20,"tag":97,"props":3218,"children":3219},{"style":104},[3220],{"type":25,"value":107},{"type":20,"tag":97,"props":3222,"children":3223},{"style":110},[3224],{"type":25,"value":113},{"type":20,"tag":97,"props":3226,"children":3227},{"style":116},[3228],{"type":25,"value":530},{"type":20,"tag":97,"props":3230,"children":3231},{"style":110},[3232],{"type":25,"value":535},{"type":20,"tag":97,"props":3234,"children":3235},{"style":104},[3236],{"type":25,"value":129},{"type":20,"tag":97,"props":3238,"children":3239},{"style":132},[3240],{"type":25,"value":135},{"type":20,"tag":97,"props":3242,"children":3243},{"style":138},[3244],{"type":25,"value":3245},"C:",{"type":20,"tag":97,"props":3247,"children":3249},{"style":3248},"--shiki-default:#DFA000;--shiki-dark:#FF79C6",[3250],{"type":25,"value":3251},"\\\\",{"type":20,"tag":97,"props":3253,"children":3254},{"style":138},[3255],{"type":25,"value":3256},"Program Files (x86)",{"type":20,"tag":97,"props":3258,"children":3259},{"style":3248},[3260],{"type":25,"value":3251},{"type":20,"tag":97,"props":3262,"children":3263},{"style":138},[3264],{"type":25,"value":3265},"Microsoft Visual Studio 10.0",{"type":20,"tag":97,"props":3267,"children":3268},{"style":3248},[3269],{"type":25,"value":3251},{"type":20,"tag":97,"props":3271,"children":3272},{"style":138},[3273],{"type":25,"value":3274},"Common7",{"type":20,"tag":97,"props":3276,"children":3277},{"style":3248},[3278],{"type":25,"value":3251},{"type":20,"tag":97,"props":3280,"children":3281},{"style":138},[3282],{"type":25,"value":3283},"IDE",{"type":20,"tag":97,"props":3285,"children":3286},{"style":3248},[3287],{"type":25,"value":3251},{"type":20,"tag":97,"props":3289,"children":3290},{"style":138},[3291],{"type":25,"value":3292},"PublicAssemblies",{"type":20,"tag":97,"props":3294,"children":3295},{"style":3248},[3296],{"type":25,"value":3251},{"type":20,"tag":97,"props":3298,"children":3299},{"style":138},[3300],{"type":25,"value":3301},"Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll",{"type":20,"tag":97,"props":3303,"children":3304},{"style":132},[3305],{"type":25,"value":135},{"type":20,"tag":97,"props":3307,"children":3308},{"style":104},[3309],{"type":25,"value":260},{"type":20,"tag":21,"props":3311,"children":3312},{},[3313],{"type":25,"value":3314},"(remove the (x86) bit on 32-bit machines).",{"type":20,"tag":3069,"props":3316,"children":3317},{},[3318],{"type":25,"value":3073},{"title":9,"searchDepth":171,"depth":171,"links":3320},[],"content:comments:multiple-outputs-from-t4-made-easy:28400.md","comments/multiple-outputs-from-t4-made-easy/28400.md","comments/multiple-outputs-from-t4-made-easy/28400",{"_path":3325,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3326,"description":3327,"id":3328,"name":3150,"email":3151,"avatar":3152,"url":3153,"date":3329,"body":3330,"_type":3083,"_id":3348,"_source":3085,"_file":3349,"_stem":3350,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/28084","28084","Have you tried running this on VS2010b2 yet? I'm trying to work with a project of mine, and I'm not having much luck. I'm getting the following error:",28084,"2009-10-23T10:40:31",{"type":17,"children":3331,"toc":3346},[3332,3336,3341],{"type":20,"tag":21,"props":3333,"children":3334},{},[3335],{"type":25,"value":3327},{"type":20,"tag":21,"props":3337,"children":3338},{},[3339],{"type":25,"value":3340},"Compiling transformation: The type or namespace name 'ITextTemplatingEngineHost' could not be found (are you missing a using directive or an assembly reference?)",{"type":20,"tag":21,"props":3342,"children":3343},{},[3344],{"type":25,"value":3345},"Has something been moved, or made obsolete? Also, it would also appear that the behavior of the  keyword may have changed. I have a particular template that must use reflection to accomplish its job, and it no longer finds the assemblies in the bin folder like it used to.",{"title":9,"searchDepth":171,"depth":171,"links":3347},[],"content:comments:multiple-outputs-from-t4-made-easy:28084.md","comments/multiple-outputs-from-t4-made-easy/28084.md","comments/multiple-outputs-from-t4-made-easy/28084",{"_path":3352,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3353,"description":3354,"id":3355,"name":3356,"email":3357,"avatar":3358,"date":3359,"body":3360,"_type":3083,"_id":3377,"_source":3085,"_file":3378,"_stem":3379,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/11353","11353","Thanks Damien, great work!",11353,"Johannes","johannes@ostensjo.net","https://www.gravatar.com/avatar/cc16ffdc22fcc9f80d67fecac604dca8?r=pg&d=retro","2009-02-24T08:29:45",{"type":17,"children":3361,"toc":3375},[3362,3366,3371],{"type":20,"tag":21,"props":3363,"children":3364},{},[3365],{"type":25,"value":3354},{"type":20,"tag":21,"props":3367,"children":3368},{},[3369],{"type":25,"value":3370},"A small problem though is that my files are under TFS source control, and if I edit the template file it and its default output file are automatically checked out, but my additional files are not, and the file update crashes. Its easy enough to avoid by checking the files out first, but is it possible to automatically check out the other files as well before the Manager edits them?",{"type":20,"tag":21,"props":3372,"children":3373},{},[3374],{"type":25,"value":3356},{"title":9,"searchDepth":171,"depth":171,"links":3376},[],"content:comments:multiple-outputs-from-t4-made-easy:11353.md","comments/multiple-outputs-from-t4-made-easy/11353.md","comments/multiple-outputs-from-t4-made-easy/11353",{"_path":3381,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3382,"description":3383,"id":3384,"name":3385,"email":3386,"avatar":3387,"date":3388,"body":3389,"_type":3083,"_id":3407,"_source":3085,"_file":3408,"_stem":3409,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/11304","11304","Damien",11304,"Mike","m_trider@yahoo.com","https://www.gravatar.com/avatar/2808f3cfa92d2165f7724ca3c2d40ba4?r=pg&d=retro","2009-02-19T11:41:06",{"type":17,"children":3390,"toc":3405},[3391,3395,3400],{"type":20,"tag":21,"props":3392,"children":3393},{},[3394],{"type":25,"value":3383},{"type":20,"tag":21,"props":3396,"children":3397},{},[3398],{"type":25,"value":3399},"Made Easy!!! I was struggling with some of the concepts necessary to the task until I found your post",{"type":20,"tag":21,"props":3401,"children":3402},{},[3403],{"type":25,"value":3404},"Thanks!\nMike",{"title":9,"searchDepth":171,"depth":171,"links":3406},[],"content:comments:multiple-outputs-from-t4-made-easy:11304.md","comments/multiple-outputs-from-t4-made-easy/11304.md","comments/multiple-outputs-from-t4-made-easy/11304",{"_path":3411,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3412,"description":3413,"id":3414,"name":3415,"email":3416,"avatar":3417,"date":3418,"body":3419,"_type":3083,"_id":3437,"_source":3085,"_file":3438,"_stem":3439,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/11190","11190","Hello Damien,",11190,"hannes","hhbrbg@web.de","https://www.gravatar.com/avatar/4ea526e88926ebbba36593826c3c55fe?r=pg&d=retro","2009-02-13T06:22:37",{"type":17,"children":3420,"toc":3435},[3421,3425,3430],{"type":20,"tag":21,"props":3422,"children":3423},{},[3424],{"type":25,"value":3413},{"type":20,"tag":21,"props":3426,"children":3427},{},[3428],{"type":25,"value":3429},"thank You! Your Linq To SQL T4 Templates are great!",{"type":20,"tag":21,"props":3431,"children":3432},{},[3433],{"type":25,"value":3434},"Regards\nHannes",{"title":9,"searchDepth":171,"depth":171,"links":3436},[],"content:comments:multiple-outputs-from-t4-made-easy:11190.md","comments/multiple-outputs-from-t4-made-easy/11190.md","comments/multiple-outputs-from-t4-made-easy/11190",{"_path":3441,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3442,"description":3443,"id":3444,"name":3196,"email":3197,"avatar":3198,"url":3199,"date":3445,"body":3446,"_type":3083,"_id":3454,"_source":3085,"_file":3455,"_stem":3456,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/10917","10917","I was aware of it but hadn't seen what they are up to lately, I have now, thanks.",10917,"2009-01-23T10:58:50",{"type":17,"children":3447,"toc":3452},[3448],{"type":20,"tag":21,"props":3449,"children":3450},{},[3451],{"type":25,"value":3443},{"title":9,"searchDepth":171,"depth":171,"links":3453},[],"content:comments:multiple-outputs-from-t4-made-easy:10917.md","comments/multiple-outputs-from-t4-made-easy/10917.md","comments/multiple-outputs-from-t4-made-easy/10917",{"_path":3458,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3459,"description":3460,"id":3461,"name":3462,"email":3463,"avatar":3464,"url":3465,"date":3466,"body":3467,"_type":3083,"_id":3480,"_source":3085,"_file":3481,"_stem":3482,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/10915","10915","Damien, are you aware of the T4Toolbox project on CodePlex?",10915,"George J. Capnias","george@capnias.org","https://www.gravatar.com/avatar/9fc51df1f4b10e5da2ef85566c28ce64?r=pg&d=retro","https://capnias.org","2009-01-23T10:00:49",{"type":17,"children":3468,"toc":3478},[3469,3473],{"type":20,"tag":21,"props":3470,"children":3471},{},[3472],{"type":25,"value":3460},{"type":20,"tag":21,"props":3474,"children":3475},{},[3476],{"type":25,"value":3477},"Regards,\nGeorge J.",{"title":9,"searchDepth":171,"depth":171,"links":3479},[],"content:comments:multiple-outputs-from-t4-made-easy:10915.md","comments/multiple-outputs-from-t4-made-easy/10915.md","comments/multiple-outputs-from-t4-made-easy/10915",{"_path":3484,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3485,"description":3486,"id":3487,"name":3488,"email":3489,"avatar":3490,"date":3491,"body":3492,"_type":3083,"_id":3510,"_source":3085,"_file":3511,"_stem":3512,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/10914","10914","Hi Damien,",10914,"Vish","viswaug@gmail.com","https://www.gravatar.com/avatar/04f2dab690841b14ac006a1f794c67fd?r=pg&d=retro","2009-01-23T09:35:11",{"type":17,"children":3493,"toc":3508},[3494,3498,3503],{"type":20,"tag":21,"props":3495,"children":3496},{},[3497],{"type":25,"value":3486},{"type":20,"tag":21,"props":3499,"children":3500},{},[3501],{"type":25,"value":3502},"This is some great work. I had been searching the web for this info for a while now. You saved me a lot of work and frustration ...",{"type":20,"tag":21,"props":3504,"children":3505},{},[3506],{"type":25,"value":3507},"Thank You,\nVish",{"title":9,"searchDepth":171,"depth":171,"links":3509},[],"content:comments:multiple-outputs-from-t4-made-easy:10914.md","comments/multiple-outputs-from-t4-made-easy/10914.md","comments/multiple-outputs-from-t4-made-easy/10914",{"_path":3514,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3515,"description":3516,"id":3517,"name":3196,"email":3197,"avatar":3198,"url":3199,"date":3518,"body":3519,"_type":3083,"_id":3527,"_source":3085,"_file":3528,"_stem":3529,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/10905","10905","If it detects it's running inside VS they all magically appear as nested files behind the template, if you turn it off they are removed again :)",10905,"2009-01-22T17:13:40",{"type":17,"children":3520,"toc":3525},[3521],{"type":20,"tag":21,"props":3522,"children":3523},{},[3524],{"type":25,"value":3516},{"title":9,"searchDepth":171,"depth":171,"links":3526},[],"content:comments:multiple-outputs-from-t4-made-easy:10905.md","comments/multiple-outputs-from-t4-made-easy/10905.md","comments/multiple-outputs-from-t4-made-easy/10905",{"_path":3531,"_dir":3107,"_draft":6,"_partial":6,"_locale":7,"title":3532,"description":3533,"id":3534,"name":3535,"email":3536,"avatar":3537,"url":3538,"date":3539,"body":3540,"_type":3083,"_id":3558,"_source":3085,"_file":3559,"_stem":3560,"_extension":3088},"/comments/multiple-outputs-from-t4-made-easy/10904","10904","Damien,",10904,"Luis Rocha","lerocha@gmail.com","https://www.gravatar.com/avatar/7ce180282ed7cb7a2be8549fa19186b2?r=pg&d=retro","https://www.luisrocha.net","2009-01-22T17:10:30",{"type":17,"children":3541,"toc":3556},[3542,3546,3551],{"type":20,"tag":21,"props":3543,"children":3544},{},[3545],{"type":25,"value":3533},{"type":20,"tag":21,"props":3547,"children":3548},{},[3549],{"type":25,"value":3550},"This is awesome!! Thanks for sharing this. I saw that the VSManagementStrategy class automatically adds the generated files to the project. Would all generated files show in the solution explorer as nested files of their t4 template?",{"type":20,"tag":21,"props":3552,"children":3553},{},[3554],{"type":25,"value":3555},"Thanks,\nLuis",{"title":9,"searchDepth":171,"depth":171,"links":3557},[],"content:comments:multiple-outputs-from-t4-made-easy:10904.md","comments/multiple-outputs-from-t4-made-easy/10904.md","comments/multiple-outputs-from-t4-made-easy/10904",1779264585847]