bennor / AutoT4MVC

A zero-configuration Visual Studio 2012+ extension for automatically running T4MVC templates on build and when files are modified in paths that T4MVC cares about.

Home Page:http://bennor.github.io/AutoT4MVC/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Uninstall and Install JQuery.UI.Combined package is so slow in a project with AutoT4MVC

TimLovellSmith opened this issue · comments

This may be a AutoT4MVC bug, or nuget bug, either way it would be great to get it fixed.

This is NuGet 2.5, VS 2012 Update 3 2013, and AutoT4MVC 1.0

Basically It seems like the policy of running on item added/removed/saved is having some unwanted consequences when the project file is having many items added/removed at once by nuget.

When I do Uninstall-Package of JQuery.UI.Combined, see that it takes a looong, long time, attach debugger and break at random I see a call stack with:

0oycex32.dll!Microsoft.VisualStudio.TextTemplating329C81B56F087DB273CD59F2421B901568B702993BDC31B037A56807D0421372135B7B8DAF7AD34EFE6AD1E2B96C8965704B2D440D84325EF4120CCDF84DDF23.GeneratedTextTransformation.TransformText() Line 37 + 0x12 bytes C#
Microsoft.VisualStudio.TextTemplating.11.0.dll!Microsoft.VisualStudio.TextTemplating.TransformationRunner.PerformTransformation() + 0xb53 bytes

Microsoft.VisualStudio.TextTemplating.11.0.dll!Microsoft.VisualStudio.TextTemplating.Engine.ProcessTemplateImplementation(Microsoft.VisualStudio.TextTemplating.TemplateProcessingSession session, string content, Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost host, string className, string classNamespace) + 0xb3 bytes
Microsoft.VisualStudio.TextTemplating.11.0.dll!Microsoft.VisualStudio.TextTemplating.Engine.ProcessTemplate(string content, Microsoft.VisualStudio.TextTemplating.ITextTemplatingEngineHost host) + 0x5c bytes
Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll!Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ProcessTemplate(string templateInputFile, string templateContent, Microsoft.VisualStudio.TextTemplating.VSHost.ITextTemplatingCallback processingCallback, object hierarchy) + 0x62 bytes
Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll!Microsoft.VisualStudio.TextTemplating.VSHost.BaseTemplatedCodeGenerator.ProcessTemplate(string inputFileName, string inputFileContent, Microsoft.VisualStudio.TextTemplating.VSHost.ITextTemplating processor, Microsoft.VisualStudio.Shell.Interop.IVsHierarchy hierarchy) + 0x15 bytes
Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll!Microsoft.VisualStudio.TextTemplating.VSHost.BaseTemplatedCodeGenerator.GenerateCode(string inputFileName, string inputFileContent) + 0x140 bytes
Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll!Microsoft.VisualStudio.TextTemplating.VSHost.BaseCodeGenerator.Generate(string inputFilePath, string inputFileContents, string defaultNamespace, out System.IntPtr outputFileContents, out int output, Microsoft.VisualStudio.Shell.Interop.IVsGeneratorProgress generateProgress) + 0x62 bytes
Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll!Microsoft.VisualStudio.TextTemplating.VSHost.BaseCodeGenerator.Microsoft.VisualStudio.Shell.Interop.IVsSingleFileGenerator.Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, System.IntPtr[] rgbOutputFileContents, out uint pcbOutput, Microsoft.VisualStudio.Shell.Interop.IVsGeneratorProgress pGenerateProgress) + 0x36 bytes

Microsoft.VisualStudio.Web.Application.dll!Microsoft.VisualStudio.Web.Application.WAProject.Microsoft.VisualStudio.Shell.Interop.IVsPersistHierarchyItem.SaveItem(Microsoft.VisualStudio.Shell.Interop.VSSAVEFLAGS saveFlags, string document, uint itemid, System.IntPtr docData, out int isCanceled) + 0x1b8 bytes    

AutoT4MVC.dll!AutoT4MVC.AutoT4MVCPackage.RunTemplates(EnvDTE.Project[] projects) + 0xde bytes   
AutoT4MVC.dll!AutoT4MVC.AutoT4MVCPackage.ItemRemoved(EnvDTE.ProjectItem ProjectItem) + 0x4a bytes   
EnvDTE.dll!EnvDTE._dispProjectItemsEvents_SinkHelper.ItemRemoved(EnvDTE.ProjectItem A_1) + 0xf bytes    

Hey,

Can you please try updating to the latest version of AutoT4MVC (1.2.0). You should be able to update directly from the Extension Manager.

This exact situation used to be a big problem, but in the last release I added throttling of the events so it will wait to start running the template until a second after the last event (item added/removed) has fired and will only run once per burst of files.

Cheers