Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
536 views
in Technique[技术] by (71.8m points)

asp.net - 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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...