Visual Studio 디버깅 /로드가 매우 느림


505

나는 끝났어. Visual Studio는 일반적으로 ASP.NET MVC 사이트의 디버깅 속도가 느리거나 일반로드 ( "디버그없이 시작")가 느립니다. 항상 그런 것은 아닙니다. 처음에는 프로젝트가 훌륭하고 빠르게로드되지만 일단 느리게로드되면 그 후에 항상 느리게로드됩니다. 1-2 분 이상 기다릴 수 있습니다.

내 설정 :

내가 사용하고 비주얼 스튜디오 2012 익스프레스를 현재,하지만 난 비주얼 스튜디오 2010 익스프레스에서 같은 문제를 겪고도했습니다. 내 솔루션은 네트워크 드라이브에 저장되어 있습니다. 특히 중요한 경우 내 문서가 네트워크 드라이브로 리디렉션됩니다. 이 설정에서 내 사이트가 매우 빠르게로드되는 경우가 있습니다.

Internet Explorer 9에서는 일반적으로로드되지만 Firefox에서도 동일한 문제가 발생합니다.

이것은 내가 작업중 인 모든 ASP.NET MVC 프로젝트에서 발생할 수 있으며 모든 ASP.NET MVC 프로젝트가하는 DisplayTemplates를 중심으로 진행됩니다. 그리고 그것이 중요하다면 모두 C #과 Razor입니다.

조짐:

시스템은 심볼을 수백 번 로드 합니다. 기본적으로 다음과 같지만 동일한 CSHTML에 대해 약간 다른 DLL 파일이있는 행이 300 개 이상 있습니다.

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.xighmhow.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.cv5hktkf.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.1o77hs8i.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.jja-77mw.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.l_e9ev_s.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.b4n59gom.dll', Symbols loaded.

위의 "Contact", "Location"및 "StatusCode"라는 세 개의 DisplayTemplate이 있습니다. 디스플레이 템플릿이 호출 될 때마다 IIS가 심볼을 두 번로드하는 것 같습니다. 따라서이 세 가지 디스플레이 템플릿을 모두 호출하는 100 개의 항목 표를 표시하면 600 개의 별도 기호가로드됩니다.

이것은 빠른 작업이 아닙니다. IIS가 생성하는 로그 파일을 살펴보면 각 심볼을로드하는 데 약 200ms가 걸립니다. 따라서, 매우 긴 지연.

내가 시도한 것 :

  • 디버그 또는 릴리스 버전은 중요하지 않습니다.
  • 웹 서버에서 전체 IIS 구현에 프로젝트를 배치하면 문제없이 매우 빠르게 실행됩니다.
  • Cassini, IIS Express 7.5 및 IIS Express 8.0 모두 문제가 있습니다.
  • 모든 중단 점 삭제는 아무 것도 수행하지 않습니다.
  • Clean Solution 또는 .suo를 삭제해도 아무 것도 수행되지 않습니다.
  • IIS Express를 복구하거나 My Docs\IISExpress폴더를 삭제 하거나 Visual Studio를 복구 / 재설치하면 문제가 사라질 수 있지만 잠시 후에 다시 돌아올 수 있습니다.

모든 조언을 부탁드립니다.

더 많은 질문에 대답하기 위해, 내 기계에는 확실히 마력이 있습니다. 화를내는 것은 NOTHING이 변경된 동일한 프로젝트가 때로는 IIS Express를 복구하고 My Docs\IISExpress폴더를 삭제 한 후 때로는 매우 빠르게로드 될 수 있다는 것입니다 . 결국 "무언가"가 발생하고 다시로드하는 데 2 ​​분이 걸립니다. 내가하고있는 일은 복잡한 프로젝트가 아닙니다. 외부 라이브러리 또는 종속성이 없으며 VS.NET에는 애드온이 없습니다.

이 시스템에는 Symantec Endpoint Protection이 있으며 이로 인해 혼란을 겪은 기록이 있습니다. 그러나 완전히 비활성화하면 (관리자가되는 것이 좋습니다) 문제가 해결되지 않았습니다.

이 시점에서 이론이 있습니다. 네트워크 공유에서 리디렉션 폴더를 작업하기 때문에 이것이 전부라고 생각합니다. 디버거가 수백 개의 "로드 된 심볼"라인을 통과하는 동안 나는 그것이 무엇을하고 있는지보기 위해 잠시 멈췄다. 내 코드에 있었고 내가 가지고있는 DisplayTemplate을로드했습니다. 템플릿 출력으로 스테핑하면 다음과 같습니다.

