I'm curious why the Telerik upgrade project wizard is so very slow every time i upgrade an ASP.NET MVC 4 project. I can see each of the files copied in status bar with a what seems like a forced delay in between each file. The whole process takes more than 10+ minutes and in the meantime the drive activity is very low.
All other operations with 100 times more files on my SSD machine are very fast and finish in matters of seconds like it is with creating new Kendo UI ASP.NET MVC 4 project.
Just for the existing project the upgrade operation is very very slow and i wonder if you guys can shed some light on the matter.
24 Answers, 1 is accepted
Sorry for the delayed response.
The file operations are done through the Visual Studio API and it is usually a slow process, especially if you are using TFS/Source Control integration. On my virtual machine it takes a maximum of 1 minute per project - if you have a multitude of projects it can take a significant amount of time. Hope this answers your question.
the Telerik team
Thank you for contacting us.
Indeed, the upgrade of a project takes more time than the creation of new one. Teodor shed some light on the process but here are some more details.
The upgrade of a project roughly consists of two stages:
- Copy the new resources in the project directory and add them to the project
- Remove the old resources from the project and delete them from its directory
As you know, Kendo contains a lot of script and style files. While the process of copying these files is fast, the process of adding/removing them to/from the project takes more time. To do this the extensions use the Visual Studio API which has its limitations and also does not allow us to have deep control over the process.
However, 45 minutes is too much time for the upgrade. I would suggest to try the following:
- Download and use the latest UI for ASP.NET MVC VS extensions
- Upgrade your projects one by one
We are sorry for the inconvenience caused. Please, do not hesitate to contact us in case further questions arise.
I was wondering the same thing about how slow it is to upgrade too.
We use the _references.js file for helping the JS statement completion. This file dynamically updates as JS files are added to the project. As the KendoUI is updating the JS file, this _references.js file has to be touched to rebuild the JS information. Since there are so many Kendo JS files, it just bogs this process down.
To speed things up on our end, we removed the _references.js from the project before running the Kendo update. Then when the update was complete, we added the file back into the project.
I also think you can turn off the autosync at the top of this file before starting the updates. (There is a right click context menu item to turn it off and on too)
<autosync enabled="false" />
Hope this helps. Maybe the Kendo updater can figure out how to turn this file off during update, and refresh it when its done.
Thank you for the detailed idea on how to speed up the upgrade process. We highly appreciate every feedback that would help us improve our products.
My upgrade(one kendo project, but multiple projects in solution) has been running almost 3 hours now and it just finished adding the new Content\kendo folder but hasn't yet deleted the old folder. I really don't know what it is doing now. You can watch the folder on disk as each file is s.l.o.w.l.y. added one by one.
The Script folder is thankfully done.
The project *is* connected to TFS which I am willing to blame. "TFS Power Tool Extension" process chugging along.
i7, 16Gig, SSD, so it isn't a resource issue.
So I did some experimenting and maybe it will help others.
I killed my upgrade after 3 hours and refreshed from TFS to get back to clean state.
_references.js MUST have auto-sync disabled...learned that last upgrade. You can turn it on again and re-sync after the upgrade is done.
Then I manually removed the Content\kendo folder from my project. This took over 10 minutes just for this step.
I then found this: https://www.cloudconstruct.com/blog/slow-file-management-in-visual-studio-connected-to-team-foundation-services.
I had 8 workspaces mapped. I unmapped 5 of them. I did not restart VS.
I then manually removed the Scripts\kendo folder from my project. This took seconds!
I reverted everything back again and re-ran the kendo upgrade wizard. This time it finished completely in 15 minutes instead of still running after 3 hours. Presumably it would have been quicker if I had unmapped all workspaces except my current one.
So, if you use TFS, you MUST turn off _references.js auto-sync and, more importantly, unmap any "unused" TFS workspaces before doing any mass file updates to your solution, either manually or via the kendo upgrade wizard.
Thank you for your feedback. I believe many users would find this information and discoveries helpful.
In addition, the disabling of the _references.js auto-sync is logged in our backlog and will be taken into consideration as soon as possible.
Your cooperation and willing to help in improving the upgrade process is highly appreciated.
The upgrade is still extremely slow.
I have a Core i7-6700k with 4.4 Mhz, 32 GB RAM, with the project located on a RAMDisk and the Telerik Platform on an SSD, there is no Teamsystem and the upgrade still took over one hour. Only one project had to be updated in my case.
Copying the same files by hand takes about 60 seconds, that's over 60 times faster.
Unfortunately, we still do not have a stable reproduction of this issue.
In addition, the most time consuming operation is not copying the files, but adding them as part of the solution. As we have mentioned, Visual Studio API has its specifics and limitations which (combined with the high number of files) affects this process and our control over it.
As a suggestion, did you try the solution that was mentioned in the previous posts - disabling of the _references.js auto-sync before running the upgrade process?
You could kill the Visual Studio process in Task Manager, revert the changes from TFS and then re-run after the _references and unmapping tweaks.
I've killed the process after 3 hours myself.
Once the upgrade is done, you simply need to remap your folder in TFS and it should pick up all the changes.
You can also monitor how far along the process is using Windows Explorer to look at the Kendo CSS and Script folders to see how many files it has left to copy/remove before deciding whether or not you want to kill it.
Thank you for contacting us.
In the latest version of the UI for ASP.NET MVC VS Extensions the upgrade time is improved significantly, so I suggest you to upgrade the VS Extensions, you can do that from Visual Studio: Tools->Extensions and Updates->Updates. You can also disable the auto-sync of the _references.js before running the upgrade, as Ventsislav Staykov mentioned before.
Another thing that will also quicken future upgrades is enabling CDN usage from Configure wizard - Right click on the project->Telerik UI for ASP.NET MVC->Configure project->choose theme(or leave the default)->Next->Check "Use CDN support"->Finish.
Please let me now if the provided information helps.
Telerik by Progress
These errors come from JustCode and are false positives. It turns out that JustCode is unable to parse calc() expressions (see screenshot). You don't need to fix them in order for your app to work as expected.
Telerik by Progress
Using the latest 2018 Q2 and upgrading a very simple project (MVC project, 4 views, 3 controllers, nothing else). Taken over 20 minutes (VS 2017, Kendo MVC, TFS). This is unacceptable by any standards. All the CSS files (100's of them) seem to be slow.
May be contact Microsoft and ask them for a solution or a better way?
The slow upgrade is probably related to specific limitations in the Visual Studio API which make the process of adding so many files to a project, as in the UI for ASP.NET MVC, very slow. To avoid this and speed up the upgrade process I you could switch your project to use the scripts and content files from our CDN. This is done easy with the help of the Project Configuration Wizard. Just select the Use CDN Support checkbox on the last page of the wizard.
Another option you could consider is to use UI for ASP.NET MVC NuGet Packages. The Telerik.UI.for.AspNet.Mvc5 NuGet package will add the assembly reference and files to the project and you will need only to add(or update the existing) references to the installed files.
Thanks for the suggestions. Unfortunately none of them really works for me.
1. CDN. Occasionally I need to work offline (eg. airplane) and need the project to run so I can test it (without internet access).
2. NUGet. Tried that... seems like the same problem. Needs to talk to TFS every single file. Took 45 minutes. Also it insisted on installing query 1.9 (even though my project uses 3.3 - which is valid for Kendo). So that made it a bit of a mess.
I did some additional research and found a report by another customer who shared that modifying the _references.js file to disable the autoSync option inside it improves the upgrade times:
1. Open Scripts/_references.js.
2. Modify the autoSync element to have an enabled="false" value:
3. Start up the upgrade wizard/NuGet package update.
Hopefully this will help with the time taken the next time you upgrade your project.
I did try that but did not seem to make a difference. The status bar show the progress and the caption on the bottom... "Telerik VS Extensions ... Copy" for each .js item etc seems to take about half a second for each one. This seems very slow.
The project is under source control and the TFS server is not on premises. Can this be escalated to Microsoft VS team or something?
I've just stopped using the upgrade wizard and do my upgrades manually now.
Deleting the Kendo Script and Content folders manually from within VS, creating new folders and bulk copy-pasting in the files takes a couple of minutes as opposed to the hours it takes the wizard to do it one file at a time.
You then have to update the dll reference, copy over EditorTemplates(if they have changed, which they haven't in quite a while) and tweak CSS/JS included in _Layout and BundleConfig.
In addition to disabling the auto-sync in the references.js file, you can disconnect the solution from source control while the upgrade is running. The other way is the manual upgrade as already mentioned. Below are detailed steps for that:
1. Update the project's Kendo.Mvc.dll reference with the one from the new version. It's located in "[NewVersionInstallLocation]\wrappers\aspnetmvc\Binaries\[ProjectTargetMVCVersion]" folder.
2. Update UI for ASP.NET MVC scripts by replacing the "Scripts\kendo\[OldVersion]" folder in your project with "Scripts\kendo\[NewVersion]" folder and place inside the contents of the "[NewVersionInstallLocation]\js\" directory.
3. Update the content by replacing the "Content\kendo\[OldVersion]" folder in your project with "Content\kendo\[NewVersion]" folder and place inside the contents of the "[NewVersionInstallLocation]\styles\" directory.
4. Update editor templates by replacing the "Views\Shared\EditorTemplates" folder in your project with the contents of the "[NewVersionInstallLocation]\wrappers\aspnetmvc\EditorTemplates\razor" directory.
5. Finally, update the references to Kendo scripts and content at the beginning of the _Layout.cshtml file by replacing the old version in the references' path with the new one. These references point to some of the scripts and content in the folders you updated in steps 2 and 3 so the path should be updated accordingly.
We will send feedback to Microsoft regarding the slow addition of files and we'll work together to improve the wizard behaviour.