[{"data":1,"prerenderedAt":5943},["ShallowReactive",2],{"blog:2009:multiple-outputs-from-t4-made-easy-revisited":3,"blogMore-Development":4454,"comments-multiple-outputs-from-t4-made-easy-revisited":4467},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"excerpt":11,"category":31,"tags":32,"body":37,"_type":4446,"_id":4447,"_source":4448,"_file":4449,"_stem":4450,"_extension":4451,"url":4452,"wordCount":4453,"minutes":732,"commentCount":1081},"/blog/2009/multiple-outputs-from-t4-made-easy-revisited","2009",false,"en","Multiple outputs from T4 made easy: revisited","My multiple outputs from t4 made easy post contained a class making it easy to produce multiple files from Visual Studio’s text templating engine (T4).","2009-11-06T00:20:37+00:00",{"type":12,"children":13},"root",[14,26],{"type":15,"tag":16,"props":17,"children":18},"element","p",{},[19,22,24],{"type":20,"value":21},"text","My ",{"type":20,"value":23},"multiple outputs from t4 made easy",{"type":20,"value":25}," post contained a class making it easy to produce multiple files from Visual Studio’s text templating engine (T4).",{"type":15,"tag":16,"props":27,"children":28},{},[29],{"type":20,"value":30},"While useful it had a few issues:","Development",[33,34,35,36],".NET","Entity Framework","LINQ","T4",{"type":12,"children":38,"toc":4429},[39,50,54,84,99,106,113,118,124,129,134,140,145,151,156,161,167,180,186,191,197,203,208,321,327,332,435,441,446,539,545,550,590,596,611,4414,4423],{"type":15,"tag":16,"props":40,"children":41},{},[42,43,49],{"type":20,"value":21},{"type":15,"tag":44,"props":45,"children":47},"a",{"href":46},"/blog/2009/multiple-outputs-from-t4-made-easy/",[48],{"type":20,"value":23},{"type":20,"value":25},{"type":15,"tag":16,"props":51,"children":52},{},[53],{"type":20,"value":30},{"type":15,"tag":55,"props":56,"children":57},"ul",{},[58,64,69,74,79],{"type":15,"tag":59,"props":60,"children":61},"li",{},[62],{"type":20,"value":63},"Getting start/end blocks mixed up resulted in unpredictable behavior",{"type":15,"tag":59,"props":65,"children":66},{},[67],{"type":20,"value":68},"Files were rewritten even when content did not change",{"type":15,"tag":59,"props":70,"children":71},{},[72],{"type":20,"value":73},"Did not play well with source control",{"type":15,"tag":59,"props":75,"children":76},{},[77],{"type":20,"value":78},"Files not always deleted in VS",{"type":15,"tag":59,"props":80,"children":81},{},[82],{"type":20,"value":83},"Failed in Visual Studio’s project-less Web Sites",{"type":15,"tag":16,"props":85,"children":86},{},[87,89,97],{"type":20,"value":88},"This helper class forms the basis of multiple file output for Entity Framework templates in .NET 4.0 and the ",{"type":15,"tag":44,"props":90,"children":94},{"href":91,"rel":92},"https://l2st4.codeplex.com",[93],"nofollow",[95],{"type":20,"value":96},"LINQ to SQL templates",{"type":20,"value":98}," on CodePlex so we (Jeff Reed, Andrew Peters and myself) made the following changes.",{"type":15,"tag":100,"props":101,"children":103},"h2",{"id":102},"improvements",[104],{"type":20,"value":105},"Improvements",{"type":15,"tag":107,"props":108,"children":110},"h3",{"id":109},"simpler-block-handling",[111],{"type":20,"value":112},"Simpler block handling",{"type":15,"tag":16,"props":114,"children":115},{},[116],{"type":20,"value":117},"The header, footer and file blocks can now be completed with EndBlock (EndHeader and EndFooter are gone), although it will automatically end the previous block when it hits a new one or the final Process method.",{"type":15,"tag":107,"props":119,"children":121},{"id":120},"skip-unchanged-files",[122],{"type":20,"value":123},"Skip unchanged files",{"type":15,"tag":16,"props":125,"children":126},{},[127],{"type":20,"value":128},"Files are now only written to disk if the contents are different with the exception of the original T4 output file (we can’t stop that, sorry).",{"type":15,"tag":16,"props":130,"children":131},{},[132],{"type":20,"value":133},"There is additional overhead reading and comparing files we believe unmodified files keeping their dates and source control status are worth it.",{"type":15,"tag":107,"props":135,"children":137},{"id":136},"automatic-checkout",[138],{"type":20,"value":139},"Automatic checkout",{"type":15,"tag":16,"props":141,"children":142},{},[143],{"type":20,"value":144},"When the template detects it is running in Visual Studio and that the file it needs to write to is currently in source control but not checked out it will check the file out for you.",{"type":15,"tag":107,"props":146,"children":148},{"id":147},"predictable-clean-up",[149],{"type":20,"value":150},"Predictable clean-up",{"type":15,"tag":16,"props":152,"children":153},{},[154],{"type":20,"value":155},"All files that were not part of the generation process but are nested under the project item will now be deleted when running inside Visual Studio.",{"type":15,"tag":16,"props":157,"children":158},{},[159],{"type":20,"value":160},"Outside of Visual Studio files are no longer deleted because this was destructive and it couldn’t know which files it generated on a previous run to clean-up correctly anyway.",{"type":15,"tag":107,"props":162,"children":164},{"id":163},"website-projects-fall-back-to-single-file-generation",[165],{"type":20,"value":166},"Website projects fall back to single file generation",{"type":15,"tag":16,"props":168,"children":169},{},[170,172,178],{"type":20,"value":171},"Visual Studio has both ",{"type":15,"tag":44,"props":173,"children":175},{"href":174},"/blog/2008/web-site-vs-web-application/",[176],{"type":20,"value":177},"web sites and web applications",{"type":20,"value":179}," with the former being project-less leading to very messy multi-file generation so it forces single file generation.",{"type":15,"tag":107,"props":181,"children":183},{"id":182},"internal-improvements",[184],{"type":20,"value":185},"Internal improvements",{"type":15,"tag":16,"props":187,"children":188},{},[189],{"type":20,"value":190},"Source is now simpler to read and understand with less public visibility and faster and more robust VS interop by batching the files & deletes to a single invoke at the end to avoid conflicts with other add-ins that might be triggered by the changes.",{"type":15,"tag":100,"props":192,"children":194},{"id":193},"usage",[195],{"type":20,"value":196},"Usage",{"type":15,"tag":107,"props":198,"children":200},{"id":199},"initialization",[201],{"type":20,"value":202},"Initialization",{"type":15,"tag":16,"props":204,"children":205},{},[206],{"type":20,"value":207},"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. (For Visual Studio 2010 remove the #v3.5 portion from the language attribute)",{"type":15,"tag":209,"props":210,"children":215},"pre",{"className":211,"code":212,"language":213,"meta":214,"style":214},"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 = Manager.Create(Host, GenerationEnvironment); #>\n","csharp","",[216],{"type":15,"tag":217,"props":218,"children":219},"code",{"__ignoreMap":214},[220,293,308],{"type":15,"tag":221,"props":222,"children":225},"span",{"class":223,"line":224},"line",1,[226,232,238,244,249,254,260,266,270,275,279,283,288],{"type":15,"tag":221,"props":227,"children":229},{"style":228},"--shiki-default:#F57D26;--shiki-dark:#FF79C6",[230],{"type":20,"value":231},"\u003C",{"type":15,"tag":221,"props":233,"children":235},{"style":234},"--shiki-default:#5C6A72;--shiki-dark:#F8F8F2",[236],{"type":20,"value":237},"#@ ",{"type":15,"tag":221,"props":239,"children":241},{"style":240},"--shiki-default:#3A94C5;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic",[242],{"type":20,"value":243},"template",{"type":15,"tag":221,"props":245,"children":246},{"style":234},[247],{"type":20,"value":248}," language",{"type":15,"tag":221,"props":250,"children":251},{"style":228},[252],{"type":20,"value":253},"=",{"type":15,"tag":221,"props":255,"children":257},{"style":256},"--shiki-default:#8DA101;--shiki-dark:#E9F284",[258],{"type":20,"value":259},"\"",{"type":15,"tag":221,"props":261,"children":263},{"style":262},"--shiki-default:#8DA101;--shiki-dark:#F1FA8C",[264],{"type":20,"value":265},"C#v3.5",{"type":15,"tag":221,"props":267,"children":268},{"style":256},[269],{"type":20,"value":259},{"type":15,"tag":221,"props":271,"children":272},{"style":234},[273],{"type":20,"value":274}," hostspecific",{"type":15,"tag":221,"props":276,"children":277},{"style":228},[278],{"type":20,"value":253},{"type":15,"tag":221,"props":280,"children":281},{"style":256},[282],{"type":20,"value":259},{"type":15,"tag":221,"props":284,"children":285},{"style":262},[286],{"type":20,"value":287},"True",{"type":15,"tag":221,"props":289,"children":290},{"style":256},[291],{"type":20,"value":292},"\"\n",{"type":15,"tag":221,"props":294,"children":296},{"class":223,"line":295},2,[297,303],{"type":15,"tag":221,"props":298,"children":300},{"style":299},"--shiki-default:#5C6A72;--shiki-dark:#FF79C6",[301],{"type":20,"value":302},"#",{"type":15,"tag":221,"props":304,"children":305},{"style":234},[306],{"type":20,"value":307},">\u003C#@include file=\"Manager.ttinclude\"\n",{"type":15,"tag":221,"props":309,"children":311},{"class":223,"line":310},3,[312,316],{"type":15,"tag":221,"props":313,"children":314},{"style":299},[315],{"type":20,"value":302},{"type":15,"tag":221,"props":317,"children":318},{"style":234},[319],{"type":20,"value":320},">\u003C# var manager = Manager.Create(Host, GenerationEnvironment); #>\n",{"type":15,"tag":107,"props":322,"children":324},{"id":323},"file-blocks",[325],{"type":20,"value":326},"File blocks",{"type":15,"tag":16,"props":328,"children":329},{},[330],{"type":20,"value":331},"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. The EndBlock is optional if you want it to carry through to the next one :)",{"type":15,"tag":209,"props":333,"children":335},{"className":211,"code":334,"language":213,"meta":214,"style":214},"\u003C# manager.StartNewFile(\"Employee.generated.cs\"); #>\npublic class Employee { … }\n\u003C# manager.EndBlock(); #>\n",[336],{"type":15,"tag":217,"props":337,"children":338},{"__ignoreMap":214},[339,385,410],{"type":15,"tag":221,"props":340,"children":341},{"class":223,"line":224},[342,346,351,357,362,366,371,375,380],{"type":15,"tag":221,"props":343,"children":344},{"style":228},[345],{"type":20,"value":231},{"type":15,"tag":221,"props":347,"children":348},{"style":234},[349],{"type":20,"value":350},"# manager.",{"type":15,"tag":221,"props":352,"children":354},{"style":353},"--shiki-default:#8DA101;--shiki-dark:#50FA7B",[355],{"type":20,"value":356},"StartNewFile",{"type":15,"tag":221,"props":358,"children":359},{"style":234},[360],{"type":20,"value":361},"(",{"type":15,"tag":221,"props":363,"children":364},{"style":256},[365],{"type":20,"value":259},{"type":15,"tag":221,"props":367,"children":368},{"style":262},[369],{"type":20,"value":370},"Employee.generated.cs",{"type":15,"tag":221,"props":372,"children":373},{"style":256},[374],{"type":20,"value":259},{"type":15,"tag":221,"props":376,"children":377},{"style":234},[378],{"type":20,"value":379},"); #",{"type":15,"tag":221,"props":381,"children":382},{"style":228},[383],{"type":20,"value":384},">\n",{"type":15,"tag":221,"props":386,"children":387},{"class":223,"line":295},[388,393,399,405],{"type":15,"tag":221,"props":389,"children":390},{"style":228},[391],{"type":20,"value":392},"public",{"type":15,"tag":221,"props":394,"children":396},{"style":395},"--shiki-default:#F85552;--shiki-dark:#FF79C6",[397],{"type":20,"value":398}," class",{"type":15,"tag":221,"props":400,"children":402},{"style":401},"--shiki-default:#3A94C5;--shiki-dark:#8BE9FD",[403],{"type":20,"value":404}," Employee",{"type":15,"tag":221,"props":406,"children":407},{"style":234},[408],{"type":20,"value":409}," { … }\n",{"type":15,"tag":221,"props":411,"children":412},{"class":223,"line":310},[413,417,421,426,431],{"type":15,"tag":221,"props":414,"children":415},{"style":228},[416],{"type":20,"value":231},{"type":15,"tag":221,"props":418,"children":419},{"style":234},[420],{"type":20,"value":350},{"type":15,"tag":221,"props":422,"children":423},{"style":353},[424],{"type":20,"value":425},"EndBlock",{"type":15,"tag":221,"props":427,"children":428},{"style":234},[429],{"type":20,"value":430},"(); #",{"type":15,"tag":221,"props":432,"children":433},{"style":228},[434],{"type":20,"value":384},{"type":15,"tag":107,"props":436,"children":438},{"id":437},"headers-footers",[439],{"type":20,"value":440},"Headers & footers",{"type":15,"tag":16,"props":442,"children":443},{},[444],{"type":20,"value":445},"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 and StartFooter and the blocks will be emitted to the start and end of all split files as well as being left in the original output file.",{"type":15,"tag":209,"props":447,"children":449},{"className":211,"code":448,"language":213,"meta":214,"style":214},"\u003C# manager.StartHeader(); #>\n// Code generated by a template\nusing System;\n\n\u003C# manager.EndBlock(); #>\n",[450],{"type":15,"tag":217,"props":451,"children":452},{"__ignoreMap":214},[453,477,486,505,515],{"type":15,"tag":221,"props":454,"children":455},{"class":223,"line":224},[456,460,464,469,473],{"type":15,"tag":221,"props":457,"children":458},{"style":228},[459],{"type":20,"value":231},{"type":15,"tag":221,"props":461,"children":462},{"style":234},[463],{"type":20,"value":350},{"type":15,"tag":221,"props":465,"children":466},{"style":353},[467],{"type":20,"value":468},"StartHeader",{"type":15,"tag":221,"props":470,"children":471},{"style":234},[472],{"type":20,"value":430},{"type":15,"tag":221,"props":474,"children":475},{"style":228},[476],{"type":20,"value":384},{"type":15,"tag":221,"props":478,"children":479},{"class":223,"line":295},[480],{"type":15,"tag":221,"props":481,"children":483},{"style":482},"--shiki-default:#939F91;--shiki-default-font-style:italic;--shiki-dark:#6272A4;--shiki-dark-font-style:inherit",[484],{"type":20,"value":485},"// Code generated by a template\n",{"type":15,"tag":221,"props":487,"children":488},{"class":223,"line":310},[489,494,500],{"type":15,"tag":221,"props":490,"children":491},{"style":395},[492],{"type":20,"value":493},"using",{"type":15,"tag":221,"props":495,"children":497},{"style":496},"--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic",[498],{"type":20,"value":499}," System",{"type":15,"tag":221,"props":501,"children":502},{"style":234},[503],{"type":20,"value":504},";\n",{"type":15,"tag":221,"props":506,"children":508},{"class":223,"line":507},4,[509],{"type":15,"tag":221,"props":510,"children":512},{"emptyLinePlaceholder":511},true,[513],{"type":20,"value":514},"\n",{"type":15,"tag":221,"props":516,"children":518},{"class":223,"line":517},5,[519,523,527,531,535],{"type":15,"tag":221,"props":520,"children":521},{"style":228},[522],{"type":20,"value":231},{"type":15,"tag":221,"props":524,"children":525},{"style":234},[526],{"type":20,"value":350},{"type":15,"tag":221,"props":528,"children":529},{"style":353},[530],{"type":20,"value":425},{"type":15,"tag":221,"props":532,"children":533},{"style":234},[534],{"type":20,"value":430},{"type":15,"tag":221,"props":536,"children":537},{"style":228},[538],{"type":20,"value":384},{"type":15,"tag":107,"props":540,"children":542},{"id":541},"process",[543],{"type":20,"value":544},"Process",{"type":15,"tag":16,"props":546,"children":547},{},[548],{"type":20,"value":549},"At the end of the template call Process to handle splitting the files (true) or not (false). Anything not included in a specific StartNewFile block will remain in the original output file.",{"type":15,"tag":209,"props":551,"children":553},{"className":211,"code":552,"language":213,"meta":214,"style":214},"\u003C# manager.Process(true); #>\n",[554],{"type":15,"tag":217,"props":555,"children":556},{"__ignoreMap":214},[557],{"type":15,"tag":221,"props":558,"children":559},{"class":223,"line":224},[560,564,568,572,576,582,586],{"type":15,"tag":221,"props":561,"children":562},{"style":228},[563],{"type":20,"value":231},{"type":15,"tag":221,"props":565,"children":566},{"style":234},[567],{"type":20,"value":350},{"type":15,"tag":221,"props":569,"children":570},{"style":353},[571],{"type":20,"value":544},{"type":15,"tag":221,"props":573,"children":574},{"style":234},[575],{"type":20,"value":361},{"type":15,"tag":221,"props":577,"children":579},{"style":578},"--shiki-default:#DF69BA;--shiki-dark:#BD93F9",[580],{"type":20,"value":581},"true",{"type":15,"tag":221,"props":583,"children":584},{"style":234},[585],{"type":20,"value":379},{"type":15,"tag":221,"props":587,"children":588},{"style":228},[589],{"type":20,"value":384},{"type":15,"tag":100,"props":591,"children":593},{"id":592},"revised-manager-class",[594],{"type":20,"value":595},"Revised Manager class",{"type":15,"tag":597,"props":598,"children":599},"blockquote",{},[600],{"type":15,"tag":16,"props":601,"children":602},{},[603,605],{"type":20,"value":604},"Latest source ",{"type":15,"tag":44,"props":606,"children":608},{"href":607},"https://github.com/damieng/DamienGKit/tree/master/T4/MultipleOutputHelper",[609],{"type":20,"value":610},"available at GitHub",{"type":15,"tag":209,"props":612,"children":614},{"className":211,"code":613,"language":213,"meta":214,"style":214},"\u003C#@ assembly name=\"System.Core\"\n#>\u003C#@ assembly name=\"System.Data.Linq\"\n#>\u003C#@ assembly name=\"EnvDTE\"\n#>\u003C#@ assembly name=\"System.Xml\"\n#>\u003C#@ assembly name=\"System.Xml.Linq\"\n#>\u003C#@ import namespace=\"System\"\n#>\u003C#@ import namespace=\"System.CodeDom\"\n#>\u003C#@ import namespace=\"System.CodeDom.Compiler\"\n#>\u003C#@ import namespace=\"System.Collections.Generic\"\n#>\u003C#@ import namespace=\"System.Data.Linq\"\n#>\u003C#@ import namespace=\"System.Data.Linq.Mapping\"\n#>\u003C#@ import namespace=\"System.IO\"\n#>\u003C#@ import namespace=\"System.Linq\"\n#>\u003C#@ import namespace=\"System.Reflection\"\n#>\u003C#@ import namespace=\"System.Text\"\n#>\u003C#@ import namespace=\"System.Xml.Linq\"\n#>\u003C#@ import namespace=\"Microsoft.VisualStudio.TextTemplating\"\n#>\u003C#+\n\n// Manager class records the various blocks so it can split them up\nclass Manager {\n    private class Block {\n        public String Name;\n        public int Start, Length;\n    }\n\n    private Block currentBlock;\n    private List\u003CBlock> files = new List\u003CBlock>();\n    private Block footer = new Block();\n    private Block header = new Block();\n    private ITextTemplatingEngineHost host;\n    private StringBuilder template;\n    protected List\u003CString> generatedFileNames = new List\u003CString>();\n\n    public static Manager Create(ITextTemplatingEngineHost host, StringBuilder template) {\n        return (host is IServiceProvider) ? new VSManager(host, template) : new Manager(host, template);\n    }\n\n    public void StartNewFile(String name) {\n        if (name == null)\n            throw new ArgumentNullException(\"name\");\n        CurrentBlock = new Block { Name = name };\n    }\n\n    public void StartFooter() {\n        CurrentBlock = footer;\n    }\n\n    public void StartHeader() {\n        CurrentBlock = header;\n    }\n\n    public void EndBlock() {\n        if (CurrentBlock == null)\n            return;\n        CurrentBlock.Length = template.Length - CurrentBlock.Start;\n        if (CurrentBlock != header && CurrentBlock != footer)\n            files.Add(CurrentBlock);\n        currentBlock = null;\n    }\n\n    public virtual void Process(bool split) {\n        if (split) {\n            EndBlock();\n            String headerText = template.ToString(header.Start, header.Length);\n            String footerText = template.ToString(footer.Start, footer.Length);\n            String outputPath = Path.GetDirectoryName(host.TemplateFile);\n            files.Reverse();\n            foreach(Block block in files) {\n                String fileName = Path.Combine(outputPath, block.Name);\n                String content = headerText + template.ToString(block.Start, block.Length) + footerText;\n                generatedFileNames.Add(fileName);\n                CreateFile(fileName, content);\n                template.Remove(block.Start, block.Length);\n            }\n        }\n    }\n\n    protected virtual void CreateFile(String fileName, String content) {\n        if (IsFileContentDifferent(fileName, content))\n            File.WriteAllText(fileName, content);\n    }\n\n    public virtual String GetCustomToolNamespace(String fileName) {\n        return null;\n    }\n\n    public virtual String DefaultProjectNamespace {\n        get { return null; }\n    }\n\n    protected bool IsFileContentDifferent(String fileName, String newContent) {\n        return !(File.Exists(fileName) && File.ReadAllText(fileName) == newContent);\n    }\n\n    private Manager(ITextTemplatingEngineHost host, StringBuilder template) {\n        this.host = host;\n        this.template = template;\n    }\n\n    private Block CurrentBlock {\n        get { return currentBlock; }\n        set {\n            if (CurrentBlock != null)\n                EndBlock();\n            if (value != null)\n                value.Start = template.Length;\n            currentBlock = value;\n        }\n    }\n\n    private class VSManager: Manager {\n        private EnvDTE.ProjectItem templateProjectItem;\n        private EnvDTE.DTE dte;\n        private Action\u003CString> checkOutAction;\n        private Action\u003CIEnumerable\u003CString>> projectSyncAction;\n\n        public override String DefaultProjectNamespace {\n            get {\n                return templateProjectItem.ContainingProject.Properties.Item(\"DefaultNamespace\").Value.ToString();\n            }\n        }\n\n        public override String GetCustomToolNamespace(string fileName) {\n            return dte.Solution.FindProjectItem(fileName).Properties.Item(\"CustomToolNamespace\").Value.ToString();\n        }\n\n        public override void Process(bool split) {\n            if (templateProjectItem.ProjectItems == null)\n                return;\n            base.Process(split);\n            projectSyncAction.EndInvoke(projectSyncAction.BeginInvoke(generatedFileNames, null, null));\n        }\n\n        protected override void CreateFile(String fileName, String content) {\n            if (IsFileContentDifferent(fileName, content)) {\n                CheckoutFileIfRequired(fileName);\n                File.WriteAllText(fileName, content);\n            }\n        }\n\n        internal VSManager(ITextTemplatingEngineHost host, StringBuilder template)\n            : base(host, template) {\n            var hostServiceProvider = (IServiceProvider) host;\n            if (hostServiceProvider == null)\n                throw new ArgumentNullException(\"Could not obtain IServiceProvider\");\n            dte = (EnvDTE.DTE) hostServiceProvider.GetService(typeof(EnvDTE.DTE));\n            if (dte == null)\n                throw new ArgumentNullException(\"Could not obtain DTE from host\");\n            templateProjectItem = dte.Solution.FindProjectItem(host.TemplateFile);\n            checkOutAction = (String fileName) => dte.SourceControl.CheckOutItem(fileName);\n            projectSyncAction = (IEnumerable\u003CString> keepFileNames) => ProjectSync(templateProjectItem, keepFileNames);\n        }\n\n        private static void ProjectSync(EnvDTE.ProjectItem templateProjectItem, IEnumerable\u003CString> keepFileNames) {\n            var keepFileNameSet = new HashSet\u003CString>(keepFileNames);\n            var projectFiles = new Dictionary\u003CString, EnvDTE.ProjectItem>();\n            var originalFilePrefix = Path.GetFileNameWithoutExtension(templateProjectItem.get_FileNames(0)) + \".\";\n            foreach(EnvDTE.ProjectItem projectItem in templateProjectItem.ProjectItems)\n                projectFiles.Add(projectItem.get_FileNames(0), projectItem);\n\n            // Remove unused items from the project\n            foreach(var pair in projectFiles)\n                if (!keepFileNames.Contains(pair.Key) && !(Path.GetFileNameWithoutExtension(pair.Key) + \".\").StartsWith(originalFilePrefix))\n                    pair.Value.Delete();\n\n            // Add missing files to the project\n            foreach(String fileName in keepFileNameSet)\n                if (!projectFiles.ContainsKey(fileName))\n                    templateProjectItem.ProjectItems.AddFromFile(fileName);\n        }\n\n        private void CheckoutFileIfRequired(String fileName) {\n            var sc = dte.SourceControl;\n            if (sc != null && sc.IsItemUnderSCC(fileName) && !sc.IsItemCheckedOut(fileName))\n                checkOutAction.EndInvoke(checkOutAction.BeginInvoke(fileName, null, null));\n        }\n    }\n} #>\n",[615],{"type":15,"tag":217,"props":616,"children":617},{"__ignoreMap":214},[618,656,668,680,692,704,717,730,743,756,769,782,795,808,821,834,847,860,873,881,890,899,908,917,937,946,954,963,1018,1045,1070,1079,1088,1139,1147,1166,1233,1241,1249,1273,1302,1342,1377,1385,1393,1415,1432,1440,1448,1469,1486,1494,1502,1523,1548,1557,1605,1646,1665,1686,1694,1702,1734,1747,1760,1804,1847,1884,1901,1925,1961,2023,2041,2055,2089,2098,2107,2115,2123,2146,2169,2187,2195,2203,2222,2240,2248,2256,2265,2283,2291,2299,2322,2377,2385,2393,2411,2440,2465,2473,2481,2490,2499,2508,2533,2546,2571,2600,2618,2626,2634,2642,2660,2679,2697,2723,2758,2766,2775,2784,2855,2863,2871,2879,2906,2983,2991,2999,3028,3059,3068,3091,3138,3146,3154,3175,3196,3209,3226,3234,3242,3250,3269,3288,3315,3340,3378,3447,3472,3509,3551,3609,3666,3674,3682,3730,3765,3815,3882,3920,3955,3963,3972,3994,4095,4121,4129,4138,4160,4191,4217,4225,4233,4255,4280,4342,4385,4393,4401],{"type":15,"tag":221,"props":619,"children":620},{"class":223,"line":224},[621,625,629,634,639,643,647,652],{"type":15,"tag":221,"props":622,"children":623},{"style":228},[624],{"type":20,"value":231},{"type":15,"tag":221,"props":626,"children":627},{"style":234},[628],{"type":20,"value":237},{"type":15,"tag":221,"props":630,"children":631},{"style":240},[632],{"type":20,"value":633},"assembly",{"type":15,"tag":221,"props":635,"children":636},{"style":234},[637],{"type":20,"value":638}," name",{"type":15,"tag":221,"props":640,"children":641},{"style":228},[642],{"type":20,"value":253},{"type":15,"tag":221,"props":644,"children":645},{"style":256},[646],{"type":20,"value":259},{"type":15,"tag":221,"props":648,"children":649},{"style":262},[650],{"type":20,"value":651},"System.Core",{"type":15,"tag":221,"props":653,"children":654},{"style":256},[655],{"type":20,"value":292},{"type":15,"tag":221,"props":657,"children":658},{"class":223,"line":295},[659,663],{"type":15,"tag":221,"props":660,"children":661},{"style":299},[662],{"type":20,"value":302},{"type":15,"tag":221,"props":664,"children":665},{"style":234},[666],{"type":20,"value":667},">\u003C#@ assembly name=\"System.Data.Linq\"\n",{"type":15,"tag":221,"props":669,"children":670},{"class":223,"line":310},[671,675],{"type":15,"tag":221,"props":672,"children":673},{"style":299},[674],{"type":20,"value":302},{"type":15,"tag":221,"props":676,"children":677},{"style":234},[678],{"type":20,"value":679},">\u003C#@ assembly name=\"EnvDTE\"\n",{"type":15,"tag":221,"props":681,"children":682},{"class":223,"line":507},[683,687],{"type":15,"tag":221,"props":684,"children":685},{"style":299},[686],{"type":20,"value":302},{"type":15,"tag":221,"props":688,"children":689},{"style":234},[690],{"type":20,"value":691},">\u003C#@ assembly name=\"System.Xml\"\n",{"type":15,"tag":221,"props":693,"children":694},{"class":223,"line":517},[695,699],{"type":15,"tag":221,"props":696,"children":697},{"style":299},[698],{"type":20,"value":302},{"type":15,"tag":221,"props":700,"children":701},{"style":234},[702],{"type":20,"value":703},">\u003C#@ assembly name=\"System.Xml.Linq\"\n",{"type":15,"tag":221,"props":705,"children":707},{"class":223,"line":706},6,[708,712],{"type":15,"tag":221,"props":709,"children":710},{"style":299},[711],{"type":20,"value":302},{"type":15,"tag":221,"props":713,"children":714},{"style":234},[715],{"type":20,"value":716},">\u003C#@ import namespace=\"System\"\n",{"type":15,"tag":221,"props":718,"children":720},{"class":223,"line":719},7,[721,725],{"type":15,"tag":221,"props":722,"children":723},{"style":299},[724],{"type":20,"value":302},{"type":15,"tag":221,"props":726,"children":727},{"style":234},[728],{"type":20,"value":729},">\u003C#@ import namespace=\"System.CodeDom\"\n",{"type":15,"tag":221,"props":731,"children":733},{"class":223,"line":732},8,[734,738],{"type":15,"tag":221,"props":735,"children":736},{"style":299},[737],{"type":20,"value":302},{"type":15,"tag":221,"props":739,"children":740},{"style":234},[741],{"type":20,"value":742},">\u003C#@ import namespace=\"System.CodeDom.Compiler\"\n",{"type":15,"tag":221,"props":744,"children":746},{"class":223,"line":745},9,[747,751],{"type":15,"tag":221,"props":748,"children":749},{"style":299},[750],{"type":20,"value":302},{"type":15,"tag":221,"props":752,"children":753},{"style":234},[754],{"type":20,"value":755},">\u003C#@ import namespace=\"System.Collections.Generic\"\n",{"type":15,"tag":221,"props":757,"children":759},{"class":223,"line":758},10,[760,764],{"type":15,"tag":221,"props":761,"children":762},{"style":299},[763],{"type":20,"value":302},{"type":15,"tag":221,"props":765,"children":766},{"style":234},[767],{"type":20,"value":768},">\u003C#@ import namespace=\"System.Data.Linq\"\n",{"type":15,"tag":221,"props":770,"children":772},{"class":223,"line":771},11,[773,777],{"type":15,"tag":221,"props":774,"children":775},{"style":299},[776],{"type":20,"value":302},{"type":15,"tag":221,"props":778,"children":779},{"style":234},[780],{"type":20,"value":781},">\u003C#@ import namespace=\"System.Data.Linq.Mapping\"\n",{"type":15,"tag":221,"props":783,"children":785},{"class":223,"line":784},12,[786,790],{"type":15,"tag":221,"props":787,"children":788},{"style":299},[789],{"type":20,"value":302},{"type":15,"tag":221,"props":791,"children":792},{"style":234},[793],{"type":20,"value":794},">\u003C#@ import namespace=\"System.IO\"\n",{"type":15,"tag":221,"props":796,"children":798},{"class":223,"line":797},13,[799,803],{"type":15,"tag":221,"props":800,"children":801},{"style":299},[802],{"type":20,"value":302},{"type":15,"tag":221,"props":804,"children":805},{"style":234},[806],{"type":20,"value":807},">\u003C#@ import namespace=\"System.Linq\"\n",{"type":15,"tag":221,"props":809,"children":811},{"class":223,"line":810},14,[812,816],{"type":15,"tag":221,"props":813,"children":814},{"style":299},[815],{"type":20,"value":302},{"type":15,"tag":221,"props":817,"children":818},{"style":234},[819],{"type":20,"value":820},">\u003C#@ import namespace=\"System.Reflection\"\n",{"type":15,"tag":221,"props":822,"children":824},{"class":223,"line":823},15,[825,829],{"type":15,"tag":221,"props":826,"children":827},{"style":299},[828],{"type":20,"value":302},{"type":15,"tag":221,"props":830,"children":831},{"style":234},[832],{"type":20,"value":833},">\u003C#@ import namespace=\"System.Text\"\n",{"type":15,"tag":221,"props":835,"children":837},{"class":223,"line":836},16,[838,842],{"type":15,"tag":221,"props":839,"children":840},{"style":299},[841],{"type":20,"value":302},{"type":15,"tag":221,"props":843,"children":844},{"style":234},[845],{"type":20,"value":846},">\u003C#@ import namespace=\"System.Xml.Linq\"\n",{"type":15,"tag":221,"props":848,"children":850},{"class":223,"line":849},17,[851,855],{"type":15,"tag":221,"props":852,"children":853},{"style":299},[854],{"type":20,"value":302},{"type":15,"tag":221,"props":856,"children":857},{"style":234},[858],{"type":20,"value":859},">\u003C#@ import namespace=\"Microsoft.VisualStudio.TextTemplating\"\n",{"type":15,"tag":221,"props":861,"children":863},{"class":223,"line":862},18,[864,868],{"type":15,"tag":221,"props":865,"children":866},{"style":299},[867],{"type":20,"value":302},{"type":15,"tag":221,"props":869,"children":870},{"style":234},[871],{"type":20,"value":872},">\u003C#+\n",{"type":15,"tag":221,"props":874,"children":876},{"class":223,"line":875},19,[877],{"type":15,"tag":221,"props":878,"children":879},{"emptyLinePlaceholder":511},[880],{"type":20,"value":514},{"type":15,"tag":221,"props":882,"children":884},{"class":223,"line":883},20,[885],{"type":15,"tag":221,"props":886,"children":887},{"style":482},[888],{"type":20,"value":889},"// Manager class records the various blocks so it can split them up\n",{"type":15,"tag":221,"props":891,"children":893},{"class":223,"line":892},21,[894],{"type":15,"tag":221,"props":895,"children":896},{"style":234},[897],{"type":20,"value":898},"class Manager {\n",{"type":15,"tag":221,"props":900,"children":902},{"class":223,"line":901},22,[903],{"type":15,"tag":221,"props":904,"children":905},{"style":234},[906],{"type":20,"value":907},"    private class Block {\n",{"type":15,"tag":221,"props":909,"children":911},{"class":223,"line":910},23,[912],{"type":15,"tag":221,"props":913,"children":914},{"style":234},[915],{"type":20,"value":916},"        public String Name;\n",{"type":15,"tag":221,"props":918,"children":920},{"class":223,"line":919},24,[921,926,932],{"type":15,"tag":221,"props":922,"children":923},{"style":234},[924],{"type":20,"value":925},"        public ",{"type":15,"tag":221,"props":927,"children":929},{"style":928},"--shiki-default:#3A94C5;--shiki-dark:#FF79C6",[930],{"type":20,"value":931},"int",{"type":15,"tag":221,"props":933,"children":934},{"style":234},[935],{"type":20,"value":936}," Start, Length;\n",{"type":15,"tag":221,"props":938,"children":940},{"class":223,"line":939},25,[941],{"type":15,"tag":221,"props":942,"children":943},{"style":234},[944],{"type":20,"value":945},"    }\n",{"type":15,"tag":221,"props":947,"children":949},{"class":223,"line":948},26,[950],{"type":15,"tag":221,"props":951,"children":952},{"emptyLinePlaceholder":511},[953],{"type":20,"value":514},{"type":15,"tag":221,"props":955,"children":957},{"class":223,"line":956},27,[958],{"type":15,"tag":221,"props":959,"children":960},{"style":234},[961],{"type":20,"value":962},"    private Block currentBlock;\n",{"type":15,"tag":221,"props":964,"children":966},{"class":223,"line":965},28,[967,972,976,981,986,991,995,1000,1005,1009,1013],{"type":15,"tag":221,"props":968,"children":969},{"style":234},[970],{"type":20,"value":971},"    private List",{"type":15,"tag":221,"props":973,"children":974},{"style":228},[975],{"type":20,"value":231},{"type":15,"tag":221,"props":977,"children":978},{"style":234},[979],{"type":20,"value":980},"Block",{"type":15,"tag":221,"props":982,"children":983},{"style":228},[984],{"type":20,"value":985},">",{"type":15,"tag":221,"props":987,"children":988},{"style":234},[989],{"type":20,"value":990}," files ",{"type":15,"tag":221,"props":992,"children":993},{"style":228},[994],{"type":20,"value":253},{"type":15,"tag":221,"props":996,"children":997},{"style":395},[998],{"type":20,"value":999}," new",{"type":15,"tag":221,"props":1001,"children":1002},{"style":240},[1003],{"type":20,"value":1004}," List",{"type":15,"tag":221,"props":1006,"children":1007},{"style":234},[1008],{"type":20,"value":231},{"type":15,"tag":221,"props":1010,"children":1011},{"style":240},[1012],{"type":20,"value":980},{"type":15,"tag":221,"props":1014,"children":1015},{"style":234},[1016],{"type":20,"value":1017},">();\n",{"type":15,"tag":221,"props":1019,"children":1021},{"class":223,"line":1020},29,[1022,1027,1031,1035,1040],{"type":15,"tag":221,"props":1023,"children":1024},{"style":234},[1025],{"type":20,"value":1026},"    private Block footer ",{"type":15,"tag":221,"props":1028,"children":1029},{"style":228},[1030],{"type":20,"value":253},{"type":15,"tag":221,"props":1032,"children":1033},{"style":395},[1034],{"type":20,"value":999},{"type":15,"tag":221,"props":1036,"children":1037},{"style":240},[1038],{"type":20,"value":1039}," Block",{"type":15,"tag":221,"props":1041,"children":1042},{"style":234},[1043],{"type":20,"value":1044},"();\n",{"type":15,"tag":221,"props":1046,"children":1048},{"class":223,"line":1047},30,[1049,1054,1058,1062,1066],{"type":15,"tag":221,"props":1050,"children":1051},{"style":234},[1052],{"type":20,"value":1053},"    private Block header ",{"type":15,"tag":221,"props":1055,"children":1056},{"style":228},[1057],{"type":20,"value":253},{"type":15,"tag":221,"props":1059,"children":1060},{"style":395},[1061],{"type":20,"value":999},{"type":15,"tag":221,"props":1063,"children":1064},{"style":240},[1065],{"type":20,"value":1039},{"type":15,"tag":221,"props":1067,"children":1068},{"style":234},[1069],{"type":20,"value":1044},{"type":15,"tag":221,"props":1071,"children":1073},{"class":223,"line":1072},31,[1074],{"type":15,"tag":221,"props":1075,"children":1076},{"style":234},[1077],{"type":20,"value":1078},"    private ITextTemplatingEngineHost host;\n",{"type":15,"tag":221,"props":1080,"children":1082},{"class":223,"line":1081},32,[1083],{"type":15,"tag":221,"props":1084,"children":1085},{"style":234},[1086],{"type":20,"value":1087},"    private StringBuilder template;\n",{"type":15,"tag":221,"props":1089,"children":1091},{"class":223,"line":1090},33,[1092,1097,1101,1106,1110,1115,1119,1123,1127,1131,1135],{"type":15,"tag":221,"props":1093,"children":1094},{"style":234},[1095],{"type":20,"value":1096},"    protected List",{"type":15,"tag":221,"props":1098,"children":1099},{"style":228},[1100],{"type":20,"value":231},{"type":15,"tag":221,"props":1102,"children":1103},{"style":234},[1104],{"type":20,"value":1105},"String",{"type":15,"tag":221,"props":1107,"children":1108},{"style":228},[1109],{"type":20,"value":985},{"type":15,"tag":221,"props":1111,"children":1112},{"style":234},[1113],{"type":20,"value":1114}," generatedFileNames ",{"type":15,"tag":221,"props":1116,"children":1117},{"style":228},[1118],{"type":20,"value":253},{"type":15,"tag":221,"props":1120,"children":1121},{"style":395},[1122],{"type":20,"value":999},{"type":15,"tag":221,"props":1124,"children":1125},{"style":240},[1126],{"type":20,"value":1004},{"type":15,"tag":221,"props":1128,"children":1129},{"style":234},[1130],{"type":20,"value":231},{"type":15,"tag":221,"props":1132,"children":1133},{"style":240},[1134],{"type":20,"value":1105},{"type":15,"tag":221,"props":1136,"children":1137},{"style":234},[1138],{"type":20,"value":1017},{"type":15,"tag":221,"props":1140,"children":1142},{"class":223,"line":1141},34,[1143],{"type":15,"tag":221,"props":1144,"children":1145},{"emptyLinePlaceholder":511},[1146],{"type":20,"value":514},{"type":15,"tag":221,"props":1148,"children":1150},{"class":223,"line":1149},35,[1151,1156,1161],{"type":15,"tag":221,"props":1152,"children":1153},{"style":234},[1154],{"type":20,"value":1155},"    public static Manager ",{"type":15,"tag":221,"props":1157,"children":1158},{"style":353},[1159],{"type":20,"value":1160},"Create",{"type":15,"tag":221,"props":1162,"children":1163},{"style":234},[1164],{"type":20,"value":1165},"(ITextTemplatingEngineHost host, StringBuilder template) {\n",{"type":15,"tag":221,"props":1167,"children":1169},{"class":223,"line":1168},36,[1170,1175,1180,1185,1190,1195,1200,1204,1209,1214,1219,1223,1228],{"type":15,"tag":221,"props":1171,"children":1172},{"style":353},[1173],{"type":20,"value":1174},"        return",{"type":15,"tag":221,"props":1176,"children":1177},{"style":234},[1178],{"type":20,"value":1179}," (host ",{"type":15,"tag":221,"props":1181,"children":1182},{"style":395},[1183],{"type":20,"value":1184},"is",{"type":15,"tag":221,"props":1186,"children":1187},{"style":240},[1188],{"type":20,"value":1189}," IServiceProvider",{"type":15,"tag":221,"props":1191,"children":1192},{"style":234},[1193],{"type":20,"value":1194},") ",{"type":15,"tag":221,"props":1196,"children":1197},{"style":228},[1198],{"type":20,"value":1199},"?",{"type":15,"tag":221,"props":1201,"children":1202},{"style":395},[1203],{"type":20,"value":999},{"type":15,"tag":221,"props":1205,"children":1206},{"style":240},[1207],{"type":20,"value":1208}," VSManager",{"type":15,"tag":221,"props":1210,"children":1211},{"style":234},[1212],{"type":20,"value":1213},"(host, template) ",{"type":15,"tag":221,"props":1215,"children":1216},{"style":228},[1217],{"type":20,"value":1218},":",{"type":15,"tag":221,"props":1220,"children":1221},{"style":395},[1222],{"type":20,"value":999},{"type":15,"tag":221,"props":1224,"children":1225},{"style":240},[1226],{"type":20,"value":1227}," Manager",{"type":15,"tag":221,"props":1229,"children":1230},{"style":234},[1231],{"type":20,"value":1232},"(host, template);\n",{"type":15,"tag":221,"props":1234,"children":1236},{"class":223,"line":1235},37,[1237],{"type":15,"tag":221,"props":1238,"children":1239},{"style":234},[1240],{"type":20,"value":945},{"type":15,"tag":221,"props":1242,"children":1244},{"class":223,"line":1243},38,[1245],{"type":15,"tag":221,"props":1246,"children":1247},{"emptyLinePlaceholder":511},[1248],{"type":20,"value":514},{"type":15,"tag":221,"props":1250,"children":1252},{"class":223,"line":1251},39,[1253,1258,1263,1268],{"type":15,"tag":221,"props":1254,"children":1255},{"style":234},[1256],{"type":20,"value":1257},"    public ",{"type":15,"tag":221,"props":1259,"children":1260},{"style":928},[1261],{"type":20,"value":1262},"void",{"type":15,"tag":221,"props":1264,"children":1265},{"style":353},[1266],{"type":20,"value":1267}," StartNewFile",{"type":15,"tag":221,"props":1269,"children":1270},{"style":234},[1271],{"type":20,"value":1272},"(String name) {\n",{"type":15,"tag":221,"props":1274,"children":1276},{"class":223,"line":1275},40,[1277,1282,1287,1292,1297],{"type":15,"tag":221,"props":1278,"children":1279},{"style":353},[1280],{"type":20,"value":1281},"        if",{"type":15,"tag":221,"props":1283,"children":1284},{"style":234},[1285],{"type":20,"value":1286}," (name ",{"type":15,"tag":221,"props":1288,"children":1289},{"style":228},[1290],{"type":20,"value":1291},"==",{"type":15,"tag":221,"props":1293,"children":1294},{"style":578},[1295],{"type":20,"value":1296}," null",{"type":15,"tag":221,"props":1298,"children":1299},{"style":234},[1300],{"type":20,"value":1301},")\n",{"type":15,"tag":221,"props":1303,"children":1305},{"class":223,"line":1304},41,[1306,1311,1315,1320,1324,1328,1333,1337],{"type":15,"tag":221,"props":1307,"children":1308},{"style":395},[1309],{"type":20,"value":1310},"            throw",{"type":15,"tag":221,"props":1312,"children":1313},{"style":395},[1314],{"type":20,"value":999},{"type":15,"tag":221,"props":1316,"children":1317},{"style":240},[1318],{"type":20,"value":1319}," ArgumentNullException",{"type":15,"tag":221,"props":1321,"children":1322},{"style":234},[1323],{"type":20,"value":361},{"type":15,"tag":221,"props":1325,"children":1326},{"style":256},[1327],{"type":20,"value":259},{"type":15,"tag":221,"props":1329,"children":1330},{"style":262},[1331],{"type":20,"value":1332},"name",{"type":15,"tag":221,"props":1334,"children":1335},{"style":256},[1336],{"type":20,"value":259},{"type":15,"tag":221,"props":1338,"children":1339},{"style":234},[1340],{"type":20,"value":1341},");\n",{"type":15,"tag":221,"props":1343,"children":1345},{"class":223,"line":1344},42,[1346,1351,1355,1359,1363,1368,1372],{"type":15,"tag":221,"props":1347,"children":1348},{"style":234},[1349],{"type":20,"value":1350},"        CurrentBlock ",{"type":15,"tag":221,"props":1352,"children":1353},{"style":228},[1354],{"type":20,"value":253},{"type":15,"tag":221,"props":1356,"children":1357},{"style":395},[1358],{"type":20,"value":999},{"type":15,"tag":221,"props":1360,"children":1361},{"style":240},[1362],{"type":20,"value":1039},{"type":15,"tag":221,"props":1364,"children":1365},{"style":234},[1366],{"type":20,"value":1367}," { Name ",{"type":15,"tag":221,"props":1369,"children":1370},{"style":228},[1371],{"type":20,"value":253},{"type":15,"tag":221,"props":1373,"children":1374},{"style":234},[1375],{"type":20,"value":1376}," name };\n",{"type":15,"tag":221,"props":1378,"children":1380},{"class":223,"line":1379},43,[1381],{"type":15,"tag":221,"props":1382,"children":1383},{"style":234},[1384],{"type":20,"value":945},{"type":15,"tag":221,"props":1386,"children":1388},{"class":223,"line":1387},44,[1389],{"type":15,"tag":221,"props":1390,"children":1391},{"emptyLinePlaceholder":511},[1392],{"type":20,"value":514},{"type":15,"tag":221,"props":1394,"children":1396},{"class":223,"line":1395},45,[1397,1401,1405,1410],{"type":15,"tag":221,"props":1398,"children":1399},{"style":234},[1400],{"type":20,"value":1257},{"type":15,"tag":221,"props":1402,"children":1403},{"style":928},[1404],{"type":20,"value":1262},{"type":15,"tag":221,"props":1406,"children":1407},{"style":353},[1408],{"type":20,"value":1409}," StartFooter",{"type":15,"tag":221,"props":1411,"children":1412},{"style":234},[1413],{"type":20,"value":1414},"() {\n",{"type":15,"tag":221,"props":1416,"children":1418},{"class":223,"line":1417},46,[1419,1423,1427],{"type":15,"tag":221,"props":1420,"children":1421},{"style":234},[1422],{"type":20,"value":1350},{"type":15,"tag":221,"props":1424,"children":1425},{"style":228},[1426],{"type":20,"value":253},{"type":15,"tag":221,"props":1428,"children":1429},{"style":234},[1430],{"type":20,"value":1431}," footer;\n",{"type":15,"tag":221,"props":1433,"children":1435},{"class":223,"line":1434},47,[1436],{"type":15,"tag":221,"props":1437,"children":1438},{"style":234},[1439],{"type":20,"value":945},{"type":15,"tag":221,"props":1441,"children":1443},{"class":223,"line":1442},48,[1444],{"type":15,"tag":221,"props":1445,"children":1446},{"emptyLinePlaceholder":511},[1447],{"type":20,"value":514},{"type":15,"tag":221,"props":1449,"children":1451},{"class":223,"line":1450},49,[1452,1456,1460,1465],{"type":15,"tag":221,"props":1453,"children":1454},{"style":234},[1455],{"type":20,"value":1257},{"type":15,"tag":221,"props":1457,"children":1458},{"style":928},[1459],{"type":20,"value":1262},{"type":15,"tag":221,"props":1461,"children":1462},{"style":353},[1463],{"type":20,"value":1464}," StartHeader",{"type":15,"tag":221,"props":1466,"children":1467},{"style":234},[1468],{"type":20,"value":1414},{"type":15,"tag":221,"props":1470,"children":1472},{"class":223,"line":1471},50,[1473,1477,1481],{"type":15,"tag":221,"props":1474,"children":1475},{"style":234},[1476],{"type":20,"value":1350},{"type":15,"tag":221,"props":1478,"children":1479},{"style":228},[1480],{"type":20,"value":253},{"type":15,"tag":221,"props":1482,"children":1483},{"style":234},[1484],{"type":20,"value":1485}," header;\n",{"type":15,"tag":221,"props":1487,"children":1489},{"class":223,"line":1488},51,[1490],{"type":15,"tag":221,"props":1491,"children":1492},{"style":234},[1493],{"type":20,"value":945},{"type":15,"tag":221,"props":1495,"children":1497},{"class":223,"line":1496},52,[1498],{"type":15,"tag":221,"props":1499,"children":1500},{"emptyLinePlaceholder":511},[1501],{"type":20,"value":514},{"type":15,"tag":221,"props":1503,"children":1505},{"class":223,"line":1504},53,[1506,1510,1514,1519],{"type":15,"tag":221,"props":1507,"children":1508},{"style":234},[1509],{"type":20,"value":1257},{"type":15,"tag":221,"props":1511,"children":1512},{"style":928},[1513],{"type":20,"value":1262},{"type":15,"tag":221,"props":1515,"children":1516},{"style":353},[1517],{"type":20,"value":1518}," EndBlock",{"type":15,"tag":221,"props":1520,"children":1521},{"style":234},[1522],{"type":20,"value":1414},{"type":15,"tag":221,"props":1524,"children":1526},{"class":223,"line":1525},54,[1527,1531,1536,1540,1544],{"type":15,"tag":221,"props":1528,"children":1529},{"style":353},[1530],{"type":20,"value":1281},{"type":15,"tag":221,"props":1532,"children":1533},{"style":234},[1534],{"type":20,"value":1535}," (CurrentBlock ",{"type":15,"tag":221,"props":1537,"children":1538},{"style":228},[1539],{"type":20,"value":1291},{"type":15,"tag":221,"props":1541,"children":1542},{"style":578},[1543],{"type":20,"value":1296},{"type":15,"tag":221,"props":1545,"children":1546},{"style":234},[1547],{"type":20,"value":1301},{"type":15,"tag":221,"props":1549,"children":1551},{"class":223,"line":1550},55,[1552],{"type":15,"tag":221,"props":1553,"children":1554},{"style":234},[1555],{"type":20,"value":1556},"            return;\n",{"type":15,"tag":221,"props":1558,"children":1560},{"class":223,"line":1559},56,[1561,1566,1572,1577,1582,1586,1591,1596,1601],{"type":15,"tag":221,"props":1562,"children":1563},{"style":234},[1564],{"type":20,"value":1565},"        CurrentBlock.",{"type":15,"tag":221,"props":1567,"children":1569},{"style":1568},"--shiki-default:#35A77C;--shiki-dark:#F8F8F2",[1570],{"type":20,"value":1571},"Length",{"type":15,"tag":221,"props":1573,"children":1574},{"style":228},[1575],{"type":20,"value":1576}," =",{"type":15,"tag":221,"props":1578,"children":1579},{"style":234},[1580],{"type":20,"value":1581}," template.",{"type":15,"tag":221,"props":1583,"children":1584},{"style":1568},[1585],{"type":20,"value":1571},{"type":15,"tag":221,"props":1587,"children":1588},{"style":228},[1589],{"type":20,"value":1590}," -",{"type":15,"tag":221,"props":1592,"children":1593},{"style":234},[1594],{"type":20,"value":1595}," CurrentBlock.",{"type":15,"tag":221,"props":1597,"children":1598},{"style":1568},[1599],{"type":20,"value":1600},"Start",{"type":15,"tag":221,"props":1602,"children":1603},{"style":234},[1604],{"type":20,"value":504},{"type":15,"tag":221,"props":1606,"children":1608},{"class":223,"line":1607},57,[1609,1613,1617,1622,1627,1632,1637,1641],{"type":15,"tag":221,"props":1610,"children":1611},{"style":353},[1612],{"type":20,"value":1281},{"type":15,"tag":221,"props":1614,"children":1615},{"style":234},[1616],{"type":20,"value":1535},{"type":15,"tag":221,"props":1618,"children":1619},{"style":228},[1620],{"type":20,"value":1621},"!=",{"type":15,"tag":221,"props":1623,"children":1624},{"style":234},[1625],{"type":20,"value":1626}," header ",{"type":15,"tag":221,"props":1628,"children":1629},{"style":228},[1630],{"type":20,"value":1631},"&&",{"type":15,"tag":221,"props":1633,"children":1634},{"style":234},[1635],{"type":20,"value":1636}," CurrentBlock ",{"type":15,"tag":221,"props":1638,"children":1639},{"style":228},[1640],{"type":20,"value":1621},{"type":15,"tag":221,"props":1642,"children":1643},{"style":234},[1644],{"type":20,"value":1645}," footer)\n",{"type":15,"tag":221,"props":1647,"children":1649},{"class":223,"line":1648},58,[1650,1655,1660],{"type":15,"tag":221,"props":1651,"children":1652},{"style":234},[1653],{"type":20,"value":1654},"            files.",{"type":15,"tag":221,"props":1656,"children":1657},{"style":353},[1658],{"type":20,"value":1659},"Add",{"type":15,"tag":221,"props":1661,"children":1662},{"style":234},[1663],{"type":20,"value":1664},"(CurrentBlock);\n",{"type":15,"tag":221,"props":1666,"children":1668},{"class":223,"line":1667},59,[1669,1674,1678,1682],{"type":15,"tag":221,"props":1670,"children":1671},{"style":234},[1672],{"type":20,"value":1673},"        currentBlock ",{"type":15,"tag":221,"props":1675,"children":1676},{"style":228},[1677],{"type":20,"value":253},{"type":15,"tag":221,"props":1679,"children":1680},{"style":578},[1681],{"type":20,"value":1296},{"type":15,"tag":221,"props":1683,"children":1684},{"style":234},[1685],{"type":20,"value":504},{"type":15,"tag":221,"props":1687,"children":1689},{"class":223,"line":1688},60,[1690],{"type":15,"tag":221,"props":1691,"children":1692},{"style":234},[1693],{"type":20,"value":945},{"type":15,"tag":221,"props":1695,"children":1697},{"class":223,"line":1696},61,[1698],{"type":15,"tag":221,"props":1699,"children":1700},{"emptyLinePlaceholder":511},[1701],{"type":20,"value":514},{"type":15,"tag":221,"props":1703,"children":1705},{"class":223,"line":1704},62,[1706,1711,1715,1720,1724,1729],{"type":15,"tag":221,"props":1707,"children":1708},{"style":234},[1709],{"type":20,"value":1710},"    public virtual ",{"type":15,"tag":221,"props":1712,"children":1713},{"style":928},[1714],{"type":20,"value":1262},{"type":15,"tag":221,"props":1716,"children":1717},{"style":353},[1718],{"type":20,"value":1719}," Process",{"type":15,"tag":221,"props":1721,"children":1722},{"style":234},[1723],{"type":20,"value":361},{"type":15,"tag":221,"props":1725,"children":1726},{"style":928},[1727],{"type":20,"value":1728},"bool",{"type":15,"tag":221,"props":1730,"children":1731},{"style":234},[1732],{"type":20,"value":1733}," split) {\n",{"type":15,"tag":221,"props":1735,"children":1737},{"class":223,"line":1736},63,[1738,1742],{"type":15,"tag":221,"props":1739,"children":1740},{"style":353},[1741],{"type":20,"value":1281},{"type":15,"tag":221,"props":1743,"children":1744},{"style":234},[1745],{"type":20,"value":1746}," (split) {\n",{"type":15,"tag":221,"props":1748,"children":1750},{"class":223,"line":1749},64,[1751,1756],{"type":15,"tag":221,"props":1752,"children":1753},{"style":353},[1754],{"type":20,"value":1755},"            EndBlock",{"type":15,"tag":221,"props":1757,"children":1758},{"style":234},[1759],{"type":20,"value":1044},{"type":15,"tag":221,"props":1761,"children":1763},{"class":223,"line":1762},65,[1764,1769,1773,1777,1782,1787,1791,1796,1800],{"type":15,"tag":221,"props":1765,"children":1766},{"style":234},[1767],{"type":20,"value":1768},"            String headerText ",{"type":15,"tag":221,"props":1770,"children":1771},{"style":228},[1772],{"type":20,"value":253},{"type":15,"tag":221,"props":1774,"children":1775},{"style":234},[1776],{"type":20,"value":1581},{"type":15,"tag":221,"props":1778,"children":1779},{"style":353},[1780],{"type":20,"value":1781},"ToString",{"type":15,"tag":221,"props":1783,"children":1784},{"style":234},[1785],{"type":20,"value":1786},"(header.",{"type":15,"tag":221,"props":1788,"children":1789},{"style":1568},[1790],{"type":20,"value":1600},{"type":15,"tag":221,"props":1792,"children":1793},{"style":234},[1794],{"type":20,"value":1795},", header.",{"type":15,"tag":221,"props":1797,"children":1798},{"style":1568},[1799],{"type":20,"value":1571},{"type":15,"tag":221,"props":1801,"children":1802},{"style":234},[1803],{"type":20,"value":1341},{"type":15,"tag":221,"props":1805,"children":1807},{"class":223,"line":1806},66,[1808,1813,1817,1821,1825,1830,1834,1839,1843],{"type":15,"tag":221,"props":1809,"children":1810},{"style":234},[1811],{"type":20,"value":1812},"            String footerText ",{"type":15,"tag":221,"props":1814,"children":1815},{"style":228},[1816],{"type":20,"value":253},{"type":15,"tag":221,"props":1818,"children":1819},{"style":234},[1820],{"type":20,"value":1581},{"type":15,"tag":221,"props":1822,"children":1823},{"style":353},[1824],{"type":20,"value":1781},{"type":15,"tag":221,"props":1826,"children":1827},{"style":234},[1828],{"type":20,"value":1829},"(footer.",{"type":15,"tag":221,"props":1831,"children":1832},{"style":1568},[1833],{"type":20,"value":1600},{"type":15,"tag":221,"props":1835,"children":1836},{"style":234},[1837],{"type":20,"value":1838},", footer.",{"type":15,"tag":221,"props":1840,"children":1841},{"style":1568},[1842],{"type":20,"value":1571},{"type":15,"tag":221,"props":1844,"children":1845},{"style":234},[1846],{"type":20,"value":1341},{"type":15,"tag":221,"props":1848,"children":1850},{"class":223,"line":1849},67,[1851,1856,1860,1865,1870,1875,1880],{"type":15,"tag":221,"props":1852,"children":1853},{"style":234},[1854],{"type":20,"value":1855},"            String outputPath ",{"type":15,"tag":221,"props":1857,"children":1858},{"style":228},[1859],{"type":20,"value":253},{"type":15,"tag":221,"props":1861,"children":1862},{"style":234},[1863],{"type":20,"value":1864}," Path.",{"type":15,"tag":221,"props":1866,"children":1867},{"style":353},[1868],{"type":20,"value":1869},"GetDirectoryName",{"type":15,"tag":221,"props":1871,"children":1872},{"style":234},[1873],{"type":20,"value":1874},"(host.",{"type":15,"tag":221,"props":1876,"children":1877},{"style":1568},[1878],{"type":20,"value":1879},"TemplateFile",{"type":15,"tag":221,"props":1881,"children":1882},{"style":234},[1883],{"type":20,"value":1341},{"type":15,"tag":221,"props":1885,"children":1887},{"class":223,"line":1886},68,[1888,1892,1897],{"type":15,"tag":221,"props":1889,"children":1890},{"style":234},[1891],{"type":20,"value":1654},{"type":15,"tag":221,"props":1893,"children":1894},{"style":353},[1895],{"type":20,"value":1896},"Reverse",{"type":15,"tag":221,"props":1898,"children":1899},{"style":234},[1900],{"type":20,"value":1044},{"type":15,"tag":221,"props":1902,"children":1904},{"class":223,"line":1903},69,[1905,1910,1915,1920],{"type":15,"tag":221,"props":1906,"children":1907},{"style":353},[1908],{"type":20,"value":1909},"            foreach",{"type":15,"tag":221,"props":1911,"children":1912},{"style":234},[1913],{"type":20,"value":1914},"(Block block ",{"type":15,"tag":221,"props":1916,"children":1917},{"style":228},[1918],{"type":20,"value":1919},"in",{"type":15,"tag":221,"props":1921,"children":1922},{"style":234},[1923],{"type":20,"value":1924}," files) {\n",{"type":15,"tag":221,"props":1926,"children":1928},{"class":223,"line":1927},70,[1929,1934,1938,1942,1947,1952,1957],{"type":15,"tag":221,"props":1930,"children":1931},{"style":234},[1932],{"type":20,"value":1933},"                String fileName ",{"type":15,"tag":221,"props":1935,"children":1936},{"style":228},[1937],{"type":20,"value":253},{"type":15,"tag":221,"props":1939,"children":1940},{"style":234},[1941],{"type":20,"value":1864},{"type":15,"tag":221,"props":1943,"children":1944},{"style":353},[1945],{"type":20,"value":1946},"Combine",{"type":15,"tag":221,"props":1948,"children":1949},{"style":234},[1950],{"type":20,"value":1951},"(outputPath, block.",{"type":15,"tag":221,"props":1953,"children":1954},{"style":1568},[1955],{"type":20,"value":1956},"Name",{"type":15,"tag":221,"props":1958,"children":1959},{"style":234},[1960],{"type":20,"value":1341},{"type":15,"tag":221,"props":1962,"children":1964},{"class":223,"line":1963},71,[1965,1970,1974,1979,1984,1988,1992,1997,2001,2006,2010,2014,2018],{"type":15,"tag":221,"props":1966,"children":1967},{"style":234},[1968],{"type":20,"value":1969},"                String content ",{"type":15,"tag":221,"props":1971,"children":1972},{"style":228},[1973],{"type":20,"value":253},{"type":15,"tag":221,"props":1975,"children":1976},{"style":234},[1977],{"type":20,"value":1978}," headerText ",{"type":15,"tag":221,"props":1980,"children":1981},{"style":228},[1982],{"type":20,"value":1983},"+",{"type":15,"tag":221,"props":1985,"children":1986},{"style":234},[1987],{"type":20,"value":1581},{"type":15,"tag":221,"props":1989,"children":1990},{"style":353},[1991],{"type":20,"value":1781},{"type":15,"tag":221,"props":1993,"children":1994},{"style":234},[1995],{"type":20,"value":1996},"(block.",{"type":15,"tag":221,"props":1998,"children":1999},{"style":1568},[2000],{"type":20,"value":1600},{"type":15,"tag":221,"props":2002,"children":2003},{"style":234},[2004],{"type":20,"value":2005},", block.",{"type":15,"tag":221,"props":2007,"children":2008},{"style":1568},[2009],{"type":20,"value":1571},{"type":15,"tag":221,"props":2011,"children":2012},{"style":234},[2013],{"type":20,"value":1194},{"type":15,"tag":221,"props":2015,"children":2016},{"style":228},[2017],{"type":20,"value":1983},{"type":15,"tag":221,"props":2019,"children":2020},{"style":234},[2021],{"type":20,"value":2022}," footerText;\n",{"type":15,"tag":221,"props":2024,"children":2026},{"class":223,"line":2025},72,[2027,2032,2036],{"type":15,"tag":221,"props":2028,"children":2029},{"style":234},[2030],{"type":20,"value":2031},"                generatedFileNames.",{"type":15,"tag":221,"props":2033,"children":2034},{"style":353},[2035],{"type":20,"value":1659},{"type":15,"tag":221,"props":2037,"children":2038},{"style":234},[2039],{"type":20,"value":2040},"(fileName);\n",{"type":15,"tag":221,"props":2042,"children":2044},{"class":223,"line":2043},73,[2045,2050],{"type":15,"tag":221,"props":2046,"children":2047},{"style":353},[2048],{"type":20,"value":2049},"                CreateFile",{"type":15,"tag":221,"props":2051,"children":2052},{"style":234},[2053],{"type":20,"value":2054},"(fileName, content);\n",{"type":15,"tag":221,"props":2056,"children":2058},{"class":223,"line":2057},74,[2059,2064,2069,2073,2077,2081,2085],{"type":15,"tag":221,"props":2060,"children":2061},{"style":234},[2062],{"type":20,"value":2063},"                template.",{"type":15,"tag":221,"props":2065,"children":2066},{"style":353},[2067],{"type":20,"value":2068},"Remove",{"type":15,"tag":221,"props":2070,"children":2071},{"style":234},[2072],{"type":20,"value":1996},{"type":15,"tag":221,"props":2074,"children":2075},{"style":1568},[2076],{"type":20,"value":1600},{"type":15,"tag":221,"props":2078,"children":2079},{"style":234},[2080],{"type":20,"value":2005},{"type":15,"tag":221,"props":2082,"children":2083},{"style":1568},[2084],{"type":20,"value":1571},{"type":15,"tag":221,"props":2086,"children":2087},{"style":234},[2088],{"type":20,"value":1341},{"type":15,"tag":221,"props":2090,"children":2092},{"class":223,"line":2091},75,[2093],{"type":15,"tag":221,"props":2094,"children":2095},{"style":234},[2096],{"type":20,"value":2097},"            }\n",{"type":15,"tag":221,"props":2099,"children":2101},{"class":223,"line":2100},76,[2102],{"type":15,"tag":221,"props":2103,"children":2104},{"style":234},[2105],{"type":20,"value":2106},"        }\n",{"type":15,"tag":221,"props":2108,"children":2110},{"class":223,"line":2109},77,[2111],{"type":15,"tag":221,"props":2112,"children":2113},{"style":234},[2114],{"type":20,"value":945},{"type":15,"tag":221,"props":2116,"children":2118},{"class":223,"line":2117},78,[2119],{"type":15,"tag":221,"props":2120,"children":2121},{"emptyLinePlaceholder":511},[2122],{"type":20,"value":514},{"type":15,"tag":221,"props":2124,"children":2126},{"class":223,"line":2125},79,[2127,2132,2136,2141],{"type":15,"tag":221,"props":2128,"children":2129},{"style":234},[2130],{"type":20,"value":2131},"    protected virtual ",{"type":15,"tag":221,"props":2133,"children":2134},{"style":928},[2135],{"type":20,"value":1262},{"type":15,"tag":221,"props":2137,"children":2138},{"style":353},[2139],{"type":20,"value":2140}," CreateFile",{"type":15,"tag":221,"props":2142,"children":2143},{"style":234},[2144],{"type":20,"value":2145},"(String fileName, String content) {\n",{"type":15,"tag":221,"props":2147,"children":2149},{"class":223,"line":2148},80,[2150,2154,2159,2164],{"type":15,"tag":221,"props":2151,"children":2152},{"style":353},[2153],{"type":20,"value":1281},{"type":15,"tag":221,"props":2155,"children":2156},{"style":234},[2157],{"type":20,"value":2158}," (",{"type":15,"tag":221,"props":2160,"children":2161},{"style":353},[2162],{"type":20,"value":2163},"IsFileContentDifferent",{"type":15,"tag":221,"props":2165,"children":2166},{"style":234},[2167],{"type":20,"value":2168},"(fileName, content))\n",{"type":15,"tag":221,"props":2170,"children":2172},{"class":223,"line":2171},81,[2173,2178,2183],{"type":15,"tag":221,"props":2174,"children":2175},{"style":234},[2176],{"type":20,"value":2177},"            File.",{"type":15,"tag":221,"props":2179,"children":2180},{"style":353},[2181],{"type":20,"value":2182},"WriteAllText",{"type":15,"tag":221,"props":2184,"children":2185},{"style":234},[2186],{"type":20,"value":2054},{"type":15,"tag":221,"props":2188,"children":2190},{"class":223,"line":2189},82,[2191],{"type":15,"tag":221,"props":2192,"children":2193},{"style":234},[2194],{"type":20,"value":945},{"type":15,"tag":221,"props":2196,"children":2198},{"class":223,"line":2197},83,[2199],{"type":15,"tag":221,"props":2200,"children":2201},{"emptyLinePlaceholder":511},[2202],{"type":20,"value":514},{"type":15,"tag":221,"props":2204,"children":2206},{"class":223,"line":2205},84,[2207,2212,2217],{"type":15,"tag":221,"props":2208,"children":2209},{"style":234},[2210],{"type":20,"value":2211},"    public virtual String ",{"type":15,"tag":221,"props":2213,"children":2214},{"style":353},[2215],{"type":20,"value":2216},"GetCustomToolNamespace",{"type":15,"tag":221,"props":2218,"children":2219},{"style":234},[2220],{"type":20,"value":2221},"(String fileName) {\n",{"type":15,"tag":221,"props":2223,"children":2225},{"class":223,"line":2224},85,[2226,2231,2236],{"type":15,"tag":221,"props":2227,"children":2228},{"style":234},[2229],{"type":20,"value":2230},"        return ",{"type":15,"tag":221,"props":2232,"children":2233},{"style":578},[2234],{"type":20,"value":2235},"null",{"type":15,"tag":221,"props":2237,"children":2238},{"style":234},[2239],{"type":20,"value":504},{"type":15,"tag":221,"props":2241,"children":2243},{"class":223,"line":2242},86,[2244],{"type":15,"tag":221,"props":2245,"children":2246},{"style":234},[2247],{"type":20,"value":945},{"type":15,"tag":221,"props":2249,"children":2251},{"class":223,"line":2250},87,[2252],{"type":15,"tag":221,"props":2253,"children":2254},{"emptyLinePlaceholder":511},[2255],{"type":20,"value":514},{"type":15,"tag":221,"props":2257,"children":2259},{"class":223,"line":2258},88,[2260],{"type":15,"tag":221,"props":2261,"children":2262},{"style":234},[2263],{"type":20,"value":2264},"    public virtual String DefaultProjectNamespace {\n",{"type":15,"tag":221,"props":2266,"children":2268},{"class":223,"line":2267},89,[2269,2274,2278],{"type":15,"tag":221,"props":2270,"children":2271},{"style":234},[2272],{"type":20,"value":2273},"        get { return ",{"type":15,"tag":221,"props":2275,"children":2276},{"style":578},[2277],{"type":20,"value":2235},{"type":15,"tag":221,"props":2279,"children":2280},{"style":234},[2281],{"type":20,"value":2282},"; }\n",{"type":15,"tag":221,"props":2284,"children":2286},{"class":223,"line":2285},90,[2287],{"type":15,"tag":221,"props":2288,"children":2289},{"style":234},[2290],{"type":20,"value":945},{"type":15,"tag":221,"props":2292,"children":2294},{"class":223,"line":2293},91,[2295],{"type":15,"tag":221,"props":2296,"children":2297},{"emptyLinePlaceholder":511},[2298],{"type":20,"value":514},{"type":15,"tag":221,"props":2300,"children":2302},{"class":223,"line":2301},92,[2303,2308,2312,2317],{"type":15,"tag":221,"props":2304,"children":2305},{"style":234},[2306],{"type":20,"value":2307},"    protected ",{"type":15,"tag":221,"props":2309,"children":2310},{"style":928},[2311],{"type":20,"value":1728},{"type":15,"tag":221,"props":2313,"children":2314},{"style":353},[2315],{"type":20,"value":2316}," IsFileContentDifferent",{"type":15,"tag":221,"props":2318,"children":2319},{"style":234},[2320],{"type":20,"value":2321},"(String fileName, String newContent) {\n",{"type":15,"tag":221,"props":2323,"children":2325},{"class":223,"line":2324},93,[2326,2330,2335,2340,2345,2350,2354,2359,2364,2368,2372],{"type":15,"tag":221,"props":2327,"children":2328},{"style":234},[2329],{"type":20,"value":2230},{"type":15,"tag":221,"props":2331,"children":2332},{"style":228},[2333],{"type":20,"value":2334},"!",{"type":15,"tag":221,"props":2336,"children":2337},{"style":234},[2338],{"type":20,"value":2339},"(File.",{"type":15,"tag":221,"props":2341,"children":2342},{"style":353},[2343],{"type":20,"value":2344},"Exists",{"type":15,"tag":221,"props":2346,"children":2347},{"style":234},[2348],{"type":20,"value":2349},"(fileName) ",{"type":15,"tag":221,"props":2351,"children":2352},{"style":228},[2353],{"type":20,"value":1631},{"type":15,"tag":221,"props":2355,"children":2356},{"style":234},[2357],{"type":20,"value":2358}," File.",{"type":15,"tag":221,"props":2360,"children":2361},{"style":353},[2362],{"type":20,"value":2363},"ReadAllText",{"type":15,"tag":221,"props":2365,"children":2366},{"style":234},[2367],{"type":20,"value":2349},{"type":15,"tag":221,"props":2369,"children":2370},{"style":228},[2371],{"type":20,"value":1291},{"type":15,"tag":221,"props":2373,"children":2374},{"style":234},[2375],{"type":20,"value":2376}," newContent);\n",{"type":15,"tag":221,"props":2378,"children":2380},{"class":223,"line":2379},94,[2381],{"type":15,"tag":221,"props":2382,"children":2383},{"style":234},[2384],{"type":20,"value":945},{"type":15,"tag":221,"props":2386,"children":2388},{"class":223,"line":2387},95,[2389],{"type":15,"tag":221,"props":2390,"children":2391},{"emptyLinePlaceholder":511},[2392],{"type":20,"value":514},{"type":15,"tag":221,"props":2394,"children":2396},{"class":223,"line":2395},96,[2397,2402,2407],{"type":15,"tag":221,"props":2398,"children":2399},{"style":234},[2400],{"type":20,"value":2401},"    private ",{"type":15,"tag":221,"props":2403,"children":2404},{"style":353},[2405],{"type":20,"value":2406},"Manager",{"type":15,"tag":221,"props":2408,"children":2409},{"style":234},[2410],{"type":20,"value":1165},{"type":15,"tag":221,"props":2412,"children":2414},{"class":223,"line":2413},97,[2415,2421,2426,2431,2435],{"type":15,"tag":221,"props":2416,"children":2418},{"style":2417},"--shiki-default:#DF69BA;--shiki-default-font-style:inherit;--shiki-dark:#BD93F9;--shiki-dark-font-style:italic",[2419],{"type":20,"value":2420},"        this",{"type":15,"tag":221,"props":2422,"children":2423},{"style":234},[2424],{"type":20,"value":2425},".",{"type":15,"tag":221,"props":2427,"children":2428},{"style":1568},[2429],{"type":20,"value":2430},"host",{"type":15,"tag":221,"props":2432,"children":2433},{"style":228},[2434],{"type":20,"value":1576},{"type":15,"tag":221,"props":2436,"children":2437},{"style":234},[2438],{"type":20,"value":2439}," host;\n",{"type":15,"tag":221,"props":2441,"children":2443},{"class":223,"line":2442},98,[2444,2448,2452,2456,2460],{"type":15,"tag":221,"props":2445,"children":2446},{"style":2417},[2447],{"type":20,"value":2420},{"type":15,"tag":221,"props":2449,"children":2450},{"style":234},[2451],{"type":20,"value":2425},{"type":15,"tag":221,"props":2453,"children":2454},{"style":1568},[2455],{"type":20,"value":243},{"type":15,"tag":221,"props":2457,"children":2458},{"style":228},[2459],{"type":20,"value":1576},{"type":15,"tag":221,"props":2461,"children":2462},{"style":234},[2463],{"type":20,"value":2464}," template;\n",{"type":15,"tag":221,"props":2466,"children":2468},{"class":223,"line":2467},99,[2469],{"type":15,"tag":221,"props":2470,"children":2471},{"style":234},[2472],{"type":20,"value":945},{"type":15,"tag":221,"props":2474,"children":2476},{"class":223,"line":2475},100,[2477],{"type":15,"tag":221,"props":2478,"children":2479},{"emptyLinePlaceholder":511},[2480],{"type":20,"value":514},{"type":15,"tag":221,"props":2482,"children":2484},{"class":223,"line":2483},101,[2485],{"type":15,"tag":221,"props":2486,"children":2487},{"style":234},[2488],{"type":20,"value":2489},"    private Block CurrentBlock {\n",{"type":15,"tag":221,"props":2491,"children":2493},{"class":223,"line":2492},102,[2494],{"type":15,"tag":221,"props":2495,"children":2496},{"style":234},[2497],{"type":20,"value":2498},"        get { return currentBlock; }\n",{"type":15,"tag":221,"props":2500,"children":2502},{"class":223,"line":2501},103,[2503],{"type":15,"tag":221,"props":2504,"children":2505},{"style":234},[2506],{"type":20,"value":2507},"        set {\n",{"type":15,"tag":221,"props":2509,"children":2511},{"class":223,"line":2510},104,[2512,2517,2521,2525,2529],{"type":15,"tag":221,"props":2513,"children":2514},{"style":353},[2515],{"type":20,"value":2516},"            if",{"type":15,"tag":221,"props":2518,"children":2519},{"style":234},[2520],{"type":20,"value":1535},{"type":15,"tag":221,"props":2522,"children":2523},{"style":228},[2524],{"type":20,"value":1621},{"type":15,"tag":221,"props":2526,"children":2527},{"style":578},[2528],{"type":20,"value":1296},{"type":15,"tag":221,"props":2530,"children":2531},{"style":234},[2532],{"type":20,"value":1301},{"type":15,"tag":221,"props":2534,"children":2536},{"class":223,"line":2535},105,[2537,2542],{"type":15,"tag":221,"props":2538,"children":2539},{"style":353},[2540],{"type":20,"value":2541},"                EndBlock",{"type":15,"tag":221,"props":2543,"children":2544},{"style":234},[2545],{"type":20,"value":1044},{"type":15,"tag":221,"props":2547,"children":2549},{"class":223,"line":2548},106,[2550,2554,2559,2563,2567],{"type":15,"tag":221,"props":2551,"children":2552},{"style":353},[2553],{"type":20,"value":2516},{"type":15,"tag":221,"props":2555,"children":2556},{"style":234},[2557],{"type":20,"value":2558}," (value ",{"type":15,"tag":221,"props":2560,"children":2561},{"style":228},[2562],{"type":20,"value":1621},{"type":15,"tag":221,"props":2564,"children":2565},{"style":578},[2566],{"type":20,"value":1296},{"type":15,"tag":221,"props":2568,"children":2569},{"style":234},[2570],{"type":20,"value":1301},{"type":15,"tag":221,"props":2572,"children":2574},{"class":223,"line":2573},107,[2575,2580,2584,2588,2592,2596],{"type":15,"tag":221,"props":2576,"children":2577},{"style":234},[2578],{"type":20,"value":2579},"                value.",{"type":15,"tag":221,"props":2581,"children":2582},{"style":1568},[2583],{"type":20,"value":1600},{"type":15,"tag":221,"props":2585,"children":2586},{"style":228},[2587],{"type":20,"value":1576},{"type":15,"tag":221,"props":2589,"children":2590},{"style":234},[2591],{"type":20,"value":1581},{"type":15,"tag":221,"props":2593,"children":2594},{"style":1568},[2595],{"type":20,"value":1571},{"type":15,"tag":221,"props":2597,"children":2598},{"style":234},[2599],{"type":20,"value":504},{"type":15,"tag":221,"props":2601,"children":2603},{"class":223,"line":2602},108,[2604,2609,2613],{"type":15,"tag":221,"props":2605,"children":2606},{"style":234},[2607],{"type":20,"value":2608},"            currentBlock ",{"type":15,"tag":221,"props":2610,"children":2611},{"style":228},[2612],{"type":20,"value":253},{"type":15,"tag":221,"props":2614,"children":2615},{"style":234},[2616],{"type":20,"value":2617}," value;\n",{"type":15,"tag":221,"props":2619,"children":2621},{"class":223,"line":2620},109,[2622],{"type":15,"tag":221,"props":2623,"children":2624},{"style":234},[2625],{"type":20,"value":2106},{"type":15,"tag":221,"props":2627,"children":2629},{"class":223,"line":2628},110,[2630],{"type":15,"tag":221,"props":2631,"children":2632},{"style":234},[2633],{"type":20,"value":945},{"type":15,"tag":221,"props":2635,"children":2637},{"class":223,"line":2636},111,[2638],{"type":15,"tag":221,"props":2639,"children":2640},{"emptyLinePlaceholder":511},[2641],{"type":20,"value":514},{"type":15,"tag":221,"props":2643,"children":2645},{"class":223,"line":2644},112,[2646,2651,2655],{"type":15,"tag":221,"props":2647,"children":2648},{"style":234},[2649],{"type":20,"value":2650},"    private class VSManager",{"type":15,"tag":221,"props":2652,"children":2653},{"style":228},[2654],{"type":20,"value":1218},{"type":15,"tag":221,"props":2656,"children":2657},{"style":234},[2658],{"type":20,"value":2659}," Manager {\n",{"type":15,"tag":221,"props":2661,"children":2663},{"class":223,"line":2662},113,[2664,2669,2674],{"type":15,"tag":221,"props":2665,"children":2666},{"style":234},[2667],{"type":20,"value":2668},"        private EnvDTE.",{"type":15,"tag":221,"props":2670,"children":2671},{"style":1568},[2672],{"type":20,"value":2673},"ProjectItem",{"type":15,"tag":221,"props":2675,"children":2676},{"style":234},[2677],{"type":20,"value":2678}," templateProjectItem;\n",{"type":15,"tag":221,"props":2680,"children":2682},{"class":223,"line":2681},114,[2683,2687,2692],{"type":15,"tag":221,"props":2684,"children":2685},{"style":234},[2686],{"type":20,"value":2668},{"type":15,"tag":221,"props":2688,"children":2689},{"style":1568},[2690],{"type":20,"value":2691},"DTE",{"type":15,"tag":221,"props":2693,"children":2694},{"style":234},[2695],{"type":20,"value":2696}," dte;\n",{"type":15,"tag":221,"props":2698,"children":2700},{"class":223,"line":2699},115,[2701,2706,2710,2714,2718],{"type":15,"tag":221,"props":2702,"children":2703},{"style":234},[2704],{"type":20,"value":2705},"        private Action",{"type":15,"tag":221,"props":2707,"children":2708},{"style":228},[2709],{"type":20,"value":231},{"type":15,"tag":221,"props":2711,"children":2712},{"style":234},[2713],{"type":20,"value":1105},{"type":15,"tag":221,"props":2715,"children":2716},{"style":228},[2717],{"type":20,"value":985},{"type":15,"tag":221,"props":2719,"children":2720},{"style":234},[2721],{"type":20,"value":2722}," checkOutAction;\n",{"type":15,"tag":221,"props":2724,"children":2726},{"class":223,"line":2725},116,[2727,2731,2735,2740,2744,2748,2753],{"type":15,"tag":221,"props":2728,"children":2729},{"style":234},[2730],{"type":20,"value":2705},{"type":15,"tag":221,"props":2732,"children":2733},{"style":228},[2734],{"type":20,"value":231},{"type":15,"tag":221,"props":2736,"children":2737},{"style":234},[2738],{"type":20,"value":2739},"IEnumerable",{"type":15,"tag":221,"props":2741,"children":2742},{"style":228},[2743],{"type":20,"value":231},{"type":15,"tag":221,"props":2745,"children":2746},{"style":234},[2747],{"type":20,"value":1105},{"type":15,"tag":221,"props":2749,"children":2750},{"style":228},[2751],{"type":20,"value":2752},">>",{"type":15,"tag":221,"props":2754,"children":2755},{"style":234},[2756],{"type":20,"value":2757}," projectSyncAction;\n",{"type":15,"tag":221,"props":2759,"children":2761},{"class":223,"line":2760},117,[2762],{"type":15,"tag":221,"props":2763,"children":2764},{"emptyLinePlaceholder":511},[2765],{"type":20,"value":514},{"type":15,"tag":221,"props":2767,"children":2769},{"class":223,"line":2768},118,[2770],{"type":15,"tag":221,"props":2771,"children":2772},{"style":234},[2773],{"type":20,"value":2774},"        public override String DefaultProjectNamespace {\n",{"type":15,"tag":221,"props":2776,"children":2778},{"class":223,"line":2777},119,[2779],{"type":15,"tag":221,"props":2780,"children":2781},{"style":234},[2782],{"type":20,"value":2783},"            get {\n",{"type":15,"tag":221,"props":2785,"children":2787},{"class":223,"line":2786},120,[2788,2793,2798,2802,2807,2811,2816,2820,2824,2829,2833,2838,2843,2847,2851],{"type":15,"tag":221,"props":2789,"children":2790},{"style":234},[2791],{"type":20,"value":2792},"                return templateProjectItem.",{"type":15,"tag":221,"props":2794,"children":2795},{"style":1568},[2796],{"type":20,"value":2797},"ContainingProject",{"type":15,"tag":221,"props":2799,"children":2800},{"style":234},[2801],{"type":20,"value":2425},{"type":15,"tag":221,"props":2803,"children":2804},{"style":1568},[2805],{"type":20,"value":2806},"Properties",{"type":15,"tag":221,"props":2808,"children":2809},{"style":234},[2810],{"type":20,"value":2425},{"type":15,"tag":221,"props":2812,"children":2813},{"style":353},[2814],{"type":20,"value":2815},"Item",{"type":15,"tag":221,"props":2817,"children":2818},{"style":234},[2819],{"type":20,"value":361},{"type":15,"tag":221,"props":2821,"children":2822},{"style":256},[2823],{"type":20,"value":259},{"type":15,"tag":221,"props":2825,"children":2826},{"style":262},[2827],{"type":20,"value":2828},"DefaultNamespace",{"type":15,"tag":221,"props":2830,"children":2831},{"style":256},[2832],{"type":20,"value":259},{"type":15,"tag":221,"props":2834,"children":2835},{"style":234},[2836],{"type":20,"value":2837},").",{"type":15,"tag":221,"props":2839,"children":2840},{"style":1568},[2841],{"type":20,"value":2842},"Value",{"type":15,"tag":221,"props":2844,"children":2845},{"style":234},[2846],{"type":20,"value":2425},{"type":15,"tag":221,"props":2848,"children":2849},{"style":353},[2850],{"type":20,"value":1781},{"type":15,"tag":221,"props":2852,"children":2853},{"style":234},[2854],{"type":20,"value":1044},{"type":15,"tag":221,"props":2856,"children":2858},{"class":223,"line":2857},121,[2859],{"type":15,"tag":221,"props":2860,"children":2861},{"style":234},[2862],{"type":20,"value":2097},{"type":15,"tag":221,"props":2864,"children":2866},{"class":223,"line":2865},122,[2867],{"type":15,"tag":221,"props":2868,"children":2869},{"style":234},[2870],{"type":20,"value":2106},{"type":15,"tag":221,"props":2872,"children":2874},{"class":223,"line":2873},123,[2875],{"type":15,"tag":221,"props":2876,"children":2877},{"emptyLinePlaceholder":511},[2878],{"type":20,"value":514},{"type":15,"tag":221,"props":2880,"children":2882},{"class":223,"line":2881},124,[2883,2888,2892,2896,2901],{"type":15,"tag":221,"props":2884,"children":2885},{"style":234},[2886],{"type":20,"value":2887},"        public override String ",{"type":15,"tag":221,"props":2889,"children":2890},{"style":353},[2891],{"type":20,"value":2216},{"type":15,"tag":221,"props":2893,"children":2894},{"style":234},[2895],{"type":20,"value":361},{"type":15,"tag":221,"props":2897,"children":2898},{"style":928},[2899],{"type":20,"value":2900},"string",{"type":15,"tag":221,"props":2902,"children":2903},{"style":234},[2904],{"type":20,"value":2905}," fileName) {\n",{"type":15,"tag":221,"props":2907,"children":2909},{"class":223,"line":2908},125,[2910,2915,2920,2924,2929,2934,2938,2942,2946,2950,2954,2959,2963,2967,2971,2975,2979],{"type":15,"tag":221,"props":2911,"children":2912},{"style":234},[2913],{"type":20,"value":2914},"            return dte.",{"type":15,"tag":221,"props":2916,"children":2917},{"style":1568},[2918],{"type":20,"value":2919},"Solution",{"type":15,"tag":221,"props":2921,"children":2922},{"style":234},[2923],{"type":20,"value":2425},{"type":15,"tag":221,"props":2925,"children":2926},{"style":353},[2927],{"type":20,"value":2928},"FindProjectItem",{"type":15,"tag":221,"props":2930,"children":2931},{"style":234},[2932],{"type":20,"value":2933},"(fileName).",{"type":15,"tag":221,"props":2935,"children":2936},{"style":1568},[2937],{"type":20,"value":2806},{"type":15,"tag":221,"props":2939,"children":2940},{"style":234},[2941],{"type":20,"value":2425},{"type":15,"tag":221,"props":2943,"children":2944},{"style":353},[2945],{"type":20,"value":2815},{"type":15,"tag":221,"props":2947,"children":2948},{"style":234},[2949],{"type":20,"value":361},{"type":15,"tag":221,"props":2951,"children":2952},{"style":256},[2953],{"type":20,"value":259},{"type":15,"tag":221,"props":2955,"children":2956},{"style":262},[2957],{"type":20,"value":2958},"CustomToolNamespace",{"type":15,"tag":221,"props":2960,"children":2961},{"style":256},[2962],{"type":20,"value":259},{"type":15,"tag":221,"props":2964,"children":2965},{"style":234},[2966],{"type":20,"value":2837},{"type":15,"tag":221,"props":2968,"children":2969},{"style":1568},[2970],{"type":20,"value":2842},{"type":15,"tag":221,"props":2972,"children":2973},{"style":234},[2974],{"type":20,"value":2425},{"type":15,"tag":221,"props":2976,"children":2977},{"style":353},[2978],{"type":20,"value":1781},{"type":15,"tag":221,"props":2980,"children":2981},{"style":234},[2982],{"type":20,"value":1044},{"type":15,"tag":221,"props":2984,"children":2986},{"class":223,"line":2985},126,[2987],{"type":15,"tag":221,"props":2988,"children":2989},{"style":234},[2990],{"type":20,"value":2106},{"type":15,"tag":221,"props":2992,"children":2994},{"class":223,"line":2993},127,[2995],{"type":15,"tag":221,"props":2996,"children":2997},{"emptyLinePlaceholder":511},[2998],{"type":20,"value":514},{"type":15,"tag":221,"props":3000,"children":3002},{"class":223,"line":3001},128,[3003,3008,3012,3016,3020,3024],{"type":15,"tag":221,"props":3004,"children":3005},{"style":234},[3006],{"type":20,"value":3007},"        public override ",{"type":15,"tag":221,"props":3009,"children":3010},{"style":928},[3011],{"type":20,"value":1262},{"type":15,"tag":221,"props":3013,"children":3014},{"style":353},[3015],{"type":20,"value":1719},{"type":15,"tag":221,"props":3017,"children":3018},{"style":234},[3019],{"type":20,"value":361},{"type":15,"tag":221,"props":3021,"children":3022},{"style":928},[3023],{"type":20,"value":1728},{"type":15,"tag":221,"props":3025,"children":3026},{"style":234},[3027],{"type":20,"value":1733},{"type":15,"tag":221,"props":3029,"children":3031},{"class":223,"line":3030},129,[3032,3036,3041,3046,3051,3055],{"type":15,"tag":221,"props":3033,"children":3034},{"style":353},[3035],{"type":20,"value":2516},{"type":15,"tag":221,"props":3037,"children":3038},{"style":234},[3039],{"type":20,"value":3040}," (templateProjectItem.",{"type":15,"tag":221,"props":3042,"children":3043},{"style":1568},[3044],{"type":20,"value":3045},"ProjectItems",{"type":15,"tag":221,"props":3047,"children":3048},{"style":228},[3049],{"type":20,"value":3050}," ==",{"type":15,"tag":221,"props":3052,"children":3053},{"style":578},[3054],{"type":20,"value":1296},{"type":15,"tag":221,"props":3056,"children":3057},{"style":234},[3058],{"type":20,"value":1301},{"type":15,"tag":221,"props":3060,"children":3062},{"class":223,"line":3061},130,[3063],{"type":15,"tag":221,"props":3064,"children":3065},{"style":234},[3066],{"type":20,"value":3067},"                return;\n",{"type":15,"tag":221,"props":3069,"children":3071},{"class":223,"line":3070},131,[3072,3078,3082,3086],{"type":15,"tag":221,"props":3073,"children":3075},{"style":3074},"--shiki-default:#5C6A72;--shiki-default-font-style:inherit;--shiki-dark:#BD93F9;--shiki-dark-font-style:italic",[3076],{"type":20,"value":3077},"            base",{"type":15,"tag":221,"props":3079,"children":3080},{"style":234},[3081],{"type":20,"value":2425},{"type":15,"tag":221,"props":3083,"children":3084},{"style":353},[3085],{"type":20,"value":544},{"type":15,"tag":221,"props":3087,"children":3088},{"style":234},[3089],{"type":20,"value":3090},"(split);\n",{"type":15,"tag":221,"props":3092,"children":3094},{"class":223,"line":3093},132,[3095,3100,3105,3110,3115,3120,3124,3129,3133],{"type":15,"tag":221,"props":3096,"children":3097},{"style":234},[3098],{"type":20,"value":3099},"            projectSyncAction.",{"type":15,"tag":221,"props":3101,"children":3102},{"style":353},[3103],{"type":20,"value":3104},"EndInvoke",{"type":15,"tag":221,"props":3106,"children":3107},{"style":234},[3108],{"type":20,"value":3109},"(projectSyncAction.",{"type":15,"tag":221,"props":3111,"children":3112},{"style":353},[3113],{"type":20,"value":3114},"BeginInvoke",{"type":15,"tag":221,"props":3116,"children":3117},{"style":234},[3118],{"type":20,"value":3119},"(generatedFileNames, ",{"type":15,"tag":221,"props":3121,"children":3122},{"style":578},[3123],{"type":20,"value":2235},{"type":15,"tag":221,"props":3125,"children":3126},{"style":234},[3127],{"type":20,"value":3128},", ",{"type":15,"tag":221,"props":3130,"children":3131},{"style":578},[3132],{"type":20,"value":2235},{"type":15,"tag":221,"props":3134,"children":3135},{"style":234},[3136],{"type":20,"value":3137},"));\n",{"type":15,"tag":221,"props":3139,"children":3141},{"class":223,"line":3140},133,[3142],{"type":15,"tag":221,"props":3143,"children":3144},{"style":234},[3145],{"type":20,"value":2106},{"type":15,"tag":221,"props":3147,"children":3149},{"class":223,"line":3148},134,[3150],{"type":15,"tag":221,"props":3151,"children":3152},{"emptyLinePlaceholder":511},[3153],{"type":20,"value":514},{"type":15,"tag":221,"props":3155,"children":3157},{"class":223,"line":3156},135,[3158,3163,3167,3171],{"type":15,"tag":221,"props":3159,"children":3160},{"style":234},[3161],{"type":20,"value":3162},"        protected override ",{"type":15,"tag":221,"props":3164,"children":3165},{"style":928},[3166],{"type":20,"value":1262},{"type":15,"tag":221,"props":3168,"children":3169},{"style":353},[3170],{"type":20,"value":2140},{"type":15,"tag":221,"props":3172,"children":3173},{"style":234},[3174],{"type":20,"value":2145},{"type":15,"tag":221,"props":3176,"children":3178},{"class":223,"line":3177},136,[3179,3183,3187,3191],{"type":15,"tag":221,"props":3180,"children":3181},{"style":353},[3182],{"type":20,"value":2516},{"type":15,"tag":221,"props":3184,"children":3185},{"style":234},[3186],{"type":20,"value":2158},{"type":15,"tag":221,"props":3188,"children":3189},{"style":353},[3190],{"type":20,"value":2163},{"type":15,"tag":221,"props":3192,"children":3193},{"style":234},[3194],{"type":20,"value":3195},"(fileName, content)) {\n",{"type":15,"tag":221,"props":3197,"children":3199},{"class":223,"line":3198},137,[3200,3205],{"type":15,"tag":221,"props":3201,"children":3202},{"style":353},[3203],{"type":20,"value":3204},"                CheckoutFileIfRequired",{"type":15,"tag":221,"props":3206,"children":3207},{"style":234},[3208],{"type":20,"value":2040},{"type":15,"tag":221,"props":3210,"children":3212},{"class":223,"line":3211},138,[3213,3218,3222],{"type":15,"tag":221,"props":3214,"children":3215},{"style":234},[3216],{"type":20,"value":3217},"                File.",{"type":15,"tag":221,"props":3219,"children":3220},{"style":353},[3221],{"type":20,"value":2182},{"type":15,"tag":221,"props":3223,"children":3224},{"style":234},[3225],{"type":20,"value":2054},{"type":15,"tag":221,"props":3227,"children":3229},{"class":223,"line":3228},139,[3230],{"type":15,"tag":221,"props":3231,"children":3232},{"style":234},[3233],{"type":20,"value":2097},{"type":15,"tag":221,"props":3235,"children":3237},{"class":223,"line":3236},140,[3238],{"type":15,"tag":221,"props":3239,"children":3240},{"style":234},[3241],{"type":20,"value":2106},{"type":15,"tag":221,"props":3243,"children":3245},{"class":223,"line":3244},141,[3246],{"type":15,"tag":221,"props":3247,"children":3248},{"emptyLinePlaceholder":511},[3249],{"type":20,"value":514},{"type":15,"tag":221,"props":3251,"children":3253},{"class":223,"line":3252},142,[3254,3259,3264],{"type":15,"tag":221,"props":3255,"children":3256},{"style":234},[3257],{"type":20,"value":3258},"        internal ",{"type":15,"tag":221,"props":3260,"children":3261},{"style":353},[3262],{"type":20,"value":3263},"VSManager",{"type":15,"tag":221,"props":3265,"children":3266},{"style":234},[3267],{"type":20,"value":3268},"(ITextTemplatingEngineHost host, StringBuilder template)\n",{"type":15,"tag":221,"props":3270,"children":3272},{"class":223,"line":3271},143,[3273,3278,3283],{"type":15,"tag":221,"props":3274,"children":3275},{"style":228},[3276],{"type":20,"value":3277},"            :",{"type":15,"tag":221,"props":3279,"children":3280},{"style":3074},[3281],{"type":20,"value":3282}," base",{"type":15,"tag":221,"props":3284,"children":3285},{"style":234},[3286],{"type":20,"value":3287},"(host, template) {\n",{"type":15,"tag":221,"props":3289,"children":3291},{"class":223,"line":3290},144,[3292,3297,3301,3305,3310],{"type":15,"tag":221,"props":3293,"children":3294},{"style":234},[3295],{"type":20,"value":3296},"            var hostServiceProvider ",{"type":15,"tag":221,"props":3298,"children":3299},{"style":228},[3300],{"type":20,"value":253},{"type":15,"tag":221,"props":3302,"children":3303},{"style":234},[3304],{"type":20,"value":2158},{"type":15,"tag":221,"props":3306,"children":3307},{"style":240},[3308],{"type":20,"value":3309},"IServiceProvider",{"type":15,"tag":221,"props":3311,"children":3312},{"style":234},[3313],{"type":20,"value":3314},") host;\n",{"type":15,"tag":221,"props":3316,"children":3318},{"class":223,"line":3317},145,[3319,3323,3328,3332,3336],{"type":15,"tag":221,"props":3320,"children":3321},{"style":353},[3322],{"type":20,"value":2516},{"type":15,"tag":221,"props":3324,"children":3325},{"style":234},[3326],{"type":20,"value":3327}," (hostServiceProvider ",{"type":15,"tag":221,"props":3329,"children":3330},{"style":228},[3331],{"type":20,"value":1291},{"type":15,"tag":221,"props":3333,"children":3334},{"style":578},[3335],{"type":20,"value":1296},{"type":15,"tag":221,"props":3337,"children":3338},{"style":234},[3339],{"type":20,"value":1301},{"type":15,"tag":221,"props":3341,"children":3343},{"class":223,"line":3342},146,[3344,3349,3353,3357,3361,3365,3370,3374],{"type":15,"tag":221,"props":3345,"children":3346},{"style":395},[3347],{"type":20,"value":3348},"                throw",{"type":15,"tag":221,"props":3350,"children":3351},{"style":395},[3352],{"type":20,"value":999},{"type":15,"tag":221,"props":3354,"children":3355},{"style":240},[3356],{"type":20,"value":1319},{"type":15,"tag":221,"props":3358,"children":3359},{"style":234},[3360],{"type":20,"value":361},{"type":15,"tag":221,"props":3362,"children":3363},{"style":256},[3364],{"type":20,"value":259},{"type":15,"tag":221,"props":3366,"children":3367},{"style":262},[3368],{"type":20,"value":3369},"Could not obtain IServiceProvider",{"type":15,"tag":221,"props":3371,"children":3372},{"style":256},[3373],{"type":20,"value":259},{"type":15,"tag":221,"props":3375,"children":3376},{"style":234},[3377],{"type":20,"value":1341},{"type":15,"tag":221,"props":3379,"children":3381},{"class":223,"line":3380},147,[3382,3387,3391,3395,3400,3404,3408,3413,3418,3422,3427,3431,3435,3439,3443],{"type":15,"tag":221,"props":3383,"children":3384},{"style":234},[3385],{"type":20,"value":3386},"            dte ",{"type":15,"tag":221,"props":3388,"children":3389},{"style":228},[3390],{"type":20,"value":253},{"type":15,"tag":221,"props":3392,"children":3393},{"style":234},[3394],{"type":20,"value":2158},{"type":15,"tag":221,"props":3396,"children":3397},{"style":240},[3398],{"type":20,"value":3399},"EnvDTE",{"type":15,"tag":221,"props":3401,"children":3402},{"style":234},[3403],{"type":20,"value":2425},{"type":15,"tag":221,"props":3405,"children":3406},{"style":240},[3407],{"type":20,"value":2691},{"type":15,"tag":221,"props":3409,"children":3410},{"style":234},[3411],{"type":20,"value":3412},") hostServiceProvider.",{"type":15,"tag":221,"props":3414,"children":3415},{"style":353},[3416],{"type":20,"value":3417},"GetService",{"type":15,"tag":221,"props":3419,"children":3420},{"style":234},[3421],{"type":20,"value":361},{"type":15,"tag":221,"props":3423,"children":3424},{"style":395},[3425],{"type":20,"value":3426},"typeof",{"type":15,"tag":221,"props":3428,"children":3429},{"style":234},[3430],{"type":20,"value":361},{"type":15,"tag":221,"props":3432,"children":3433},{"style":240},[3434],{"type":20,"value":3399},{"type":15,"tag":221,"props":3436,"children":3437},{"style":234},[3438],{"type":20,"value":2425},{"type":15,"tag":221,"props":3440,"children":3441},{"style":240},[3442],{"type":20,"value":2691},{"type":15,"tag":221,"props":3444,"children":3445},{"style":234},[3446],{"type":20,"value":3137},{"type":15,"tag":221,"props":3448,"children":3450},{"class":223,"line":3449},148,[3451,3455,3460,3464,3468],{"type":15,"tag":221,"props":3452,"children":3453},{"style":353},[3454],{"type":20,"value":2516},{"type":15,"tag":221,"props":3456,"children":3457},{"style":234},[3458],{"type":20,"value":3459}," (dte ",{"type":15,"tag":221,"props":3461,"children":3462},{"style":228},[3463],{"type":20,"value":1291},{"type":15,"tag":221,"props":3465,"children":3466},{"style":578},[3467],{"type":20,"value":1296},{"type":15,"tag":221,"props":3469,"children":3470},{"style":234},[3471],{"type":20,"value":1301},{"type":15,"tag":221,"props":3473,"children":3475},{"class":223,"line":3474},149,[3476,3480,3484,3488,3492,3496,3501,3505],{"type":15,"tag":221,"props":3477,"children":3478},{"style":395},[3479],{"type":20,"value":3348},{"type":15,"tag":221,"props":3481,"children":3482},{"style":395},[3483],{"type":20,"value":999},{"type":15,"tag":221,"props":3485,"children":3486},{"style":240},[3487],{"type":20,"value":1319},{"type":15,"tag":221,"props":3489,"children":3490},{"style":234},[3491],{"type":20,"value":361},{"type":15,"tag":221,"props":3493,"children":3494},{"style":256},[3495],{"type":20,"value":259},{"type":15,"tag":221,"props":3497,"children":3498},{"style":262},[3499],{"type":20,"value":3500},"Could not obtain DTE from host",{"type":15,"tag":221,"props":3502,"children":3503},{"style":256},[3504],{"type":20,"value":259},{"type":15,"tag":221,"props":3506,"children":3507},{"style":234},[3508],{"type":20,"value":1341},{"type":15,"tag":221,"props":3510,"children":3512},{"class":223,"line":3511},150,[3513,3518,3522,3527,3531,3535,3539,3543,3547],{"type":15,"tag":221,"props":3514,"children":3515},{"style":234},[3516],{"type":20,"value":3517},"            templateProjectItem ",{"type":15,"tag":221,"props":3519,"children":3520},{"style":228},[3521],{"type":20,"value":253},{"type":15,"tag":221,"props":3523,"children":3524},{"style":234},[3525],{"type":20,"value":3526}," dte.",{"type":15,"tag":221,"props":3528,"children":3529},{"style":1568},[3530],{"type":20,"value":2919},{"type":15,"tag":221,"props":3532,"children":3533},{"style":234},[3534],{"type":20,"value":2425},{"type":15,"tag":221,"props":3536,"children":3537},{"style":353},[3538],{"type":20,"value":2928},{"type":15,"tag":221,"props":3540,"children":3541},{"style":234},[3542],{"type":20,"value":1874},{"type":15,"tag":221,"props":3544,"children":3545},{"style":1568},[3546],{"type":20,"value":1879},{"type":15,"tag":221,"props":3548,"children":3549},{"style":234},[3550],{"type":20,"value":1341},{"type":15,"tag":221,"props":3552,"children":3554},{"class":223,"line":3553},151,[3555,3560,3564,3568,3572,3578,3582,3587,3591,3596,3600,3605],{"type":15,"tag":221,"props":3556,"children":3557},{"style":234},[3558],{"type":20,"value":3559},"            checkOutAction ",{"type":15,"tag":221,"props":3561,"children":3562},{"style":228},[3563],{"type":20,"value":253},{"type":15,"tag":221,"props":3565,"children":3566},{"style":234},[3567],{"type":20,"value":2158},{"type":15,"tag":221,"props":3569,"children":3570},{"style":240},[3571],{"type":20,"value":1105},{"type":15,"tag":221,"props":3573,"children":3575},{"style":3574},"--shiki-default:#5C6A72;--shiki-default-font-style:inherit;--shiki-dark:#FFB86C;--shiki-dark-font-style:italic",[3576],{"type":20,"value":3577}," fileName",{"type":15,"tag":221,"props":3579,"children":3580},{"style":234},[3581],{"type":20,"value":1194},{"type":15,"tag":221,"props":3583,"children":3584},{"style":228},[3585],{"type":20,"value":3586},"=>",{"type":15,"tag":221,"props":3588,"children":3589},{"style":234},[3590],{"type":20,"value":3526},{"type":15,"tag":221,"props":3592,"children":3593},{"style":1568},[3594],{"type":20,"value":3595},"SourceControl",{"type":15,"tag":221,"props":3597,"children":3598},{"style":234},[3599],{"type":20,"value":2425},{"type":15,"tag":221,"props":3601,"children":3602},{"style":353},[3603],{"type":20,"value":3604},"CheckOutItem",{"type":15,"tag":221,"props":3606,"children":3607},{"style":234},[3608],{"type":20,"value":2040},{"type":15,"tag":221,"props":3610,"children":3612},{"class":223,"line":3611},152,[3613,3618,3622,3626,3630,3634,3638,3643,3648,3652,3656,3661],{"type":15,"tag":221,"props":3614,"children":3615},{"style":234},[3616],{"type":20,"value":3617},"            projectSyncAction ",{"type":15,"tag":221,"props":3619,"children":3620},{"style":228},[3621],{"type":20,"value":253},{"type":15,"tag":221,"props":3623,"children":3624},{"style":234},[3625],{"type":20,"value":2158},{"type":15,"tag":221,"props":3627,"children":3628},{"style":240},[3629],{"type":20,"value":2739},{"type":15,"tag":221,"props":3631,"children":3632},{"style":234},[3633],{"type":20,"value":231},{"type":15,"tag":221,"props":3635,"children":3636},{"style":240},[3637],{"type":20,"value":1105},{"type":15,"tag":221,"props":3639,"children":3640},{"style":234},[3641],{"type":20,"value":3642},"> ",{"type":15,"tag":221,"props":3644,"children":3645},{"style":3574},[3646],{"type":20,"value":3647},"keepFileNames",{"type":15,"tag":221,"props":3649,"children":3650},{"style":234},[3651],{"type":20,"value":1194},{"type":15,"tag":221,"props":3653,"children":3654},{"style":228},[3655],{"type":20,"value":3586},{"type":15,"tag":221,"props":3657,"children":3658},{"style":353},[3659],{"type":20,"value":3660}," ProjectSync",{"type":15,"tag":221,"props":3662,"children":3663},{"style":234},[3664],{"type":20,"value":3665},"(templateProjectItem, keepFileNames);\n",{"type":15,"tag":221,"props":3667,"children":3669},{"class":223,"line":3668},153,[3670],{"type":15,"tag":221,"props":3671,"children":3672},{"style":234},[3673],{"type":20,"value":2106},{"type":15,"tag":221,"props":3675,"children":3677},{"class":223,"line":3676},154,[3678],{"type":15,"tag":221,"props":3679,"children":3680},{"emptyLinePlaceholder":511},[3681],{"type":20,"value":514},{"type":15,"tag":221,"props":3683,"children":3685},{"class":223,"line":3684},155,[3686,3691,3695,3699,3704,3708,3713,3717,3721,3725],{"type":15,"tag":221,"props":3687,"children":3688},{"style":234},[3689],{"type":20,"value":3690},"        private static ",{"type":15,"tag":221,"props":3692,"children":3693},{"style":928},[3694],{"type":20,"value":1262},{"type":15,"tag":221,"props":3696,"children":3697},{"style":353},[3698],{"type":20,"value":3660},{"type":15,"tag":221,"props":3700,"children":3701},{"style":234},[3702],{"type":20,"value":3703},"(EnvDTE.",{"type":15,"tag":221,"props":3705,"children":3706},{"style":1568},[3707],{"type":20,"value":2673},{"type":15,"tag":221,"props":3709,"children":3710},{"style":234},[3711],{"type":20,"value":3712}," templateProjectItem, IEnumerable",{"type":15,"tag":221,"props":3714,"children":3715},{"style":228},[3716],{"type":20,"value":231},{"type":15,"tag":221,"props":3718,"children":3719},{"style":234},[3720],{"type":20,"value":1105},{"type":15,"tag":221,"props":3722,"children":3723},{"style":228},[3724],{"type":20,"value":985},{"type":15,"tag":221,"props":3726,"children":3727},{"style":234},[3728],{"type":20,"value":3729}," keepFileNames) {\n",{"type":15,"tag":221,"props":3731,"children":3733},{"class":223,"line":3732},156,[3734,3739,3743,3747,3752,3756,3760],{"type":15,"tag":221,"props":3735,"children":3736},{"style":234},[3737],{"type":20,"value":3738},"            var keepFileNameSet ",{"type":15,"tag":221,"props":3740,"children":3741},{"style":228},[3742],{"type":20,"value":253},{"type":15,"tag":221,"props":3744,"children":3745},{"style":395},[3746],{"type":20,"value":999},{"type":15,"tag":221,"props":3748,"children":3749},{"style":240},[3750],{"type":20,"value":3751}," HashSet",{"type":15,"tag":221,"props":3753,"children":3754},{"style":234},[3755],{"type":20,"value":231},{"type":15,"tag":221,"props":3757,"children":3758},{"style":240},[3759],{"type":20,"value":1105},{"type":15,"tag":221,"props":3761,"children":3762},{"style":234},[3763],{"type":20,"value":3764},">(keepFileNames);\n",{"type":15,"tag":221,"props":3766,"children":3768},{"class":223,"line":3767},157,[3769,3774,3778,3782,3787,3791,3795,3799,3803,3807,3811],{"type":15,"tag":221,"props":3770,"children":3771},{"style":234},[3772],{"type":20,"value":3773},"            var projectFiles ",{"type":15,"tag":221,"props":3775,"children":3776},{"style":228},[3777],{"type":20,"value":253},{"type":15,"tag":221,"props":3779,"children":3780},{"style":395},[3781],{"type":20,"value":999},{"type":15,"tag":221,"props":3783,"children":3784},{"style":240},[3785],{"type":20,"value":3786}," Dictionary",{"type":15,"tag":221,"props":3788,"children":3789},{"style":234},[3790],{"type":20,"value":231},{"type":15,"tag":221,"props":3792,"children":3793},{"style":240},[3794],{"type":20,"value":1105},{"type":15,"tag":221,"props":3796,"children":3797},{"style":234},[3798],{"type":20,"value":3128},{"type":15,"tag":221,"props":3800,"children":3801},{"style":240},[3802],{"type":20,"value":3399},{"type":15,"tag":221,"props":3804,"children":3805},{"style":234},[3806],{"type":20,"value":2425},{"type":15,"tag":221,"props":3808,"children":3809},{"style":240},[3810],{"type":20,"value":2673},{"type":15,"tag":221,"props":3812,"children":3813},{"style":234},[3814],{"type":20,"value":1017},{"type":15,"tag":221,"props":3816,"children":3818},{"class":223,"line":3817},158,[3819,3824,3828,3832,3837,3842,3847,3851,3856,3861,3865,3870,3874,3878],{"type":15,"tag":221,"props":3820,"children":3821},{"style":234},[3822],{"type":20,"value":3823},"            var originalFilePrefix ",{"type":15,"tag":221,"props":3825,"children":3826},{"style":228},[3827],{"type":20,"value":253},{"type":15,"tag":221,"props":3829,"children":3830},{"style":234},[3831],{"type":20,"value":1864},{"type":15,"tag":221,"props":3833,"children":3834},{"style":353},[3835],{"type":20,"value":3836},"GetFileNameWithoutExtension",{"type":15,"tag":221,"props":3838,"children":3839},{"style":234},[3840],{"type":20,"value":3841},"(templateProjectItem.",{"type":15,"tag":221,"props":3843,"children":3844},{"style":353},[3845],{"type":20,"value":3846},"get_FileNames",{"type":15,"tag":221,"props":3848,"children":3849},{"style":234},[3850],{"type":20,"value":361},{"type":15,"tag":221,"props":3852,"children":3853},{"style":578},[3854],{"type":20,"value":3855},"0",{"type":15,"tag":221,"props":3857,"children":3858},{"style":234},[3859],{"type":20,"value":3860},")) ",{"type":15,"tag":221,"props":3862,"children":3863},{"style":228},[3864],{"type":20,"value":1983},{"type":15,"tag":221,"props":3866,"children":3867},{"style":256},[3868],{"type":20,"value":3869}," \"",{"type":15,"tag":221,"props":3871,"children":3872},{"style":262},[3873],{"type":20,"value":2425},{"type":15,"tag":221,"props":3875,"children":3876},{"style":256},[3877],{"type":20,"value":259},{"type":15,"tag":221,"props":3879,"children":3880},{"style":234},[3881],{"type":20,"value":504},{"type":15,"tag":221,"props":3883,"children":3885},{"class":223,"line":3884},159,[3886,3890,3894,3898,3903,3907,3912,3916],{"type":15,"tag":221,"props":3887,"children":3888},{"style":353},[3889],{"type":20,"value":1909},{"type":15,"tag":221,"props":3891,"children":3892},{"style":234},[3893],{"type":20,"value":3703},{"type":15,"tag":221,"props":3895,"children":3896},{"style":1568},[3897],{"type":20,"value":2673},{"type":15,"tag":221,"props":3899,"children":3900},{"style":234},[3901],{"type":20,"value":3902}," projectItem ",{"type":15,"tag":221,"props":3904,"children":3905},{"style":228},[3906],{"type":20,"value":1919},{"type":15,"tag":221,"props":3908,"children":3909},{"style":234},[3910],{"type":20,"value":3911}," templateProjectItem.",{"type":15,"tag":221,"props":3913,"children":3914},{"style":1568},[3915],{"type":20,"value":3045},{"type":15,"tag":221,"props":3917,"children":3918},{"style":234},[3919],{"type":20,"value":1301},{"type":15,"tag":221,"props":3921,"children":3923},{"class":223,"line":3922},160,[3924,3929,3933,3938,3942,3946,3950],{"type":15,"tag":221,"props":3925,"children":3926},{"style":234},[3927],{"type":20,"value":3928},"                projectFiles.",{"type":15,"tag":221,"props":3930,"children":3931},{"style":353},[3932],{"type":20,"value":1659},{"type":15,"tag":221,"props":3934,"children":3935},{"style":234},[3936],{"type":20,"value":3937},"(projectItem.",{"type":15,"tag":221,"props":3939,"children":3940},{"style":353},[3941],{"type":20,"value":3846},{"type":15,"tag":221,"props":3943,"children":3944},{"style":234},[3945],{"type":20,"value":361},{"type":15,"tag":221,"props":3947,"children":3948},{"style":578},[3949],{"type":20,"value":3855},{"type":15,"tag":221,"props":3951,"children":3952},{"style":234},[3953],{"type":20,"value":3954},"), projectItem);\n",{"type":15,"tag":221,"props":3956,"children":3958},{"class":223,"line":3957},161,[3959],{"type":15,"tag":221,"props":3960,"children":3961},{"emptyLinePlaceholder":511},[3962],{"type":20,"value":514},{"type":15,"tag":221,"props":3964,"children":3966},{"class":223,"line":3965},162,[3967],{"type":15,"tag":221,"props":3968,"children":3969},{"style":482},[3970],{"type":20,"value":3971},"            // Remove unused items from the project\n",{"type":15,"tag":221,"props":3973,"children":3975},{"class":223,"line":3974},163,[3976,3980,3985,3989],{"type":15,"tag":221,"props":3977,"children":3978},{"style":353},[3979],{"type":20,"value":1909},{"type":15,"tag":221,"props":3981,"children":3982},{"style":234},[3983],{"type":20,"value":3984},"(var pair ",{"type":15,"tag":221,"props":3986,"children":3987},{"style":228},[3988],{"type":20,"value":1919},{"type":15,"tag":221,"props":3990,"children":3991},{"style":234},[3992],{"type":20,"value":3993}," projectFiles)\n",{"type":15,"tag":221,"props":3995,"children":3997},{"class":223,"line":3996},164,[3998,4003,4007,4011,4016,4021,4026,4031,4035,4039,4044,4049,4053,4057,4061,4065,4069,4073,4077,4081,4085,4090],{"type":15,"tag":221,"props":3999,"children":4000},{"style":353},[4001],{"type":20,"value":4002},"                if",{"type":15,"tag":221,"props":4004,"children":4005},{"style":234},[4006],{"type":20,"value":2158},{"type":15,"tag":221,"props":4008,"children":4009},{"style":228},[4010],{"type":20,"value":2334},{"type":15,"tag":221,"props":4012,"children":4013},{"style":234},[4014],{"type":20,"value":4015},"keepFileNames.",{"type":15,"tag":221,"props":4017,"children":4018},{"style":353},[4019],{"type":20,"value":4020},"Contains",{"type":15,"tag":221,"props":4022,"children":4023},{"style":234},[4024],{"type":20,"value":4025},"(pair.",{"type":15,"tag":221,"props":4027,"children":4028},{"style":1568},[4029],{"type":20,"value":4030},"Key",{"type":15,"tag":221,"props":4032,"children":4033},{"style":234},[4034],{"type":20,"value":1194},{"type":15,"tag":221,"props":4036,"children":4037},{"style":228},[4038],{"type":20,"value":1631},{"type":15,"tag":221,"props":4040,"children":4041},{"style":228},[4042],{"type":20,"value":4043}," !",{"type":15,"tag":221,"props":4045,"children":4046},{"style":234},[4047],{"type":20,"value":4048},"(Path.",{"type":15,"tag":221,"props":4050,"children":4051},{"style":353},[4052],{"type":20,"value":3836},{"type":15,"tag":221,"props":4054,"children":4055},{"style":234},[4056],{"type":20,"value":4025},{"type":15,"tag":221,"props":4058,"children":4059},{"style":1568},[4060],{"type":20,"value":4030},{"type":15,"tag":221,"props":4062,"children":4063},{"style":234},[4064],{"type":20,"value":1194},{"type":15,"tag":221,"props":4066,"children":4067},{"style":228},[4068],{"type":20,"value":1983},{"type":15,"tag":221,"props":4070,"children":4071},{"style":256},[4072],{"type":20,"value":3869},{"type":15,"tag":221,"props":4074,"children":4075},{"style":262},[4076],{"type":20,"value":2425},{"type":15,"tag":221,"props":4078,"children":4079},{"style":256},[4080],{"type":20,"value":259},{"type":15,"tag":221,"props":4082,"children":4083},{"style":234},[4084],{"type":20,"value":2837},{"type":15,"tag":221,"props":4086,"children":4087},{"style":353},[4088],{"type":20,"value":4089},"StartsWith",{"type":15,"tag":221,"props":4091,"children":4092},{"style":234},[4093],{"type":20,"value":4094},"(originalFilePrefix))\n",{"type":15,"tag":221,"props":4096,"children":4098},{"class":223,"line":4097},165,[4099,4104,4108,4112,4117],{"type":15,"tag":221,"props":4100,"children":4101},{"style":234},[4102],{"type":20,"value":4103},"                    pair.",{"type":15,"tag":221,"props":4105,"children":4106},{"style":1568},[4107],{"type":20,"value":2842},{"type":15,"tag":221,"props":4109,"children":4110},{"style":234},[4111],{"type":20,"value":2425},{"type":15,"tag":221,"props":4113,"children":4114},{"style":353},[4115],{"type":20,"value":4116},"Delete",{"type":15,"tag":221,"props":4118,"children":4119},{"style":234},[4120],{"type":20,"value":1044},{"type":15,"tag":221,"props":4122,"children":4124},{"class":223,"line":4123},166,[4125],{"type":15,"tag":221,"props":4126,"children":4127},{"emptyLinePlaceholder":511},[4128],{"type":20,"value":514},{"type":15,"tag":221,"props":4130,"children":4132},{"class":223,"line":4131},167,[4133],{"type":15,"tag":221,"props":4134,"children":4135},{"style":482},[4136],{"type":20,"value":4137},"            // Add missing files to the project\n",{"type":15,"tag":221,"props":4139,"children":4141},{"class":223,"line":4140},168,[4142,4146,4151,4155],{"type":15,"tag":221,"props":4143,"children":4144},{"style":353},[4145],{"type":20,"value":1909},{"type":15,"tag":221,"props":4147,"children":4148},{"style":234},[4149],{"type":20,"value":4150},"(String fileName ",{"type":15,"tag":221,"props":4152,"children":4153},{"style":228},[4154],{"type":20,"value":1919},{"type":15,"tag":221,"props":4156,"children":4157},{"style":234},[4158],{"type":20,"value":4159}," keepFileNameSet)\n",{"type":15,"tag":221,"props":4161,"children":4163},{"class":223,"line":4162},169,[4164,4168,4172,4176,4181,4186],{"type":15,"tag":221,"props":4165,"children":4166},{"style":353},[4167],{"type":20,"value":4002},{"type":15,"tag":221,"props":4169,"children":4170},{"style":234},[4171],{"type":20,"value":2158},{"type":15,"tag":221,"props":4173,"children":4174},{"style":228},[4175],{"type":20,"value":2334},{"type":15,"tag":221,"props":4177,"children":4178},{"style":234},[4179],{"type":20,"value":4180},"projectFiles.",{"type":15,"tag":221,"props":4182,"children":4183},{"style":353},[4184],{"type":20,"value":4185},"ContainsKey",{"type":15,"tag":221,"props":4187,"children":4188},{"style":234},[4189],{"type":20,"value":4190},"(fileName))\n",{"type":15,"tag":221,"props":4192,"children":4194},{"class":223,"line":4193},170,[4195,4200,4204,4208,4213],{"type":15,"tag":221,"props":4196,"children":4197},{"style":234},[4198],{"type":20,"value":4199},"                    templateProjectItem.",{"type":15,"tag":221,"props":4201,"children":4202},{"style":1568},[4203],{"type":20,"value":3045},{"type":15,"tag":221,"props":4205,"children":4206},{"style":234},[4207],{"type":20,"value":2425},{"type":15,"tag":221,"props":4209,"children":4210},{"style":353},[4211],{"type":20,"value":4212},"AddFromFile",{"type":15,"tag":221,"props":4214,"children":4215},{"style":234},[4216],{"type":20,"value":2040},{"type":15,"tag":221,"props":4218,"children":4220},{"class":223,"line":4219},171,[4221],{"type":15,"tag":221,"props":4222,"children":4223},{"style":234},[4224],{"type":20,"value":2106},{"type":15,"tag":221,"props":4226,"children":4228},{"class":223,"line":4227},172,[4229],{"type":15,"tag":221,"props":4230,"children":4231},{"emptyLinePlaceholder":511},[4232],{"type":20,"value":514},{"type":15,"tag":221,"props":4234,"children":4236},{"class":223,"line":4235},173,[4237,4242,4246,4251],{"type":15,"tag":221,"props":4238,"children":4239},{"style":234},[4240],{"type":20,"value":4241},"        private ",{"type":15,"tag":221,"props":4243,"children":4244},{"style":928},[4245],{"type":20,"value":1262},{"type":15,"tag":221,"props":4247,"children":4248},{"style":353},[4249],{"type":20,"value":4250}," CheckoutFileIfRequired",{"type":15,"tag":221,"props":4252,"children":4253},{"style":234},[4254],{"type":20,"value":2221},{"type":15,"tag":221,"props":4256,"children":4258},{"class":223,"line":4257},174,[4259,4264,4268,4272,4276],{"type":15,"tag":221,"props":4260,"children":4261},{"style":234},[4262],{"type":20,"value":4263},"            var sc ",{"type":15,"tag":221,"props":4265,"children":4266},{"style":228},[4267],{"type":20,"value":253},{"type":15,"tag":221,"props":4269,"children":4270},{"style":234},[4271],{"type":20,"value":3526},{"type":15,"tag":221,"props":4273,"children":4274},{"style":1568},[4275],{"type":20,"value":3595},{"type":15,"tag":221,"props":4277,"children":4278},{"style":234},[4279],{"type":20,"value":504},{"type":15,"tag":221,"props":4281,"children":4283},{"class":223,"line":4282},175,[4284,4288,4293,4297,4301,4306,4311,4316,4320,4324,4328,4333,4338],{"type":15,"tag":221,"props":4285,"children":4286},{"style":353},[4287],{"type":20,"value":2516},{"type":15,"tag":221,"props":4289,"children":4290},{"style":234},[4291],{"type":20,"value":4292}," (sc ",{"type":15,"tag":221,"props":4294,"children":4295},{"style":228},[4296],{"type":20,"value":1621},{"type":15,"tag":221,"props":4298,"children":4299},{"style":578},[4300],{"type":20,"value":1296},{"type":15,"tag":221,"props":4302,"children":4303},{"style":228},[4304],{"type":20,"value":4305}," &&",{"type":15,"tag":221,"props":4307,"children":4308},{"style":234},[4309],{"type":20,"value":4310}," sc.",{"type":15,"tag":221,"props":4312,"children":4313},{"style":353},[4314],{"type":20,"value":4315},"IsItemUnderSCC",{"type":15,"tag":221,"props":4317,"children":4318},{"style":234},[4319],{"type":20,"value":2349},{"type":15,"tag":221,"props":4321,"children":4322},{"style":228},[4323],{"type":20,"value":1631},{"type":15,"tag":221,"props":4325,"children":4326},{"style":228},[4327],{"type":20,"value":4043},{"type":15,"tag":221,"props":4329,"children":4330},{"style":234},[4331],{"type":20,"value":4332},"sc.",{"type":15,"tag":221,"props":4334,"children":4335},{"style":353},[4336],{"type":20,"value":4337},"IsItemCheckedOut",{"type":15,"tag":221,"props":4339,"children":4340},{"style":234},[4341],{"type":20,"value":4190},{"type":15,"tag":221,"props":4343,"children":4345},{"class":223,"line":4344},176,[4346,4351,4355,4360,4364,4369,4373,4377,4381],{"type":15,"tag":221,"props":4347,"children":4348},{"style":234},[4349],{"type":20,"value":4350},"                checkOutAction.",{"type":15,"tag":221,"props":4352,"children":4353},{"style":353},[4354],{"type":20,"value":3104},{"type":15,"tag":221,"props":4356,"children":4357},{"style":234},[4358],{"type":20,"value":4359},"(checkOutAction.",{"type":15,"tag":221,"props":4361,"children":4362},{"style":353},[4363],{"type":20,"value":3114},{"type":15,"tag":221,"props":4365,"children":4366},{"style":234},[4367],{"type":20,"value":4368},"(fileName, ",{"type":15,"tag":221,"props":4370,"children":4371},{"style":578},[4372],{"type":20,"value":2235},{"type":15,"tag":221,"props":4374,"children":4375},{"style":234},[4376],{"type":20,"value":3128},{"type":15,"tag":221,"props":4378,"children":4379},{"style":578},[4380],{"type":20,"value":2235},{"type":15,"tag":221,"props":4382,"children":4383},{"style":234},[4384],{"type":20,"value":3137},{"type":15,"tag":221,"props":4386,"children":4388},{"class":223,"line":4387},177,[4389],{"type":15,"tag":221,"props":4390,"children":4391},{"style":234},[4392],{"type":20,"value":2106},{"type":15,"tag":221,"props":4394,"children":4396},{"class":223,"line":4395},178,[4397],{"type":15,"tag":221,"props":4398,"children":4399},{"style":234},[4400],{"type":20,"value":945},{"type":15,"tag":221,"props":4402,"children":4404},{"class":223,"line":4403},179,[4405,4410],{"type":15,"tag":221,"props":4406,"children":4407},{"style":234},[4408],{"type":20,"value":4409},"} #",{"type":15,"tag":221,"props":4411,"children":4412},{"style":228},[4413],{"type":20,"value":384},{"type":15,"tag":16,"props":4415,"children":4416},{},[4417],{"type":15,"tag":4418,"props":4419,"children":4420},"em",{},[4421],{"type":20,"value":4422},"[)amien",{"type":15,"tag":4424,"props":4425,"children":4426},"style",{},[4427],{"type":20,"value":4428},"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":214,"searchDepth":295,"depth":295,"links":4430},[4431,4439,4445],{"id":102,"depth":295,"text":105,"children":4432},[4433,4434,4435,4436,4437,4438],{"id":109,"depth":310,"text":112},{"id":120,"depth":310,"text":123},{"id":136,"depth":310,"text":139},{"id":147,"depth":310,"text":150},{"id":163,"depth":310,"text":166},{"id":182,"depth":310,"text":185},{"id":193,"depth":295,"text":196,"children":4440},[4441,4442,4443,4444],{"id":199,"depth":310,"text":202},{"id":323,"depth":310,"text":326},{"id":437,"depth":310,"text":440},{"id":541,"depth":310,"text":544},{"id":592,"depth":295,"text":595},"markdown","content:blog:2009:multiple-outputs-from-t4-made-easy-revisited.md","content","blog/2009/multiple-outputs-from-t4-made-easy-revisited.md","blog/2009/multiple-outputs-from-t4-made-easy-revisited","md","/blog/2009/multiple-outputs-from-t4-made-easy-revisited/",1577,[4455,4459,4463],{"title":4456,"date":4457,"url":4458},"HTML5 Video Cheatsheet: Optimizing videos for the web","2025-12-05T00:00:00Z","/blog/2025/html5-video-cheatsheet/",{"title":4460,"date":4461,"url":4462},"Transactions in the MongoDB EF Core Provider","2025-10-25","/blog/2025/mongodb-explicit-transactions/",{"title":4464,"date":4465,"url":4466},"Queryable Encryption with the MongoDB EF Core Provider","2025-09-22","/blog/2025/mongodb-queryable-encryption/",[4468,4487,4507,4532,4557,4582,4612,4638,4780,4842,4859,4879,5184,5204,5221,5246,5268,5293,5323,5349,5380,5400,5417,5434,5451,5468,5755,5776,5798,5829,5859,5923],{"_path":4469,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4471,"description":4472,"id":4471,"date":4473,"name":4474,"avatar":4475,"body":4476,"_type":4446,"_id":4484,"_source":4448,"_file":4485,"_stem":4486,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/76e8a88f","multiple-outputs-from-t4-made-easy-revisited","76e8a88f","I can't get this to work with .NET standard projects. Anyone have any luck?","2018-06-16T09:37:56.2192717Z","tgiphil","https://secure.gravatar.com/avatar/3d84b3b30ac98206595a8435936cb898?s=80&d=identicon&r=pg",{"type":12,"children":4477,"toc":4482},[4478],{"type":15,"tag":16,"props":4479,"children":4480},{},[4481],{"type":20,"value":4472},{"title":214,"searchDepth":295,"depth":295,"links":4483},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:76e8a88f.md","comments/multiple-outputs-from-t4-made-easy-revisited/76e8a88f.md","comments/multiple-outputs-from-t4-made-easy-revisited/76e8a88f",{"_path":4488,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4489,"description":4490,"id":4491,"name":4492,"email":4493,"avatar":4494,"date":4495,"body":4496,"_type":4446,"_id":4504,"_source":4448,"_file":4505,"_stem":4506,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/164361","164361","I set hostspecific=\"true\" and it let me pass that error.",164361,"Thao","thaobond@yahoo.com","https://www.gravatar.com/avatar/77a5332791c06e6c0856c17b7a2ef7a3?r=pg&d=retro","2016-10-07T12:19:43",{"type":12,"children":4497,"toc":4502},[4498],{"type":15,"tag":16,"props":4499,"children":4500},{},[4501],{"type":20,"value":4490},{"title":214,"searchDepth":295,"depth":295,"links":4503},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:164361.md","comments/multiple-outputs-from-t4-made-easy-revisited/164361.md","comments/multiple-outputs-from-t4-made-easy-revisited/164361",{"_path":4508,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4509,"description":4510,"id":4511,"name":4512,"email":4513,"avatar":4514,"date":4515,"body":4516,"_type":4446,"_id":4529,"_source":4448,"_file":4530,"_stem":4531,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/159927","159927","I Tried many solutions and this one is the best of all!",159927,"Malachite","malachite@uol.com.br","https://www.gravatar.com/avatar/dbafe2d1ede69d40ebcaa3bc0bf84981?r=pg&d=retro","2016-05-31T06:53:54",{"type":12,"children":4517,"toc":4527},[4518,4522],{"type":15,"tag":16,"props":4519,"children":4520},{},[4521],{"type":20,"value":4510},{"type":15,"tag":16,"props":4523,"children":4524},{},[4525],{"type":20,"value":4526},"Dont forget that the files it generates are not included in the project automagically, they remain invisible.",{"title":214,"searchDepth":295,"depth":295,"links":4528},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:159927.md","comments/multiple-outputs-from-t4-made-easy-revisited/159927.md","comments/multiple-outputs-from-t4-made-easy-revisited/159927",{"_path":4533,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4534,"description":4535,"id":4536,"name":4537,"email":4538,"avatar":4539,"date":4540,"body":4541,"_type":4446,"_id":4554,"_source":4448,"_file":4555,"_stem":4556,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/158459","158459","Thank you very much!! Works like a charm in VS2012 at work.",158459,"Phani","anne.raghu@gmail.com","https://www.gravatar.com/avatar/c6eaa268d9cbf2d460dabe3899ea5671?r=pg&d=retro","2016-03-31T17:53:13",{"type":12,"children":4542,"toc":4552},[4543,4547],{"type":15,"tag":16,"props":4544,"children":4545},{},[4546],{"type":20,"value":4535},{"type":15,"tag":16,"props":4548,"children":4549},{},[4550],{"type":20,"value":4551},"But not in VS2015 community edition. I can live with this!",{"title":214,"searchDepth":295,"depth":295,"links":4553},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:158459.md","comments/multiple-outputs-from-t4-made-easy-revisited/158459.md","comments/multiple-outputs-from-t4-made-easy-revisited/158459",{"_path":4558,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4559,"description":4560,"id":4561,"name":4562,"email":4563,"avatar":4564,"date":4565,"body":4566,"_type":4446,"_id":4579,"_source":4448,"_file":4580,"_stem":4581,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/122474","122474","Damien, this is a super useful piece of code. One problem though: because of its reliance on EnvDTE, it only runs on machines that have visual studio installed. On Machines without visual studio, it is possible to deploy all the T4 dlls: //msdn.microsoft.com/en-us/library/ee847423.aspx#buildserver but not the EnvDTE dll.",122474,"Kaul","ak1music@yahoo.com","https://www.gravatar.com/avatar/5b6b5c8e5103328c73d80cfcd6ef77ea?r=pg&d=retro","2014-12-02T16:50:25",{"type":12,"children":4567,"toc":4577},[4568,4572],{"type":15,"tag":16,"props":4569,"children":4570},{},[4571],{"type":20,"value":4560},{"type":15,"tag":16,"props":4573,"children":4574},{},[4575],{"type":20,"value":4576},"Now that T4 supports build time code generation, would it be possible to use Microsoft.VisualStudio.TextTemplating.Sdk.Host to get rid of the EnvDTE dependency?",{"title":214,"searchDepth":295,"depth":295,"links":4578},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:122474.md","comments/multiple-outputs-from-t4-made-easy-revisited/122474.md","comments/multiple-outputs-from-t4-made-easy-revisited/122474",{"_path":4583,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4584,"description":4585,"id":4586,"name":4587,"email":4588,"avatar":4589,"date":4590,"body":4591,"_type":4446,"_id":4609,"_source":4448,"_file":4610,"_stem":4611,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/73613","73613","I read many solutions/documentation to generate multiple outputs from a single T4 template (including in-depth Oleg Sych's articles). Regarding multiple outputs file generation I truly love your solution.",73613,"Stephane Issartel","sissarte@gmail.com","https://www.gravatar.com/avatar/2e6dfda4b7082b0ede375c08aa0c8b9d?r=pg&d=retro","2013-12-06T06:34:17",{"type":12,"children":4592,"toc":4607},[4593,4597,4602],{"type":15,"tag":16,"props":4594,"children":4595},{},[4596],{"type":20,"value":4585},{"type":15,"tag":16,"props":4598,"children":4599},{},[4600],{"type":20,"value":4601},"Easy to use with neat/lightweighted code in the background (very easy to understand and extend).",{"type":15,"tag":16,"props":4603,"children":4604},{},[4605],{"type":20,"value":4606},"Thanks a lot.",{"title":214,"searchDepth":295,"depth":295,"links":4608},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:73613.md","comments/multiple-outputs-from-t4-made-easy-revisited/73613.md","comments/multiple-outputs-from-t4-made-easy-revisited/73613",{"_path":4613,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4614,"description":4615,"id":4616,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":4621,"body":4622,"_type":4446,"_id":4635,"_source":4448,"_file":4636,"_stem":4637,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/70257","70257","You have !a || !b which is logically the same as what is there of !(a && b)",70257,"Damien Guard","damien@envytech.co.uk","https://www.gravatar.com/avatar/dc72963e7279d34c85ed4c0b731ce5a9?r=pg&d=retro","https://damieng.com/","2013-07-29T11:06:08",{"type":12,"children":4623,"toc":4633},[4624,4628],{"type":15,"tag":16,"props":4625,"children":4626},{},[4627],{"type":20,"value":4615},{"type":15,"tag":16,"props":4629,"children":4630},{},[4631],{"type":20,"value":4632},"To be able to delete files that are no longer there it would need to record a list of them...",{"title":214,"searchDepth":295,"depth":295,"links":4634},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:70257.md","comments/multiple-outputs-from-t4-made-easy-revisited/70257.md","comments/multiple-outputs-from-t4-made-easy-revisited/70257",{"_path":4639,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4640,"description":4641,"id":4642,"name":4643,"email":4644,"avatar":4645,"date":4646,"body":4647,"_type":4446,"_id":4777,"_source":4448,"_file":4778,"_stem":4779,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/70256","70256","I believe a bug exists in IsFileContentDifferent. Shouldn't the code be?",70256,"Richard Collette","rcollette@yahoo.com","https://www.gravatar.com/avatar/96192c3fd0973820634ec745a0853e97?r=pg&d=retro","2013-07-29T08:46:45",{"type":12,"children":4648,"toc":4775},[4649,4653,4766,4771],{"type":15,"tag":16,"props":4650,"children":4651},{},[4652],{"type":20,"value":4641},{"type":15,"tag":209,"props":4654,"children":4656},{"className":211,"code":4655,"language":213,"meta":214,"style":214},"protected bool IsFileContentDifferent(string fileName, string newContent) {\n    return !File.Exists(fileName) || File.ReadAllText(fileName) != newContent;\n}\n",[4657],{"type":15,"tag":217,"props":4658,"children":4659},{"__ignoreMap":214},[4660,4707,4758],{"type":15,"tag":221,"props":4661,"children":4662},{"class":223,"line":224},[4663,4668,4673,4677,4681,4685,4689,4693,4697,4702],{"type":15,"tag":221,"props":4664,"children":4665},{"style":228},[4666],{"type":20,"value":4667},"protected",{"type":15,"tag":221,"props":4669,"children":4670},{"style":928},[4671],{"type":20,"value":4672}," bool",{"type":15,"tag":221,"props":4674,"children":4675},{"style":353},[4676],{"type":20,"value":2316},{"type":15,"tag":221,"props":4678,"children":4679},{"style":234},[4680],{"type":20,"value":361},{"type":15,"tag":221,"props":4682,"children":4683},{"style":928},[4684],{"type":20,"value":2900},{"type":15,"tag":221,"props":4686,"children":4687},{"style":3574},[4688],{"type":20,"value":3577},{"type":15,"tag":221,"props":4690,"children":4691},{"style":234},[4692],{"type":20,"value":3128},{"type":15,"tag":221,"props":4694,"children":4695},{"style":928},[4696],{"type":20,"value":2900},{"type":15,"tag":221,"props":4698,"children":4699},{"style":3574},[4700],{"type":20,"value":4701}," newContent",{"type":15,"tag":221,"props":4703,"children":4704},{"style":234},[4705],{"type":20,"value":4706},") {\n",{"type":15,"tag":221,"props":4708,"children":4709},{"class":223,"line":295},[4710,4715,4719,4724,4728,4732,4737,4741,4745,4749,4753],{"type":15,"tag":221,"props":4711,"children":4712},{"style":395},[4713],{"type":20,"value":4714},"    return",{"type":15,"tag":221,"props":4716,"children":4717},{"style":228},[4718],{"type":20,"value":4043},{"type":15,"tag":221,"props":4720,"children":4721},{"style":234},[4722],{"type":20,"value":4723},"File.",{"type":15,"tag":221,"props":4725,"children":4726},{"style":353},[4727],{"type":20,"value":2344},{"type":15,"tag":221,"props":4729,"children":4730},{"style":234},[4731],{"type":20,"value":2349},{"type":15,"tag":221,"props":4733,"children":4734},{"style":228},[4735],{"type":20,"value":4736},"||",{"type":15,"tag":221,"props":4738,"children":4739},{"style":234},[4740],{"type":20,"value":2358},{"type":15,"tag":221,"props":4742,"children":4743},{"style":353},[4744],{"type":20,"value":2363},{"type":15,"tag":221,"props":4746,"children":4747},{"style":234},[4748],{"type":20,"value":2349},{"type":15,"tag":221,"props":4750,"children":4751},{"style":228},[4752],{"type":20,"value":1621},{"type":15,"tag":221,"props":4754,"children":4755},{"style":234},[4756],{"type":20,"value":4757}," newContent;\n",{"type":15,"tag":221,"props":4759,"children":4760},{"class":223,"line":310},[4761],{"type":15,"tag":221,"props":4762,"children":4763},{"style":234},[4764],{"type":20,"value":4765},"}\n",{"type":15,"tag":16,"props":4767,"children":4768},{},[4769],{"type":20,"value":4770},"It would be a nice feature if the code would remove files that are no longer generated by the template.",{"type":15,"tag":4424,"props":4772,"children":4773},{},[4774],{"type":20,"value":4428},{"title":214,"searchDepth":295,"depth":295,"links":4776},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:70256.md","comments/multiple-outputs-from-t4-made-easy-revisited/70256.md","comments/multiple-outputs-from-t4-made-easy-revisited/70256",{"_path":4781,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4782,"description":214,"id":4783,"name":4784,"email":4785,"avatar":4786,"date":4787,"body":4788,"_type":4446,"_id":4839,"_source":4448,"_file":4840,"_stem":4841,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/68269","68269",68269,"leconehu","leconehu@gmail.com","https://www.gravatar.com/avatar/7b08fef45aed9e59ea36546c5af80619?r=pg&d=retro","2013-07-08T17:34:28",{"type":12,"children":4789,"toc":4837},[4790,4828,4833],{"type":15,"tag":209,"props":4791,"children":4793},{"className":211,"code":4792,"language":213,"meta":214,"style":214},"var manager = Manager.Create(Host, GenerationEnvironment);\n",[4794],{"type":15,"tag":217,"props":4795,"children":4796},{"__ignoreMap":214},[4797],{"type":15,"tag":221,"props":4798,"children":4799},{"class":223,"line":224},[4800,4805,4810,4814,4819,4823],{"type":15,"tag":221,"props":4801,"children":4802},{"style":928},[4803],{"type":20,"value":4804},"var",{"type":15,"tag":221,"props":4806,"children":4807},{"style":234},[4808],{"type":20,"value":4809}," manager ",{"type":15,"tag":221,"props":4811,"children":4812},{"style":228},[4813],{"type":20,"value":253},{"type":15,"tag":221,"props":4815,"children":4816},{"style":234},[4817],{"type":20,"value":4818}," Manager.",{"type":15,"tag":221,"props":4820,"children":4821},{"style":353},[4822],{"type":20,"value":1160},{"type":15,"tag":221,"props":4824,"children":4825},{"style":234},[4826],{"type":20,"value":4827},"(Host, GenerationEnvironment);\n",{"type":15,"tag":16,"props":4829,"children":4830},{},[4831],{"type":20,"value":4832},"There is no name of the current context \"Host\" why？",{"type":15,"tag":4424,"props":4834,"children":4835},{},[4836],{"type":20,"value":4428},{"title":214,"searchDepth":295,"depth":295,"links":4838},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:68269.md","comments/multiple-outputs-from-t4-made-easy-revisited/68269.md","comments/multiple-outputs-from-t4-made-easy-revisited/68269",{"_path":4843,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4844,"description":4845,"id":4846,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":4847,"body":4848,"_type":4446,"_id":4856,"_source":4448,"_file":4857,"_stem":4858,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/63851","63851","Hmm, isItemUnderSCC is a function of the DTE object (Visual Studio) that goes down into the source provider. It sounds like the Perforce plug-in isn't implementing it.  You might be able to work around it by having it always try and check the file out.",63851,"2013-03-15T07:38:33",{"type":12,"children":4849,"toc":4854},[4850],{"type":15,"tag":16,"props":4851,"children":4852},{},[4853],{"type":20,"value":4845},{"title":214,"searchDepth":295,"depth":295,"links":4855},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:63851.md","comments/multiple-outputs-from-t4-made-easy-revisited/63851.md","comments/multiple-outputs-from-t4-made-easy-revisited/63851",{"_path":4860,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4861,"description":4862,"id":4863,"name":4864,"email":4865,"avatar":4866,"date":4867,"body":4868,"_type":4446,"_id":4876,"_source":4448,"_file":4877,"_stem":4878,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/63850","63850","Having problem with multi-file updates... for some reason the source control IsItemUnderSCC returns false when should be true.  I'm using the Perforce V11 PlugIn for source control.",63850,"John","jwhitney@ipswitch.com","https://www.gravatar.com/avatar/437e2156cad4b73da008618341878189?r=pg&d=retro","2013-03-15T06:13:12",{"type":12,"children":4869,"toc":4874},[4870],{"type":15,"tag":16,"props":4871,"children":4872},{},[4873],{"type":20,"value":4862},{"title":214,"searchDepth":295,"depth":295,"links":4875},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:63850.md","comments/multiple-outputs-from-t4-made-easy-revisited/63850.md","comments/multiple-outputs-from-t4-made-easy-revisited/63850",{"_path":4880,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":4881,"description":4882,"id":4883,"name":4884,"email":4885,"avatar":4886,"date":4887,"body":4888,"_type":4446,"_id":5181,"_source":4448,"_file":5182,"_stem":5183,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/63349","63349","Hi Damien,\nThx for this nice and clean solution (IMHO this should be part of the VS t4 out of the box experience).\nI used it in VS 2012. After enabling build support (with this guideline http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/ ) I found that the line in the factory method:",63349,"Robert","rkos@chello.at","https://www.gravatar.com/avatar/71b6625b340af2ed96abbab8081ff9de?r=pg&d=retro","2012-12-17T03:18:34",{"type":12,"children":4889,"toc":5179},[4890,4903,4966,4971,5165,5170,5175],{"type":15,"tag":16,"props":4891,"children":4892},{},[4893,4895,4901],{"type":20,"value":4894},"Hi Damien,\nThx for this nice and clean solution (IMHO this should be part of the VS t4 out of the box experience).\nI used it in VS 2012. After enabling build support (with this guideline ",{"type":15,"tag":44,"props":4896,"children":4899},{"href":4897,"rel":4898},"http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/",[93],[4900],{"type":20,"value":4897},{"type":20,"value":4902}," ) I found that the line in the factory method:",{"type":15,"tag":209,"props":4904,"children":4906},{"className":211,"code":4905,"language":213,"meta":214,"style":214},"return (host is IServiceProvider) ? new VSManager(host, template) : new Manager(host, template);\n",[4907],{"type":15,"tag":217,"props":4908,"children":4909},{"__ignoreMap":214},[4910],{"type":15,"tag":221,"props":4911,"children":4912},{"class":223,"line":224},[4913,4918,4922,4926,4930,4934,4938,4942,4946,4950,4954,4958,4962],{"type":15,"tag":221,"props":4914,"children":4915},{"style":395},[4916],{"type":20,"value":4917},"return",{"type":15,"tag":221,"props":4919,"children":4920},{"style":234},[4921],{"type":20,"value":1179},{"type":15,"tag":221,"props":4923,"children":4924},{"style":395},[4925],{"type":20,"value":1184},{"type":15,"tag":221,"props":4927,"children":4928},{"style":240},[4929],{"type":20,"value":1189},{"type":15,"tag":221,"props":4931,"children":4932},{"style":234},[4933],{"type":20,"value":1194},{"type":15,"tag":221,"props":4935,"children":4936},{"style":228},[4937],{"type":20,"value":1199},{"type":15,"tag":221,"props":4939,"children":4940},{"style":395},[4941],{"type":20,"value":999},{"type":15,"tag":221,"props":4943,"children":4944},{"style":240},[4945],{"type":20,"value":1208},{"type":15,"tag":221,"props":4947,"children":4948},{"style":234},[4949],{"type":20,"value":1213},{"type":15,"tag":221,"props":4951,"children":4952},{"style":228},[4953],{"type":20,"value":1218},{"type":15,"tag":221,"props":4955,"children":4956},{"style":395},[4957],{"type":20,"value":999},{"type":15,"tag":221,"props":4959,"children":4960},{"style":240},[4961],{"type":20,"value":1227},{"type":15,"tag":221,"props":4963,"children":4964},{"style":234},[4965],{"type":20,"value":1232},{"type":15,"tag":16,"props":4967,"children":4968},{},[4969],{"type":20,"value":4970},"does not detect the host being MSBuild. It creates a VSManager and there it gets a NPE when trying to obtain the DTE.\nSo I changed this code to:",{"type":15,"tag":209,"props":4972,"children":4974},{"className":211,"code":4973,"language":213,"meta":214,"style":214},"if ((host != null) &amp;&amp; (host is IServiceProvider)) {\n    var dte = ((IServiceProvider)host).GetService(typeof(EnvDTE.DTE));\n    if (dte != null) return new VSManager(host, template);\n}\nreturn new FileManager(host, template);\n",[4975],{"type":15,"tag":217,"props":4976,"children":4977},{"__ignoreMap":214},[4978,5035,5098,5138,5145],{"type":15,"tag":221,"props":4979,"children":4980},{"class":223,"line":224},[4981,4986,4991,4995,4999,5003,5008,5013,5017,5022,5026,5030],{"type":15,"tag":221,"props":4982,"children":4983},{"style":395},[4984],{"type":20,"value":4985},"if",{"type":15,"tag":221,"props":4987,"children":4988},{"style":234},[4989],{"type":20,"value":4990}," ((host ",{"type":15,"tag":221,"props":4992,"children":4993},{"style":228},[4994],{"type":20,"value":1621},{"type":15,"tag":221,"props":4996,"children":4997},{"style":578},[4998],{"type":20,"value":1296},{"type":15,"tag":221,"props":5000,"children":5001},{"style":234},[5002],{"type":20,"value":1194},{"type":15,"tag":221,"props":5004,"children":5005},{"style":228},[5006],{"type":20,"value":5007},"&",{"type":15,"tag":221,"props":5009,"children":5010},{"style":234},[5011],{"type":20,"value":5012},"amp;",{"type":15,"tag":221,"props":5014,"children":5015},{"style":228},[5016],{"type":20,"value":5007},{"type":15,"tag":221,"props":5018,"children":5019},{"style":234},[5020],{"type":20,"value":5021},"amp; (host ",{"type":15,"tag":221,"props":5023,"children":5024},{"style":395},[5025],{"type":20,"value":1184},{"type":15,"tag":221,"props":5027,"children":5028},{"style":240},[5029],{"type":20,"value":1189},{"type":15,"tag":221,"props":5031,"children":5032},{"style":234},[5033],{"type":20,"value":5034},")) {\n",{"type":15,"tag":221,"props":5036,"children":5037},{"class":223,"line":295},[5038,5043,5048,5052,5057,5061,5066,5070,5074,5078,5082,5086,5090,5094],{"type":15,"tag":221,"props":5039,"children":5040},{"style":928},[5041],{"type":20,"value":5042},"    var",{"type":15,"tag":221,"props":5044,"children":5045},{"style":234},[5046],{"type":20,"value":5047}," dte ",{"type":15,"tag":221,"props":5049,"children":5050},{"style":228},[5051],{"type":20,"value":253},{"type":15,"tag":221,"props":5053,"children":5054},{"style":234},[5055],{"type":20,"value":5056}," ((",{"type":15,"tag":221,"props":5058,"children":5059},{"style":240},[5060],{"type":20,"value":3309},{"type":15,"tag":221,"props":5062,"children":5063},{"style":234},[5064],{"type":20,"value":5065},")host).",{"type":15,"tag":221,"props":5067,"children":5068},{"style":353},[5069],{"type":20,"value":3417},{"type":15,"tag":221,"props":5071,"children":5072},{"style":234},[5073],{"type":20,"value":361},{"type":15,"tag":221,"props":5075,"children":5076},{"style":395},[5077],{"type":20,"value":3426},{"type":15,"tag":221,"props":5079,"children":5080},{"style":234},[5081],{"type":20,"value":361},{"type":15,"tag":221,"props":5083,"children":5084},{"style":240},[5085],{"type":20,"value":3399},{"type":15,"tag":221,"props":5087,"children":5088},{"style":234},[5089],{"type":20,"value":2425},{"type":15,"tag":221,"props":5091,"children":5092},{"style":240},[5093],{"type":20,"value":2691},{"type":15,"tag":221,"props":5095,"children":5096},{"style":234},[5097],{"type":20,"value":3137},{"type":15,"tag":221,"props":5099,"children":5100},{"class":223,"line":310},[5101,5106,5110,5114,5118,5122,5126,5130,5134],{"type":15,"tag":221,"props":5102,"children":5103},{"style":395},[5104],{"type":20,"value":5105},"    if",{"type":15,"tag":221,"props":5107,"children":5108},{"style":234},[5109],{"type":20,"value":3459},{"type":15,"tag":221,"props":5111,"children":5112},{"style":228},[5113],{"type":20,"value":1621},{"type":15,"tag":221,"props":5115,"children":5116},{"style":578},[5117],{"type":20,"value":1296},{"type":15,"tag":221,"props":5119,"children":5120},{"style":234},[5121],{"type":20,"value":1194},{"type":15,"tag":221,"props":5123,"children":5124},{"style":395},[5125],{"type":20,"value":4917},{"type":15,"tag":221,"props":5127,"children":5128},{"style":395},[5129],{"type":20,"value":999},{"type":15,"tag":221,"props":5131,"children":5132},{"style":240},[5133],{"type":20,"value":1208},{"type":15,"tag":221,"props":5135,"children":5136},{"style":234},[5137],{"type":20,"value":1232},{"type":15,"tag":221,"props":5139,"children":5140},{"class":223,"line":507},[5141],{"type":15,"tag":221,"props":5142,"children":5143},{"style":234},[5144],{"type":20,"value":4765},{"type":15,"tag":221,"props":5146,"children":5147},{"class":223,"line":517},[5148,5152,5156,5161],{"type":15,"tag":221,"props":5149,"children":5150},{"style":395},[5151],{"type":20,"value":4917},{"type":15,"tag":221,"props":5153,"children":5154},{"style":395},[5155],{"type":20,"value":999},{"type":15,"tag":221,"props":5157,"children":5158},{"style":240},[5159],{"type":20,"value":5160}," FileManager",{"type":15,"tag":221,"props":5162,"children":5163},{"style":234},[5164],{"type":20,"value":1232},{"type":15,"tag":16,"props":5166,"children":5167},{},[5168],{"type":20,"value":5169},"and everything works as expected.",{"type":15,"tag":16,"props":5171,"children":5172},{},[5173],{"type":20,"value":5174},"Thx again and regards\nRobert",{"type":15,"tag":4424,"props":5176,"children":5177},{},[5178],{"type":20,"value":4428},{"title":214,"searchDepth":295,"depth":295,"links":5180},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:63349.md","comments/multiple-outputs-from-t4-made-easy-revisited/63349.md","comments/multiple-outputs-from-t4-made-easy-revisited/63349",{"_path":5185,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5186,"description":5187,"id":5188,"name":5189,"email":5190,"avatar":5191,"date":5192,"body":5193,"_type":4446,"_id":5201,"_source":4448,"_file":5202,"_stem":5203,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/58967","58967",".. And also: I can't believe three years on from the posting of this article, it remains relevant ..",58967,"Lars Ole","larsolesimonsen@gmail.com","https://www.gravatar.com/avatar/4f932034c0998375cf9ca0d9b15cd01b?r=pg&d=retro","2012-11-17T01:54:30",{"type":12,"children":5194,"toc":5199},[5195],{"type":15,"tag":16,"props":5196,"children":5197},{},[5198],{"type":20,"value":5187},{"title":214,"searchDepth":295,"depth":295,"links":5200},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:58967.md","comments/multiple-outputs-from-t4-made-easy-revisited/58967.md","comments/multiple-outputs-from-t4-made-easy-revisited/58967",{"_path":5205,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5206,"description":5207,"id":5208,"name":5189,"email":5190,"avatar":5191,"date":5209,"body":5210,"_type":4446,"_id":5218,"_source":4448,"_file":5219,"_stem":5220,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/58829","58829","Thanks for sharing this really neat piece of code. With t4toolbox seemingly unsupported, this is a nice way to get no-hassle multifile t4 support in VS2012.",58829,"2012-11-16T15:27:43",{"type":12,"children":5211,"toc":5216},[5212],{"type":15,"tag":16,"props":5213,"children":5214},{},[5215],{"type":20,"value":5207},{"title":214,"searchDepth":295,"depth":295,"links":5217},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:58829.md","comments/multiple-outputs-from-t4-made-easy-revisited/58829.md","comments/multiple-outputs-from-t4-made-easy-revisited/58829",{"_path":5222,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5223,"description":5224,"id":5225,"name":5226,"email":5227,"avatar":5228,"date":5229,"body":5230,"_type":4446,"_id":5243,"_source":4448,"_file":5244,"_stem":5245,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/48447","48447","I have just used your approach in order to achieve full class conditional generation. Your class Manager is a really neat and usefull piece of code.",48447,"Júlio Nobre","julio.nobre@gmail.com","https://www.gravatar.com/avatar/c47ef84ed70c3802af8f1f3866bd19bb?r=pg&d=retro","2012-08-11T16:04:52",{"type":12,"children":5231,"toc":5241},[5232,5236],{"type":15,"tag":16,"props":5233,"children":5234},{},[5235],{"type":20,"value":5224},{"type":15,"tag":16,"props":5237,"children":5238},{},[5239],{"type":20,"value":5240},"Thanks a lot for sharing it!",{"title":214,"searchDepth":295,"depth":295,"links":5242},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:48447.md","comments/multiple-outputs-from-t4-made-easy-revisited/48447.md","comments/multiple-outputs-from-t4-made-easy-revisited/48447",{"_path":5247,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5248,"description":5249,"id":5250,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":5251,"body":5252,"_type":4446,"_id":5265,"_source":4448,"_file":5266,"_stem":5267,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/48263","48263","There's no way to suppress the default output or reliably delete it (it is often locked).",48263,"2012-07-06T08:06:20",{"type":12,"children":5253,"toc":5263},[5254,5258],{"type":15,"tag":16,"props":5255,"children":5256},{},[5257],{"type":20,"value":5249},{"type":15,"tag":16,"props":5259,"children":5260},{},[5261],{"type":20,"value":5262},"I find the best option is to just have it list all the outputs it created and set the output extension to .log",{"title":214,"searchDepth":295,"depth":295,"links":5264},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:48263.md","comments/multiple-outputs-from-t4-made-easy-revisited/48263.md","comments/multiple-outputs-from-t4-made-easy-revisited/48263",{"_path":5269,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5270,"description":5271,"id":5272,"name":5273,"email":5274,"avatar":5275,"date":5276,"body":5277,"_type":4446,"_id":5290,"_source":4448,"_file":5291,"_stem":5292,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/48262","48262","How can I delete the original generation?\nSay that I keep all my output within StartNewFile and EndBlock and I don't want the default file generated? only my blocks.\nFor intance, example.tt would generate example_model.cs and example_viewmodel.cs, but NOT example.cs",48262,"Nestor","nestor@nsuli.com","https://www.gravatar.com/avatar/729bc934a676229b0cf822517c3539df?r=pg&d=retro","2012-07-06T07:43:20",{"type":12,"children":5278,"toc":5288},[5279,5283],{"type":15,"tag":16,"props":5280,"children":5281},{},[5282],{"type":20,"value":5271},{"type":15,"tag":16,"props":5284,"children":5285},{},[5286],{"type":20,"value":5287},"Thanks a lot!",{"title":214,"searchDepth":295,"depth":295,"links":5289},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:48262.md","comments/multiple-outputs-from-t4-made-easy-revisited/48262.md","comments/multiple-outputs-from-t4-made-easy-revisited/48262",{"_path":5294,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5295,"description":5296,"id":5297,"name":5298,"email":5299,"avatar":5300,"date":5301,"body":5302,"_type":4446,"_id":5320,"_source":4448,"_file":5321,"_stem":5322,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/46859","46859","Just an FYI,",46859,"Bill Huth","huthwilliam@gmail.com","https://www.gravatar.com/avatar/e1accf3ee4f6a9d0dc20e1598e445ffe?r=pg&d=retro","2011-11-03T15:40:28",{"type":12,"children":5303,"toc":5318},[5304,5308,5313],{"type":15,"tag":16,"props":5305,"children":5306},{},[5307],{"type":20,"value":5296},{"type":15,"tag":16,"props":5309,"children":5310},{},[5311],{"type":20,"value":5312},"If the T4Toolbox is included ( ), the Manager produces no files.  I think it is in the dispose method of the surrounding class...but I could not track it down.",{"type":15,"tag":16,"props":5314,"children":5315},{},[5316],{"type":20,"value":5317},"Bill",{"title":214,"searchDepth":295,"depth":295,"links":5319},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:46859.md","comments/multiple-outputs-from-t4-made-easy-revisited/46859.md","comments/multiple-outputs-from-t4-made-easy-revisited/46859",{"_path":5324,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5325,"description":5326,"id":5327,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":5328,"body":5329,"_type":4446,"_id":5346,"_source":4448,"_file":5347,"_stem":5348,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/46394","46394","There's nothing the template can do automatically as far as I know but you can manually edit the .csproj file and make one DependentUpon the other which will visually stack them in the Project Explorer.",46394,"2011-09-08T05:51:51",{"type":12,"children":5330,"toc":5344},[5331],{"type":15,"tag":16,"props":5332,"children":5333},{},[5334,5336,5342],{"type":20,"value":5335},"There's nothing the template can do automatically as far as I know but you can manually edit the .csproj file and make one ",{"type":15,"tag":44,"props":5337,"children":5339},{"href":5338},"https://mikehadlow.blogspot.com/2006/11/nested-files-with-dependentupon-in.html",[5340],{"type":20,"value":5341},"DependentUpon",{"type":20,"value":5343}," the other which will visually stack them in the Project Explorer.",{"title":214,"searchDepth":295,"depth":295,"links":5345},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:46394.md","comments/multiple-outputs-from-t4-made-easy-revisited/46394.md","comments/multiple-outputs-from-t4-made-easy-revisited/46394",{"_path":5350,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5351,"description":5352,"id":5353,"name":5354,"email":5355,"avatar":5356,"url":5357,"date":5358,"body":5359,"_type":4446,"_id":5377,"_source":4448,"_file":5378,"_stem":5379,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/46391","46391","Hi Damien, you seem to know your T4 stuff - very handy include.",46391,"Paul","eth0@ifc0nfig.com","https://www.gravatar.com/avatar/e60010c0ada3d36d496128e2e431dc56?r=pg&d=retro","https://www.ifc0nfig.com","2011-09-08T00:09:59",{"type":12,"children":5360,"toc":5375},[5361,5365,5370],{"type":15,"tag":16,"props":5362,"children":5363},{},[5364],{"type":20,"value":5352},{"type":15,"tag":16,"props":5366,"children":5367},{},[5368],{"type":20,"value":5369},"A quick question; I'm generating a WCF service (the .svc and .cs file) via T4, everything works fine but for some reason Visual Studio separates the .svc and the .cs file - is there a way to make the .cs file be a shadow of the .svc as it usually does if you create the service manually?",{"type":15,"tag":16,"props":5371,"children":5372},{},[5373],{"type":20,"value":5374},"Regards, Paul.",{"title":214,"searchDepth":295,"depth":295,"links":5376},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:46391.md","comments/multiple-outputs-from-t4-made-easy-revisited/46391.md","comments/multiple-outputs-from-t4-made-easy-revisited/46391",{"_path":5381,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5382,"description":5383,"id":5384,"name":5385,"email":5386,"avatar":5387,"date":5388,"body":5389,"_type":4446,"_id":5397,"_source":4448,"_file":5398,"_stem":5399,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/43525","43525","Cool. Thanks for the feedback.. My code just has an extra section that preprocesses the header now. A little less efficient -- but its an offline process anyway :)\nThe mileage we get from the outputted code is immense. Thanks!",43525,"Tim","twebb72@hotmail.com","https://www.gravatar.com/avatar/02e534729eaef01f78de540cdc89d451?r=pg&d=retro","2010-12-14T15:42:12",{"type":12,"children":5390,"toc":5395},[5391],{"type":15,"tag":16,"props":5392,"children":5393},{},[5394],{"type":20,"value":5383},{"title":214,"searchDepth":295,"depth":295,"links":5396},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:43525.md","comments/multiple-outputs-from-t4-made-easy-revisited/43525.md","comments/multiple-outputs-from-t4-made-easy-revisited/43525",{"_path":5401,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5402,"description":5403,"id":5404,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":5405,"body":5406,"_type":4446,"_id":5414,"_source":4448,"_file":5415,"_stem":5416,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/42992","42992","Yes, this template does not supports building one block in multiple places and I think it would add complexity to it that most people don't need.",42992,"2010-12-09T09:14:16",{"type":12,"children":5407,"toc":5412},[5408],{"type":15,"tag":16,"props":5409,"children":5410},{},[5411],{"type":20,"value":5403},{"title":214,"searchDepth":295,"depth":295,"links":5413},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:42992.md","comments/multiple-outputs-from-t4-made-easy-revisited/42992.md","comments/multiple-outputs-from-t4-made-easy-revisited/42992",{"_path":5418,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5419,"description":5420,"id":5421,"name":5385,"email":5386,"avatar":5387,"date":5422,"body":5423,"_type":4446,"_id":5431,"_source":4448,"_file":5432,"_stem":5433,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/42854","42854","...Attempting to build the header in several different blocks...",42854,"2010-12-07T20:44:05",{"type":12,"children":5424,"toc":5429},[5425],{"type":15,"tag":16,"props":5426,"children":5427},{},[5428],{"type":20,"value":5420},{"title":214,"searchDepth":295,"depth":295,"links":5430},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:42854.md","comments/multiple-outputs-from-t4-made-easy-revisited/42854.md","comments/multiple-outputs-from-t4-made-easy-revisited/42854",{"_path":5435,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5436,"description":5437,"id":5438,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":5439,"body":5440,"_type":4446,"_id":5448,"_source":4448,"_file":5449,"_stem":5450,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/42841","42841","Are you building the header in a single go after a normal block or attempting to build the header in several different blocks?",42841,"2010-12-07T15:43:25",{"type":12,"children":5441,"toc":5446},[5442],{"type":15,"tag":16,"props":5443,"children":5444},{},[5445],{"type":20,"value":5437},{"title":214,"searchDepth":295,"depth":295,"links":5447},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:42841.md","comments/multiple-outputs-from-t4-made-easy-revisited/42841.md","comments/multiple-outputs-from-t4-made-easy-revisited/42841",{"_path":5452,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5453,"description":5454,"id":5455,"name":5385,"email":5386,"avatar":5387,"date":5456,"body":5457,"_type":4446,"_id":5465,"_source":4448,"_file":5466,"_stem":5467,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/42840","42840","Damien,\nThanks for the help! Big time saver, but I have a really gnawing issue with it.\nHow come when I add to the header AFTER adding a normal block, the header information appears inline and not with the rest of the header? It would make better sense (to me), to output all header information inside the header, and not piecewise, throughout the file (this is only an issue when outputting a single file). Is this by design? From my app's POV its a bug.\nThoughts?",42840,"2010-12-07T15:38:18",{"type":12,"children":5458,"toc":5463},[5459],{"type":15,"tag":16,"props":5460,"children":5461},{},[5462],{"type":20,"value":5454},{"title":214,"searchDepth":295,"depth":295,"links":5464},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:42840.md","comments/multiple-outputs-from-t4-made-easy-revisited/42840.md","comments/multiple-outputs-from-t4-made-easy-revisited/42840",{"_path":5469,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5470,"description":5471,"id":5472,"name":5473,"email":5474,"avatar":5475,"url":5476,"date":5477,"body":5478,"_type":4446,"_id":5752,"_source":4448,"_file":5753,"_stem":5754,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/42680","42680","Hi Damien, thanks a lot for providing this template!!",42680,"Luis Rocha","lerocha@gmail.com","https://www.gravatar.com/avatar/7ce180282ed7cb7a2be8549fa19186b2?r=pg&d=retro","https://www.luisrocha.net","2010-11-16T11:49:30",{"type":12,"children":5479,"toc":5750},[5480,5484,5497,5502,5723,5736,5741,5746],{"type":15,"tag":16,"props":5481,"children":5482},{},[5483],{"type":20,"value":5471},{"type":15,"tag":16,"props":5485,"children":5486},{},[5487,5489,5495],{"type":20,"value":5488},"I've been using your template since the first version, and now I started using it for the ",{"type":15,"tag":44,"props":5490,"children":5492},{"href":5491},"https://chinookdatabase.codeplex.com/",[5493],{"type":20,"value":5494},"Chinook Database",{"type":20,"value":5496}," to generate multiple sql and batch files. I noticed that the Manager class generates all files with UTF-8 encoding only. In my case, I need to created sql files with Unicode encoding, and batch files with ASCII encoding.",{"type":15,"tag":16,"props":5498,"children":5499},{},[5500],{"type":20,"value":5501},"I changed your original template and added an Encoding attribute to the Block class, and overloaded the StartNewFile method:",{"type":15,"tag":209,"props":5503,"children":5505},{"className":211,"code":5504,"language":213,"meta":214,"style":214},"public void StartNewFile(String name) {\n    StartNewFile(name, Encoding.UTF8);\n}\n\npublic void StartNewFile(String name, Encoding encoding) {\n    if (name == null)\n        throw new ArgumentNullException(\"name\");\n    CurrentBlock = new Block { Name = name, Encoding = encoding };\n",[5506],{"type":15,"tag":217,"props":5507,"children":5508},{"__ignoreMap":214},[5509,5541,5563,5570,5577,5622,5645,5681],{"type":15,"tag":221,"props":5510,"children":5511},{"class":223,"line":224},[5512,5516,5521,5525,5529,5533,5537],{"type":15,"tag":221,"props":5513,"children":5514},{"style":228},[5515],{"type":20,"value":392},{"type":15,"tag":221,"props":5517,"children":5518},{"style":928},[5519],{"type":20,"value":5520}," void",{"type":15,"tag":221,"props":5522,"children":5523},{"style":353},[5524],{"type":20,"value":1267},{"type":15,"tag":221,"props":5526,"children":5527},{"style":234},[5528],{"type":20,"value":361},{"type":15,"tag":221,"props":5530,"children":5531},{"style":240},[5532],{"type":20,"value":1105},{"type":15,"tag":221,"props":5534,"children":5535},{"style":3574},[5536],{"type":20,"value":638},{"type":15,"tag":221,"props":5538,"children":5539},{"style":234},[5540],{"type":20,"value":4706},{"type":15,"tag":221,"props":5542,"children":5543},{"class":223,"line":295},[5544,5549,5554,5559],{"type":15,"tag":221,"props":5545,"children":5546},{"style":353},[5547],{"type":20,"value":5548},"    StartNewFile",{"type":15,"tag":221,"props":5550,"children":5551},{"style":234},[5552],{"type":20,"value":5553},"(name, Encoding.",{"type":15,"tag":221,"props":5555,"children":5556},{"style":1568},[5557],{"type":20,"value":5558},"UTF8",{"type":15,"tag":221,"props":5560,"children":5561},{"style":234},[5562],{"type":20,"value":1341},{"type":15,"tag":221,"props":5564,"children":5565},{"class":223,"line":310},[5566],{"type":15,"tag":221,"props":5567,"children":5568},{"style":234},[5569],{"type":20,"value":4765},{"type":15,"tag":221,"props":5571,"children":5572},{"class":223,"line":507},[5573],{"type":15,"tag":221,"props":5574,"children":5575},{"emptyLinePlaceholder":511},[5576],{"type":20,"value":514},{"type":15,"tag":221,"props":5578,"children":5579},{"class":223,"line":517},[5580,5584,5588,5592,5596,5600,5604,5608,5613,5618],{"type":15,"tag":221,"props":5581,"children":5582},{"style":228},[5583],{"type":20,"value":392},{"type":15,"tag":221,"props":5585,"children":5586},{"style":928},[5587],{"type":20,"value":5520},{"type":15,"tag":221,"props":5589,"children":5590},{"style":353},[5591],{"type":20,"value":1267},{"type":15,"tag":221,"props":5593,"children":5594},{"style":234},[5595],{"type":20,"value":361},{"type":15,"tag":221,"props":5597,"children":5598},{"style":240},[5599],{"type":20,"value":1105},{"type":15,"tag":221,"props":5601,"children":5602},{"style":3574},[5603],{"type":20,"value":638},{"type":15,"tag":221,"props":5605,"children":5606},{"style":234},[5607],{"type":20,"value":3128},{"type":15,"tag":221,"props":5609,"children":5610},{"style":240},[5611],{"type":20,"value":5612},"Encoding",{"type":15,"tag":221,"props":5614,"children":5615},{"style":3574},[5616],{"type":20,"value":5617}," encoding",{"type":15,"tag":221,"props":5619,"children":5620},{"style":234},[5621],{"type":20,"value":4706},{"type":15,"tag":221,"props":5623,"children":5624},{"class":223,"line":706},[5625,5629,5633,5637,5641],{"type":15,"tag":221,"props":5626,"children":5627},{"style":395},[5628],{"type":20,"value":5105},{"type":15,"tag":221,"props":5630,"children":5631},{"style":234},[5632],{"type":20,"value":1286},{"type":15,"tag":221,"props":5634,"children":5635},{"style":228},[5636],{"type":20,"value":1291},{"type":15,"tag":221,"props":5638,"children":5639},{"style":578},[5640],{"type":20,"value":1296},{"type":15,"tag":221,"props":5642,"children":5643},{"style":234},[5644],{"type":20,"value":1301},{"type":15,"tag":221,"props":5646,"children":5647},{"class":223,"line":719},[5648,5653,5657,5661,5665,5669,5673,5677],{"type":15,"tag":221,"props":5649,"children":5650},{"style":395},[5651],{"type":20,"value":5652},"        throw",{"type":15,"tag":221,"props":5654,"children":5655},{"style":395},[5656],{"type":20,"value":999},{"type":15,"tag":221,"props":5658,"children":5659},{"style":240},[5660],{"type":20,"value":1319},{"type":15,"tag":221,"props":5662,"children":5663},{"style":234},[5664],{"type":20,"value":361},{"type":15,"tag":221,"props":5666,"children":5667},{"style":256},[5668],{"type":20,"value":259},{"type":15,"tag":221,"props":5670,"children":5671},{"style":262},[5672],{"type":20,"value":1332},{"type":15,"tag":221,"props":5674,"children":5675},{"style":256},[5676],{"type":20,"value":259},{"type":15,"tag":221,"props":5678,"children":5679},{"style":234},[5680],{"type":20,"value":1341},{"type":15,"tag":221,"props":5682,"children":5683},{"class":223,"line":732},[5684,5689,5693,5697,5701,5705,5709,5714,5718],{"type":15,"tag":221,"props":5685,"children":5686},{"style":234},[5687],{"type":20,"value":5688},"    CurrentBlock ",{"type":15,"tag":221,"props":5690,"children":5691},{"style":228},[5692],{"type":20,"value":253},{"type":15,"tag":221,"props":5694,"children":5695},{"style":395},[5696],{"type":20,"value":999},{"type":15,"tag":221,"props":5698,"children":5699},{"style":240},[5700],{"type":20,"value":1039},{"type":15,"tag":221,"props":5702,"children":5703},{"style":234},[5704],{"type":20,"value":1367},{"type":15,"tag":221,"props":5706,"children":5707},{"style":228},[5708],{"type":20,"value":253},{"type":15,"tag":221,"props":5710,"children":5711},{"style":234},[5712],{"type":20,"value":5713}," name, Encoding ",{"type":15,"tag":221,"props":5715,"children":5716},{"style":228},[5717],{"type":20,"value":253},{"type":15,"tag":221,"props":5719,"children":5720},{"style":234},[5721],{"type":20,"value":5722}," encoding };\n",{"type":15,"tag":16,"props":5724,"children":5725},{},[5726,5728,5734],{"type":20,"value":5727},"Then, I used the block encoding in all calls to File.WriteAllText and to File.ReadAllText (to regenerate a file if its encoding has changed). This way we can control the encoding of the generated files. The modified version I am using is located ",{"type":15,"tag":44,"props":5729,"children":5731},{"href":5730},"https://chinookdatabase.codeplex.com/SourceControl/changeset/view/4cd00ddeb6b9#ChinookDatabase%2f_T4Templates%2fManager.ttinclude",[5732],{"type":20,"value":5733},"here",{"type":20,"value":5735},", just in case you want to integrate it.",{"type":15,"tag":16,"props":5737,"children":5738},{},[5739],{"type":20,"value":5740},"Thanks again for this template!",{"type":15,"tag":16,"props":5742,"children":5743},{},[5744],{"type":20,"value":5745},"Cheers,\nLuis",{"type":15,"tag":4424,"props":5747,"children":5748},{},[5749],{"type":20,"value":4428},{"title":214,"searchDepth":295,"depth":295,"links":5751},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:42680.md","comments/multiple-outputs-from-t4-made-easy-revisited/42680.md","comments/multiple-outputs-from-t4-made-easy-revisited/42680",{"_path":5756,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5757,"description":5758,"id":5759,"name":5760,"email":5761,"avatar":5762,"url":5763,"date":5764,"body":5765,"_type":4446,"_id":5773,"_source":4448,"_file":5774,"_stem":5775,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/37238","37238","Hey D,\nThanks for the code. Your listing is missing an end tag. Might confuse/frustrate some....",37238,"Sky","sky.sanders@gmail.com","https://www.gravatar.com/avatar/df4a7fbd8a054fd6193ca0ee62952f1f?r=pg&d=retro","https://skysanders.net/subtext","2010-02-27T06:06:46",{"type":12,"children":5766,"toc":5771},[5767],{"type":15,"tag":16,"props":5768,"children":5769},{},[5770],{"type":20,"value":5758},{"title":214,"searchDepth":295,"depth":295,"links":5772},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:37238.md","comments/multiple-outputs-from-t4-made-easy-revisited/37238.md","comments/multiple-outputs-from-t4-made-easy-revisited/37238",{"_path":5777,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5778,"description":5779,"id":5780,"name":4617,"email":4618,"avatar":4619,"url":4620,"date":5781,"body":5782,"_type":4446,"_id":5795,"_source":4448,"_file":5796,"_stem":5797,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/36796","36796","You can't - VS's SingleFileGenerator that T4 is based on insists on creating the original file.",36796,"2010-02-22T07:38:41",{"type":12,"children":5783,"toc":5793},[5784,5788],{"type":15,"tag":16,"props":5785,"children":5786},{},[5787],{"type":20,"value":5779},{"type":15,"tag":16,"props":5789,"children":5790},{},[5791],{"type":20,"value":5792},"The best you could hope to do would be to turn this into a .log or something by changing the file extension and outputting some unimportant information.",{"title":214,"searchDepth":295,"depth":295,"links":5794},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:36796.md","comments/multiple-outputs-from-t4-made-easy-revisited/36796.md","comments/multiple-outputs-from-t4-made-easy-revisited/36796",{"_path":5799,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5800,"description":5801,"id":5802,"name":5803,"email":5804,"avatar":5805,"url":5806,"date":5807,"body":5808,"_type":4446,"_id":5826,"_source":4448,"_file":5827,"_stem":5828,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/36791","36791","Hi There,",36791,"Marius van Belkum","mvk@frameworkone.co.za","https://www.gravatar.com/avatar/97f6441a3e432af3accdff153094bf10?r=pg&d=retro","https://www.frameworkone.co.za","2010-02-22T00:21:54",{"type":12,"children":5809,"toc":5824},[5810,5814,5819],{"type":15,"tag":16,"props":5811,"children":5812},{},[5813],{"type":20,"value":5801},{"type":15,"tag":16,"props":5815,"children":5816},{},[5817],{"type":20,"value":5818},"This works great!",{"type":15,"tag":16,"props":5820,"children":5821},{},[5822],{"type":20,"value":5823},"As per other Marius' question. How do i prevent the xx.cs file to be generated?",{"title":214,"searchDepth":295,"depth":295,"links":5825},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:36791.md","comments/multiple-outputs-from-t4-made-easy-revisited/36791.md","comments/multiple-outputs-from-t4-made-easy-revisited/36791",{"_path":5830,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5831,"description":5832,"id":5833,"name":5834,"email":5835,"avatar":5836,"url":5837,"date":5838,"body":5839,"_type":4446,"_id":5856,"_source":4448,"_file":5857,"_stem":5858,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/33759","33759","Hi Damien,",33759,"Tim Fischer (tangible)","tfischer@tangible.de","https://www.gravatar.com/avatar/7f7d1fff937e1d7928705258f3e109cf?r=pg&d=retro","https://t4-editor.tangible-engineering.com","2010-01-03T13:39:45",{"type":12,"children":5840,"toc":5854},[5841,5845,5850],{"type":15,"tag":16,"props":5842,"children":5843},{},[5844],{"type":20,"value":5832},{"type":15,"tag":16,"props":5846,"children":5847},{},[5848],{"type":20,"value":5849},"great thank you very much for this update. I do use your class a lot and it works like a breeze!",{"type":15,"tag":16,"props":5851,"children":5852},{},[5853],{"type":20,"value":5385},{"title":214,"searchDepth":295,"depth":295,"links":5855},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:33759.md","comments/multiple-outputs-from-t4-made-easy-revisited/33759.md","comments/multiple-outputs-from-t4-made-easy-revisited/33759",{"_path":5860,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5861,"description":5862,"id":5863,"name":5864,"email":5865,"avatar":5866,"date":5867,"body":5868,"_type":4446,"_id":5920,"_source":4448,"_file":5921,"_stem":5922,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/33341","33341","uff!\nDifferences Between Project and Item Templates...",33341,"marius","m.c.nicolescu@gmail.com","https://www.gravatar.com/avatar/12d6fb1aa0a3e107b3b83293205e0b14?r=pg&d=retro","2009-12-27T00:44:25",{"type":12,"children":5869,"toc":5918},[5870,5874,5879,5883,5888,5893,5898,5903,5908,5913],{"type":15,"tag":16,"props":5871,"children":5872},{},[5873],{"type":20,"value":5862},{"type":15,"tag":16,"props":5875,"children":5876},{},[5877],{"type":20,"value":5878},"public class Class1(){}",{"type":15,"tag":16,"props":5880,"children":5881},{},[5882],{"type":20,"value":5878},{"type":15,"tag":16,"props":5884,"children":5885},{},[5886],{"type":20,"value":5887},"Somehow an overload or set that do not depend(too much) on ProjectItems",{"type":15,"tag":16,"props":5889,"children":5890},{},[5891],{"type":20,"value":5892},"// :(\nmaybe next version(s)",{"type":15,"tag":16,"props":5894,"children":5895},{},[5896],{"type":20,"value":5897},"I like to load an xml file with XElement then iterate the nodes and attributes and generate a slim model for whatever... but, i like a xsd to check the xml file at the moment somebody writes some funny business. However i also like to asure that the schema is placed somewhere expected but the xx.cs files all together in the xx.tt tree...",{"type":15,"tag":16,"props":5899,"children":5900},{},[5901],{"type":20,"value":5902},"hmm!....\nand by the way!... if i choose split, and i do, why is a xx.cs from xx.tt still there and how can i prevent it. Even if the xx.cs is an empty file",{"type":15,"tag":16,"props":5904,"children":5905},{},[5906],{"type":20,"value":5907},"Those are just some loosy brainwaves...",{"type":15,"tag":16,"props":5909,"children":5910},{},[5911],{"type":20,"value":5912},"I DO LIKE THE MANAGER CLASS",{"type":15,"tag":16,"props":5914,"children":5915},{},[5916],{"type":20,"value":5917},"! THANK YOU !",{"title":214,"searchDepth":295,"depth":295,"links":5919},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:33341.md","comments/multiple-outputs-from-t4-made-easy-revisited/33341.md","comments/multiple-outputs-from-t4-made-easy-revisited/33341",{"_path":5924,"_dir":4470,"_draft":6,"_partial":6,"_locale":7,"title":5925,"description":5926,"id":5927,"name":5928,"email":5929,"avatar":5930,"date":5931,"body":5932,"_type":4446,"_id":5940,"_source":4448,"_file":5941,"_stem":5942,"_extension":4451},"/comments/multiple-outputs-from-t4-made-easy-revisited/30886","30886","Have tried this now and it is so much easier than I thought. Thanks",30886,"Johnk","john.kaduwanema@summitmedia.com","https://www.gravatar.com/avatar/45508fb6ca00abc05923fd9bc8c0b81f?r=pg&d=retro","2009-11-25T08:26:50",{"type":12,"children":5933,"toc":5938},[5934],{"type":15,"tag":16,"props":5935,"children":5936},{},[5937],{"type":20,"value":5926},{"title":214,"searchDepth":295,"depth":295,"links":5939},[],"content:comments:multiple-outputs-from-t4-made-easy-revisited:30886.md","comments/multiple-outputs-from-t4-made-easy-revisited/30886.md","comments/multiple-outputs-from-t4-made-easy-revisited/30886",1779264584942]