Step into: Stepping over non-user code 'System.Threading.WaitHandle.InternalWaitOne'
Step into: Stepping over non-user code 'System.Threading.WaitHandle.WaitOne'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated'
Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCapture'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch'
Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch'
Step into: Stepping over non-user code 'System.Web.Compilation.AssemblyBuilder.Compile'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.bciuyg14.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.CompileWebFile'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultInternal'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert'
Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName'
Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.Find'
Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.FindPartialView'
Step into: Stepping over non-user code 'System.Web.Mvc.Html.TemplateHelpers.ActionCacheViewItem.Execute'
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.kwj3uqan.dll', Symbols loaded.
Step into: Stepping over non-user code 'System.RuntimeType.CreateInstanceSlow'
Step into: Stepping over non-user code 'System.Web.Mvc.DependencyResolver.DefaultDependencyResolver.GetService'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create'
Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerCompiledView.Render'

Visual Studio가 호출 될 때마다 내 디스플레이 템플릿을 다시 컴파일하는 것처럼 보입니다 . 다시 수백 번입니다. 내 이론은 Visual Studio에서 파일을 컴파일하여 네트워크 공유에 저장 한 다음 네트워크 공유에 새로운 시간을 표시 한 다음 파일이 변경된 것으로 생각하여 Visual Studio에서 다시 컴파일한다는 것입니다. 그러나 이론 만; 나는 실마리가 없다.

예를 들어 오프라인 파일이 켜져 있습니다 (사무실의 데스크톱 컴퓨터이므로 덜 신경 쓰지 못했습니다). 내일 비활성화하고 재부팅 한 후 다시 시도하겠습니다.

또한 내 프로젝트를 그대로 로컬 C로 옮기면 문제가 해결됩니다. 매우 빠르게로드됩니다. 그러나 이것은 작업 환경에 이상적이지 않습니다. 이전 버전이 손실되고 코드를 수동으로 복사하지 않으면 코드가 전혀 백업되지 않으며 더 이상 다른 사람과 공유되지 않습니다.

C에서 네트워크 공유로왔다 갔다하면 복사 할 수 있습니다. 매 페이지가로드 될 때마다 2 분을 기다리는 것이 훨씬 성가신 일입니다.


나는 많은 질문을 가지고 있습니다 : 당신이 그것을 운영하고있는 기계는 어떻습니까? 당신이하려는 일에 충분한 마력이 있습니까? 타사 플러그인이 있습니까? 어떤 종류의 바이러스 백신이 있습니까?
Fickle Panther

1
더 많은 정보로 내 질문을 업데이트했습니다.
Ber'Zophus

오프라인 파일을 제거하는 것이 유일한 해결책이었습니다. 한동안 잘 작동했지만 문제가 다시 발생했습니다. 그러나 다른 대답이 있습니다. 내 솔루션을 업데이트 중입니다.
Ber'Zophus

바이러스 백신 질문에 이어 ThreatFire 실행과 관련된 주요 문제가있었습니다. 일시적으로 전원을 끄면 디버거가 적어도 수백 배나 빨라졌습니다. 메인 AV (Avast!)를 끄면 약간 도움이되었습니다.
Jon Coombs

@JohnSaunders 관리자 모드에서 실행 해 보셨습니까? : stackoverflow.com/questions/36322440/…
Robert Oschler

답변:


650

Visual Studio 2012에서 "느린 심볼로드"문제를 해결하는 방법은 다음과 같습니다.

  • 도구-> 옵션-> 디버깅-> 일반으로 이동하십시오.

  • "내 코드 만 활성화"옆에있는 확인 표시를 확인하십시오.

  • 도구-> 옵션-> 디버깅-> 기호로 이동하십시오.

  • "..."버튼을 클릭하고 캐시 된 심볼을 저장하기 위해 로컬 컴퓨터 어딘가에 새 폴더를 생성 / 선택하십시오. 필자는 "Symbol caching"이라는 이름을 지정하여 Documents-> Visual Studio 2012에 넣었습니다.

  • "모든 심볼로드"를 클릭하고 Microsoft 서버에서 심볼이 다운로드 될 때까지 기다리십시오. 시간이 걸릴 수 있습니다. 모든 심볼로드 버튼은 디버깅하는 동안에 만 사용할 수 있습니다.

  • Visual Studio가 Microsoft 서버를 원격으로 쿼리하지 못하게하려면 "Microsoft Symbol 서버"옆에있는 확인 표시를 선택 취소하십시오.

  • "확인"을 클릭하십시오.

