Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC Application is extremely slow to build

I am working on a Visual Studio MVC-4 project. It takes approximately 2 minutes to build the solution, which makes no sense. It is a small solution with 5 projects, with few (less than a few hundred) files in each project. To compare, we have a project which is 10-15 times the size of this project (Web forms), which builds in less than 3 seconds on my computer.

I have heard we migrated from MVC2 to MVC4, and the team remembers the solution was much faster before the migration, but they can't exactly remember it.

It is not only on my computer, but the rest of the computers on the team. I am pretty sure it is in the solution file somehow.

We only have 1 post build event, and it has no effect to remove it.

Any ideas about what to do?

What I have tried

Symbols:

I read a post here on SO, about setting symbols to run locally instead of server. I've done that:

enter image description here

Enable "just my code" Make sure only my code is debugged:

enter image description here

Deleting temp folders

Deleted all the different temp folders around on my computer.

Solution file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C337490A-F7A8-4800-9BD3-668F5231AE2D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web", "Web", "{58E3725E-75D2-4AB0-A693-D482152A28E5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Business", "Business", "{8999D8ED-77FD-42F4-A11A-F6F3B4224A41}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C1BC5D04-B71F-4E66-9C2F-352ED8A0AF84}"
    ProjectSection(SolutionItems) = preProject
        Saxo.Application.Publish.build = Saxo.Application.Publish.build
    EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Database", "Database", "{8F63871C-600E-49E5-9858-D3023485CD06}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Changescripts", "Changescripts", "{B3F72D6C-35EF-4D82-ACB9-5DCAE8F0BCA1}"
    ProjectSection(SolutionItems) = preProject
        30042013-DescriptionNotNull.sql = 30042013-DescriptionNotNull.sql
        AlterContentTextsAddAllowHtml.txt = AlterContentTextsAddAllowHtml.txt
        AlterInvoiceAccountsAddVismaSupplierId.sql = AlterInvoiceAccountsAddVismaSupplierId.sql
        AlterProjectsAddCategorySelfPublisher.sql = AlterProjectsAddCategorySelfPublisher.sql
    EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SOMENAME", "SOMENAME", "{903F385F-C309-4189-BE1C-1598BEF9FBE6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SOMENAME", "SOMENAME", "{797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SOMENAME", "SOMENAME", "{BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SOMENAME", "SOMENAME", "{EA172A15-6AE4-4358-8DB9-B75F6CC20458}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{5E4C1C3C-AB57-49E6-8C7B-1E69CD3FBF67}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SOMENAME", "SOMENAME", "{97B74D41-8B99-4782-9B64-60BA180ED667}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Debug|Mixed Platforms = Debug|Mixed Platforms
        Debug|x86 = Debug|x86
        Release|Any CPU = Release|Any CPU
        Release|Mixed Platforms = Release|Mixed Platforms
        Release|x86 = Release|x86
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Debug|x86.ActiveCfg = Debug|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Release|Any CPU.Build.0 = Release|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {903F385F-C309-4189-BE1C-1598BEF9FBE6}.Release|x86.ActiveCfg = Release|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Debug|x86.ActiveCfg = Debug|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Release|Any CPU.Build.0 = Release|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85}.Release|x86.ActiveCfg = Release|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Debug|x86.ActiveCfg = Debug|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Release|Any CPU.Build.0 = Release|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8}.Release|x86.ActiveCfg = Release|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Debug|x86.ActiveCfg = Debug|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Release|Any CPU.Build.0 = Release|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458}.Release|x86.ActiveCfg = Release|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Debug|x86.ActiveCfg = Debug|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Release|Any CPU.Build.0 = Release|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Release|Mixed Platforms.Build.0 = Release|Any CPU
        {97B74D41-8B99-4782-9B64-60BA180ED667}.Release|x86.ActiveCfg = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(NestedProjects) = preSolution
        {BA8847A7-5EFB-4E1B-A689-4BBC4B6183D8} = {C337490A-F7A8-4800-9BD3-668F5231AE2D}
        {903F385F-C309-4189-BE1C-1598BEF9FBE6} = {58E3725E-75D2-4AB0-A693-D482152A28E5}
        {797DCD60-C9C4-4AB4-98FE-2CBB02AA4A85} = {8999D8ED-77FD-42F4-A11A-F6F3B4224A41}
        {EA172A15-6AE4-4358-8DB9-B75F6CC20458} = {8999D8ED-77FD-42F4-A11A-F6F3B4224A41}
        {B3F72D6C-35EF-4D82-ACB9-5DCAE8F0BCA1} = {8F63871C-600E-49E5-9858-D3023485CD06}
        {97B74D41-8B99-4782-9B64-60BA180ED667} = {5E4C1C3C-AB57-49E6-8C7B-1E69CD3FBF67}
    EndGlobalSection
EndGlobal

Process monitor

I've run the process monitor, only looking at cnc.exe . This is my result:

It seems the following records runs again, again and again.

enter image description here

like image 464
Lars Holdgaard Avatar asked Jun 27 '13 10:06

Lars Holdgaard


People also ask

Is MVC faster than web forms?

If you want to have a faster development cycle than Web Forms might be the best option. If time, money, and energy to develop an application from the scratch is not a constraint then MVC could potentially be the better option.

Why is MVC faster?

Faster development process:MVC supports rapid and parallel development. If an MVC model is used to develop any particular web application then it is possible that one programmer can work on the view while the other can work on the controller to create the business logic of the web application.


1 Answers

One possible reason that your compile time is so long is that you have have <MvcBuildViews> set to true, which will compile your views and alert you to any syntax errors in your view. Because you can have a large number of views, this process can lengthen your build time significantly (minutes vs seconds). Here is a link to a site which will explain how to turn off/on the MvcBuildViews attribute. In case the site goes down, you basically add the following line to your solution file:

To Enable

<MvcBuildViews>true</MvcBuildViews>

To Disable

<MvcBuildViews>false</MvcBuildViews>

However (opinionated diatribe coming) I disagree with him on when you should use this feature. He states you should have this attribute enabled only for Release/Production while I think that you should only have it enabled for Debug configurations. Most developers will fully test their web apps in Debug and then and only then switch to Release and push. Why would one not want to have a compile time check in Debug mode when that is what you are doing...debugging and checking for errors/bugs?

like image 160
Tommy Avatar answered Oct 03 '22 14:10

Tommy