이제부터 심볼 로딩이 훨씬 빨라질 것입니다.

Microsoft 어셈블리를 변경 / 다운로드 할 경우 기호 대화 상자로 돌아가서 "모든 기호로드"를 다시 수행해야 할 수도 있습니다.


31
나를위한 해결책은 없습니다. 이것은 Microsoft 기호 관련 문제를 해결하는 사람들에게 좋은 솔루션입니다. 불행히도, 내 문제는 내 자신의 상징을 중심으로 돌아가는 것 같습니다. 이러한 심볼은 이미 로컬에 캐시되어 있으며 어떤 이유로 단 한 번의로드로 수백 개의 타일을 컴파일했습니다.
Ber'Zophus

8
이 팁 덕분에 여기에있는 하나의 문제는 모든 기호로드 버튼이 나에게 어떤 아이디어도 사용할 수 없다는 것입니다.
Chris McGrath

14
@ChrisMcGrath이 링크를 시도 social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/...를 . Btw는 큰 답변에 감사드립니다
Bobby Tables

16
단계를 수행 한 후에도 "모든 심볼로드"버튼이 숨겨져 클릭 할 수 없습니다. 지금 어떻게해야합니까? 나는 VS 익스프레스 2012 사용하고 있습니다
Himanshu 가르 왈

86
모든 심볼로드 버튼이 비활성화 된 사용자를위한 솔루션은 다음과 같습니다. 버튼은 디버깅 중에 만 사용할 수 있습니다.
Gwynnbleid1

114

intelliTrace를 끄면이 문제가 해결되었습니다.

Visual Studio에서 도구-> 옵션-> IntelliTrace

그런 다음 "Enable IntelliTrace 활성화"확인란의 선택을 취소하십시오.

Visual Studio 2012에서 IntelliTrace 비활성화


2
단위 테스트 중 하나를 단계별로 진행할 때이 문제가 발생했습니다. intellitrace가 켜진 상태에서 약 300 초, 꺼 졌을 때 약 14 초가 걸렸습니다. 이 수정은 실제로 저에게 효과적이었습니다.
Paul Bullivant

2
시작 시간을 25 초에서 6 초로 개선했습니다. 응용 프로그램 시작시 자체 코드를 많이 실행했기 때문에 많은 도움이되었다고 생각합니다.
James Ellis-Jones

2
Goddamnid ... 1 분에서 10 초. VS2012 Ultimate에서는 기본적으로 선택되어 있습니다. 조심해
Kevin Cloet

7
도구 => 옵션에서 Intellitrace를 찾을 수 없습니다. .. 나는 vsComunity 2015
shireef khatab

8
Visual Studio 2015에서 Intellitrace는 VS 2015 Enterprise Edition에만 있습니다.
HK1

78

이 중 어느 것도 효과가 없었지만 삭제 된 기호에서 중단 점을 발견했습니다. 2010 년이 걸려있는 것 같습니다. 이것이 문제인지 확인하려면 디버그-> 창-> 중단 점을 수행하십시오.있는 경우 삭제하십시오.

손더스는이를 확인했지만이 문제에 대한 솔루션에는 언급되지 않았다고 언급했다. 어쩌면 우리 모두에게 공통적 인 지식이있을 수도 있습니다.


5
VS2010에서 갑자기이 문제가 발생하기 시작했으며 실제로 문제를 일으킨 중단 점 중 하나였습니다. 중단 점을 지우 자마자 다시 빨라졌습니다.
David Airapetyan

3
와우 ..VS2012는 간단한 프로젝트를 만들기 위해 5 분 동안 크롤링했습니다. 모든 중단 점을 지우고 다시 빠르게 밝아졌습니다. 감사합니다 !!
QFDev

1
이것을 읽고 당신이 말한 것을 따르면, 어떻게 든 내 edmx 엔티티 파일 중 하나의 XML 코드에 중단 점이 있음을 발견했습니다. 당신은 남자 / 여자입니다.
JB06

정말 감사합니다. 이것은 VS2010의 성능이 매우 느린 내 문제를 해결했습니다.
Vaibhav Patle

2
이것은 또한 Visual Studio 2015에서 느리게 디버깅 문제를
일으켰습니다

41

"Temporary ASP.NET Files"폴더를 삭제하고 로컬 호스트 페이지로드가 크게 향상되었습니다. 경로는 다음과 같습니다 ... % temp % \ Temporary ASP.NET Files \


9
C : \ Users \ {USER_NAME} \ AppData \ Local \ Temp는 경로이고 "AppData"폴더는 숨겨진 폴더입니다
Shiva Naru

2
나는 여기에서 1GB의 오래된 쓰레기를 발견했습니다 .... 모든 것을 삭제하고 VS를 조금 더 잘 실행하십시오. :)
RitchieD 2016

29

FusionLog를 활성화 했습니까?

내 VisualStudio는 디버깅을 시작할 때 시작, 솔루션 열기 및 심볼로드가 매우 느 렸습니다. 내 컴퓨터에서만 느 렸지만 다른 컴퓨터에서는 느 렸습니다.

FusionLog는 수많은 로그 항목을 디스크에 씁니다. RegEdit에서 비활성화하면 내 경우에 모든 것이 해결되었습니다.

이것은 레지스트리의 FusionLog 키입니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

ForceLog 값을 확인하십시오 (1 활성화, 0 비활성화).


1
음 ... 아주 좋은 답변입니다. 나는 같은 보트에 있었다. 또한 FusionLog오래 전에 활성화 했으며 비활성화하는 것을 잊었습니다. 이제 ASP.NET MVC앱 디버깅이 훨씬 빠릅니다. 고마워요 @rkawano. :)
Leniel Maccaferri

29

나는 같은 문제를 겪고 위의 해결책 중 대부분을 시도했습니다. 단순히 캐시와 임시 파일을 삭제하면 효과가 있습니다.

이 두 폴더의 내용을 제거하십시오.

C:\Users\\{UserName}\AppData\Local\Microsoft\WebsiteCache

C:\Users\\{UserName}\AppData\Local\Temp (특히 iisexpress 및 Temporary ASP.NET Files 폴더).

C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup다음 내용 의 폴더에 cmd 파일을 추가하여 Windows에 로그온 할 때 자동으로 발생하도록 설정할 수 있습니다 .

rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q

rmdir C:\Users\\{username}\AppData\Local\Temp /s /q

이것은 효과가 있었다. "AppData"폴더는 누군가가 찾을 수없는 경우를 대비하여 숨겨진 폴더입니다.
시바 나루

3
이것은 하나입니다! Windows에 로그온 할 때 자동으로 수행되도록 잘 작동합니다. DeleteVisualStudioCache.cmd라는 파일을 C : \ Users \ {username} \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \에 추가했습니다. 다음 명령으로 시작 : rmdir C : \ Users \ {username} \ AppData \ Local \ Microsoft \ WebsiteCache / s / q rmdir C : \ Users \ {username} \ AppData \ Local \ Temp / s / q pause
Graham Laight

25

나는 그 이유는 아니지만 적어도 원인을 알 수 있다고 생각합니다. 문제가 다시 발생하기 시작했을 때, 수많은 "conhost.exe"프로세스가 분리 된 것을 발견했습니다. Visual Studio를 닫으면 계속 열려 있습니다. 각각의 작업을 끝내고 마침내 문제를 확실하게 해결했습니다. [희망적으로]

conhost.exe는 Visual Studio에서 사용하지만 Visual Studio 프로세스는 아닙니다. 따라서 다른 사용자가 conhost.exe를 실행하는 다른 응용 프로그램이있을 수 있습니다. YMMV를 제외한 모든 작업을 안전하게 종료하십시오.)

왜 이런 일이 발생합니까? 한 번에 둘 이상의 프로젝트를 열 때 발생하는 것처럼 보이며 언제든지 프로젝트 중 하나만 빌드하고 디버그하더라도 자주하는 경향이 있습니다.


편집 # 1-불행히도 "은 탄환"이 아닙니다. 항상 나를 위해 작동하지는 않습니다. 일반적으로 상황이 느려지면 모든 Visual Studio 세션을 닫은 다음 작업 관리자로 이동하여 conhost.exe, iisexpress.exe Microsoft.VisualStudio.Web.Host.exe 및 MSBuild.exe 인스턴스를 종료합니다. 내가 찾을 수 있습니다.

일반적으로 그 후 프로젝트를 다시 시작하면 신속하게로드됩니다. 그러나 항상 그런 것은 아닙니다.

실제로 최선의 조치는 리디렉션 된 폴더 / 네트워크 공유에서 코드를 빌드하고 디버그하지 않는 것입니다.


편집 # 2-2 년 후에도 Visual Studio Community 2013에서 여전히 문제가되지만 최소한 범인 작업 인 Explorer.exe를 찾은 것 같습니다 . 그래, 누가 알았어. 그 작업을 끝내는 순간 bam, 페이지가 1 초 안에로드됩니다.

리디렉션 된 네트워크 드라이브에 열려있는 Windows 탐색기 파일 브라우저가있는 경우 (종종 코드가있는 위치)이 문제가 발생하는 것 같습니다. 창을 닫는 것만으로는 충분하지 않으므로 전체 Explorer.exe 작업을 종료해야합니다. 나는 그것이 무엇을하고 있는지 추측 할 수 있었다 ... 파일 핸들이있는 견과류?

나는 일반적으로 작업 관리자를 사용하여 새로운 explorer.exe 작업을 시작할 수 있습니다 (많은 alt-tabbing 만 걸릴 수 있음) .Visual Studio는 계속 멋지고 빠르게로드됩니다. 그러나 Windows 탐색기를 다시 열면 거의 항상 슈퍼 슬로우 모션으로 돌아갑니다.

따라서 리디렉션 된 네트워크 공유가있는 경우 공유하십시오. 현지에서 일하는 것이 확실합니다.


나는 이것이 약간 오래된 뉴스라는 것을 알고 있지만, 같은 문제가 있었다. 우리 팀은 로컬 소스에서 파일이 실행되는 위치로 파일을 복사하는 빌드 스크립트를 사용하도록 제안했으며 해당 서브 루틴을 자체적으로 실행할 때마다 conhost.exe를 작성하고 닫지 않습니다. 그 여분의 사본을 모두 끝내면 번개가 다시 빨리 달렸습니다.
SomeRandom

22

위의 방법은 모두 좋은 해결책이며 모두 시도했지만 여기 에 해결책을 얻었습니다.

Debug -> Delete All Breakpoints

19

나에게 그것은 IE 9.08.8112.16241이었다. Firefox 또는 Chrome을 사용하자마자 F10 또는 F11로 느린 디버깅이 없었습니다. IE의 문제가 무엇인지 모르지만 공식적으로 테스트에 멸시합니다.

업데이트 : 모든 IE 프로그램 추가 기능을 해제했으며 다시 최고 속도로 돌아 왔습니다. 한 번에 하나씩 켜면 LastPass (나의 경우)가 범인임을 알 수있었습니다. 나는 결국 MS를 비난하지 않는 것 같아요.


2
이것은 내 문제도 해결했습니다. 디버깅하려고 할 때, 특히 QuickWatch 창을 사용할 때 완전한 시스템 잠금이 발생했습니다. LastPass 툴바를 비활성화해야합니다. (IE 10.0.9200.16635)
mpeterson

1
이것이 내가 StackOverflow를 좋아하는 이유입니다. 하지만 LastPass는이 문제를 해결해야합니다. 지금 알리기 위해 이메일을 보내고 있습니다. VS2013 및 IE 11의 문제는 여전히 문제입니다. LastPass를 비활성화하고 정상으로 돌아갑니다. 정보에 대한 UserBlueOne 덕분에 다시 작업 할 수 있습니다.
Sean

1
꿈의 마지막 패스! VS 2012에서 MVC 앱으로 디버깅 할 때 키보드가 완전히 채워졌습니다. 비활성화 된 LastPass와 모든 것이 다시 날아갔습니다. 감사! 공감.
Tony

IE가 포함 된 Win8.x에서 MS 계정을 사용하여 로그인하면 로그인을 동기화 할 수 있으므로 LastPass를 사용할 필요는 없지만 여전히 (부분적으로) 이점이 있습니다. :)
Peter

이것은… 나를 위해 일했습니다. 현재는 2019 년 (6 년 후)이며 Microsoft Edge와 함께 LastPass 플러그인을 사용하고 있습니다.
Luke Maurer

15

나를 위해 web.config의 컴파일 태그에 다음 두 가지 특성을 추가하여 기본적으로 성능을 크게 향상시키는 이 팁 을 구현 했습니다.

<compilation ... batch="false" optimizeCompilations="true"> ... </compilation>

batch = "false"는 무엇을합니까?

변경되어 재 컴파일이 필요한 페이지 만 컴파일하여 사전 컴파일을보다 선택적으로 만듭니다.

optimizeCompilations가 정확히 무엇을하고 있습니까? 출처

ASP.NET은 bin 및 App_Code 폴더 및 global.asax를 비롯한 여러 가지 상태를 포함하는 응용 프로그램 별 해시 코드를 사용합니다. ASP.NET 앱 도메인이 시작될 때마다이 해시 코드가 이전에 계산 한 것과 다른지 확인합니다. 있는 경우 전체 codegen 폴더 (컴파일 및 섀도 복사 된 어셈블리가있는 위치)가 지워집니다.

이 최적화가 켜져 있으면 (optimizeCompilations = "true"를 통해) 해시는 더 이상 bin, App_Code 및 global.asax를 고려하지 않습니다. 결과적으로 변경 사항이 있으면 codegen 폴더를 지우지 않습니다.

참조 : msdn의 컴파일 요소


2
게시 해 주셔서 감사합니다. 이것은 실제로 허용 된 답변보다 내 성능을 향상시키는 데 더 많은 일을했습니다.
Kanapolis

@ Ber'Zophus 당신은 이것을 시도하고 우리와 결과를 공유 할 수 있습니까?
Korayem

컴파일은 system.web에 들어갑니다
The One

1
대형 솔루션 및 웹 애플리케이션 (MVC)에서 작동하도록 확인되었습니다.
hQuse

12

디버깅에도 실행 성능 문제가 있었고 매우 많은 디버거 옵션을 시도했습니다. 필자의 경우이 옵션을 변경하면 엄청난 성능이 달성됩니다.

도구-옵션-디버깅-출력 창-(일반 출력 설정-모든 디버그 출력)-OFF


12

필자의 경우 VS 2012의 .NET Reflector Visual Studio Extension (버전 8.3.0.93)이었습니다. 각 단계별로 디버깅하는 데 10 초가 걸렸습니다. (F10) .

Visual Studio에서 도구 / 확장 및 업데이트 ... 로 이동 하여 .NET 리플렉터 Visual Studio Extension을 비활성화하십시오 . Visual Studio를 다시 시작하는 것을 잊지 마십시오.


나는 이것이 내 문제를 일으키는 어려운 방법을 발견했다. 확장 기능을 비활성화 한 후에야 다른 사람이 확장 기능을 발견했는지 확인했습니다.
awj

11

"네이티브 코드"디버거에서 Visual Studio 디버깅 속도가 느려지는 문제가있었습니다. 를 사용할 가있었습니다. 비활성화하십시오.

"Visual Studio 2012"에서 다음으로 이동하십시오.

  1. 프로젝트 속성->
  2. 웹->
  3. 디버거 (페이지 하단). ->
  4. ASP.NET을 제외한 모두 비활성화

도움이 되길 바랍니다.

비슷한 질문 : 1 , 2


광산은 이미 불행히도 설정되어 있으므로 해결할 수 없습니다. 그러나 다른 사람들이 시도하는 좋은 조언이 될 수 있습니다.
Ber'Zophus

그것은 나를 위해 그것을 고쳤다!
Harvey

11

내 경우에는

Tools/Options/Debugging/General/Enable JavaScript debugging for ASP.NET (Chrome and IE)

이것을 선택 해제하면 디버그 시작이 45-60 초에서 0-5 초로 감소했습니다.


이 사람은 가장 빠른 한
프랭크 Myat 목

10

한 번, 정전 후 중단 점에 도달하거나 예외가 발생할 때마다 동일한 속도 저하 문제에 직면해야했습니다.

"suo"파일 ( "sln"솔루션 파일과 동일한 디렉토리에 있음)이 손상되어 모든 것이 느려질 수 있다는 점을 모호하게 생각했습니다.

여기에 이미지 설명을 입력하십시오

"suo"파일을 삭제했는데 모든 것이 정상입니다. .suo 파일 삭제는 무해하며 Windows 레이아웃과 시작 프로젝트 및 기타 중요하지 않은 몇 가지 사용자 지정 만 다시 생성한다는 것을 의미합니다.


나는 단지 정전 후에도 느려 졌다는 것을 깨달았습니다.이 답변에 감사드립니다.
Nic

.vs이후 버전의 Visual Studio에서 폴더를 찾습니다 . 삭제하십시오.
CAD 블로크

10

나는 또한이 문제에 직면했다. 아래는 내가 수행하는 단계이며 항상 나를 위해 일한다.

  • 솔루션의 .suo 파일을 삭제합니다.
  • 임시 ASP.NET 파일 삭제 ( % WINDOW % \ Microsoft.NET \ Framework \\ Temporary ASP.NET Files 에서 찾을 수 있음 )
  • 응용 프로그램의 모든 중단 점을 삭제합니다.

다시 시작하면 평상시보다 10 배 더 길지만 평상시보다 5 배 길어졌습니다. .suo 파일을 삭제하면 거의 즉시 시작됩니다. 감사!
Shelby115

.suo 파일을 삭제 한 것 같습니다. 이 파일을 삭제하는 이유는 성능 향상에 도움이됩니다.?
SharpCoder

@SharpCoder .suo에는 현재 IDE에서 열린 파일, 디버거 정보, 로컬 설정 등과 같은 많은 정보가 포함되어 있습니다.이 파일이 손상되면 더 많은 CPU 사용량을 소비하기 시작하여 VS 속도가 느리고 중단됩니다. 어떤 경우.
Geeky Ninja

9

여전히이 문제가 있는지는 모르겠지만 VS가 나를 처리하게하는 대신 프로세스 자체에 디버거를 연결하여 Visual Studio에서 사이트를 디버깅하면 시간이 크게 향상됩니다. 나는 VS에 대한 AttachTo라는 확장을 사용하고 여기 에 어떻게 사용하는지에 대한 작은 기사가 있습니다 .

이게 도움이 되길 바란다.


7

브라우저 링크 를 비활성화하여 느린 VS 문제가 해결되었습니다.

여기에 이미지 설명을 입력하십시오


나는 "감사합니다"라는 의견이 여기에 약간 찌그러진 것을 알고 있지만, 진심으로 감사합니다. 이 한 가지 변화는 내가 테스트하는 프로그램을 느리게부터 본질적으로 즉각적인 반응성에 사용할 수없는 수준으로 끌어 올렸습니다. 로드 할 때까지 기다리지 않아도되기 때문에 하루에 한두 시간 정도 생산성을 구입했을 것입니다.
thnkwthprtls

@thnkwthprtls 당신은 환영합니다-조심해야 할 MS 기본 설정 중 하나 :)
Salty

비활성화 할 필요는 없습니다. 내 대답 => stackoverflow.com/a/34979659/2736742
A. Morel Morel

6

누군가이 동작이 왼쪽 필드에서 나오는 것을 발견하면 web.config에 중단 점이 설정되어 있지 않은지 확인하십시오. 길 잃은 마우스 클릭으로 설정해야하며 모든 디버그 작업이 실제로 느려집니다.


이 똑같은 일을 직접했습니다. 거의 나를 미치게했다. 왜 지구상에서 web.config 파일의 비활성 중단 점이 디버깅을 완전히 중단합니까?
pleunv

6

하루 종일 기호가 거북이 속도만큼 느리게로드되기를 기다린 후 가능한 내 코드, 기호 캐싱 , Intellitrace , Just-In-Time, 킬링 프로세스 등 가능한 모든 조합을 혼합하고 전환합니다 .

내 솔루션은 실제로 바이러스 백신비활성화하는 것이 었습니다 . 예, Windows Defender가 프로젝트 시작 속도를 늦췄습니다! Visual Studio에서 요청한대로 모든 dll을 확인하고 전체 심볼로드 프로세스를 느리게합니다.

우리 기계에는 솔루션을 정말 빠르게 컴파일 할 수있는 훌륭한 사양이 있다고 말해야하므로 결코 문제가되지 않았습니다. VS 2013 Ultimate에서 코딩합니다.


1
예, 윈도우 디펜더를 끄면 매력처럼 작동합니다! Windows 10에서 Windows Defender를 영구적으로 끄려면 RegEdit 경로 HKLM \ System \ CurrentContolSet \ Services \ WinDefend
hal

AVG 바이러스 백신에 문제가 있습니다. 문제를 해결하기 위해 특정 폴더를 바이러스 백신에서 제외 할 수 있는지 확인한 사람이 있습니까? 심볼을 캐시하고 심볼 캐시 폴더를 제외했지만 아무런 차이가 없습니다.
Graham Laight

1
AV를 유지하고 분석에서 특정 경로 및 대상 (VS 및 프로젝트)을 제외 할 수 있습니다.
Soleil-Mathieu Prévot

5

기호 캐시를 비우면 나에게 도움이되었습니다.

참조 : 메뉴 모음 / 도구 / 옵션 / 디버깅 / 심볼 / 빈 심볼 캐시


3

비슷한 문제가 내 하루의 절반을 낭비했습니다!

내 문제에 대한 해결책이 여기에 언급 된 것과 다르므로 다른 사람을 도울 수 있도록 게시 할 것입니다.

광산은 중단 점이었다. 내 프로젝트 외부의 라이브러리 함수에서 중지되어야 하는 "기능 중단 " (예 : 코드 줄에서 F9 키를 누르는 대신 중단 점 창을 사용하여 생성) 중단 점이있었습니다.

그리고 "Intellisense를 사용하여 기능 이름을 확인했습니다 "가 체크되었습니다. ( 여기에 정보가 있습니다 .)

이것은 지옥처럼 느려졌습니다 (프로젝트 시작은 2 초에서 5 분).

중단 점을 제거하면 문제가 해결되었습니다.


3

위의 모든 작업을 수행 한 후에 저에게 도움이 된 한 가지는
다음과 같습니다 . Threads 창 (Debug-> Windows-> Threads)에서 Group by를 None으로 설정합니다. 이것은 디버깅하는 동안에 만 수행 할 수 있습니다.

창을 닫은 후에도 영향을 미쳤습니다.


3

Visual Studio에서 :

도구-> 옵션-> 디버깅-> 기호

"지정된 모듈 만"을 선택하십시오. "모듈 지정"링크를 클릭하고 빈 모듈을 추가하십시오 (새 문서 단추를 클릭하고 확인을 누르십시오).


3

Windows 탐색기에서 솔루션 폴더를 열고 Visual Studio를 닫고 Windows 탐색기에서 .suo 파일을 삭제하십시오.

이제 Visual Studio에서 프로젝트를 열면 디버거가 빠르게 연결 / 분리됩니다.


3

나에게 그것은 조건부 중단 점이었다. 그것들은 실제로 속도를 늦추는 것처럼 보입니다.


1
실제로 그들은한다. 그러나 그것을 포함하는 행이 실제로 실행되는 경우에만.
피터 Mortensen

3

환경 변수로 이동하여 _NT_SYMBOL_PATH 키를 찾으십시오.

삭제하십시오.

Voila는 매력처럼 일했습니다.


value == symsrv*symsrv.dll*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols여전히 주사위가 없습니다!
SliverNinja-MSFT

3

나에게 문제는 동일한 프로젝트에 대해 여러 개의 탭을 열었을 때 매우 무거운 "브라우저 링크"기능이었습니다!

프로젝트를 시작할 때마다 브라우저 링크 통신이 포함 된 새 탭이 열립니다.

프로젝트와 관련된 모든 탭을 닫고 하나만 열어 두십시오!

이 무료 즉석 비주얼 스튜디오! 마술이야! ;-)

“브라우저 링크는 Visual Studio 2013 이후 개발 환경과 하나 이상의 웹 브라우저간에 통신 채널을 만드는 기능입니다. 브라우저 링크를 사용하면 한 번에 여러 브라우저에서 웹 응용 프로그램을 새로 고칠 수 있으며 이는 브라우저 간 테스트에 유용합니다.”


3

기본 VS 설정과 크게 차이가없는 사람들을위한 빠르고 쉬운 솔루션입니다.

도구-> 설정 가져 오기 및 내보내기-> 예, 현재 설정 저장-> Visual C #

위의 솔루션이 다른 기본 설정에서도 작동한다고 확신합니다. 필자의 경우 심볼로드 설정이 엉망이지만 제안 된 솔루션 중 상당수를 시도했지만 문제를 해결할 수 없었습니다.


3

관리자 모드에서 Visual Studio를 열지 않았는지 확인하십시오

이 문제에 직면하여 일반 모드에서 실행해야했습니다.


6
프로젝트를 IIS에서 실행하도록 설정 한 경우 불행하게도 관리자 권한으로 실행해야합니다.
Nelson Rothermel

@NelsonRothermel 어떤 버전입니까? 더 이상 (VS2017) 없습니다.
Soleil-Mathieu Prévot

@ 솔레 일 : VS2017에서는 여전히 필요합니다. IIS는 사용자 공간이 아닌 Windows 서비스 (또는 서비스 집합)로 실행됩니다. 관리자 권한이 필요없는 IIS Express를 참조 할 수 있습니다. 일반적으로 후자를 사용하는 것이 좋습니다. 특히 컴퓨터를 잠그는 조직에서는 좋지만 몇 가지 단점이 있습니다.
Nelson Rothermel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.