상세 컨텐츠

본문 제목

Visual Studio 성능 향상 팁

본문

많은 분들이 Visual Studio를 IDE로 쓰고 계십니다. 저 또한 2005 버전부터 2022까지 쓰고 있는데요 디버깅이나 코딩을 할 때 버벅거리는 현상이 간혹 발동을 합니다. 그래서 새 버전을 설치한 후 항상 아래의 방법을 이용하여 성능을 향상하는데요. 코딩의 편의성을 살리냐 아니면 IDE의 버벅 거림을 방지하느냐 둘 사이의 조정을 해야 하죠. 많은 기능들이 코딩을 편하게 하지만 그만큼 IDE가 느려지는 점이 있죠.

참고로 이 글은 Visual Studio Code 가 아닙니다. Visual Studio Community, Professional과 Enterprise 버전에 해당되는 글입니다.
 

반응형

1. CodeLens (코드렌즈)

Professional과 Enterprise 버전에 해당됩니다. 메서드 레퍼런스를 다 찾아주는 기능이지만 IDE 가 느려진다는 점이 있습니다. 메모리를 많이 차지하죠. 이 부분은 비활성화시켜주세요.

영문 버전 Tools > Options > Text Editor > All Languages > CodeLens
한글 버전 도구 > 옵션 > 텍스트 편집기 > 모든 언어 > CodeLens

2. XAML Designer (XAML 디자이너)

XAML Designer는 WPF, UWP, Xamarin.Forms, 나 MAUI 앱을 만들 때 쓰이죠. WinForm 만들 때 디자인을 돕는 UI 같이 XAML도 디자인하는 UI가 이 XAML Designer인데요. 아주 메모리와 CPU를 많이 먹습니다. XAML을 많이 아시는 분은 그냥 HTML 코드 쓰듯이 XAML 코드만 쓰시는 게 훨씬 빠르실 거예요. XAML 언어 코딩할 때에만 해당되는 옵션입니다. 비활성화 추천합니다.

영문 버전 Tools > Options > XAML Designer > Enable XAML Designer
한글 버전 도구 > 옵션 > XAML 디자이너 > XAML 디자이너 사용

3. Map Mode (지도 모드)


Map Mode는 코드 윈도 우측에 아래위로 쉽게 갈 수 있고 에러가 어디에 있는지 쉽게 볼 수 있는 긴 창입니다. 하지만 이 부분도 컴퓨터의 리소스를 먹는 기능이라 편하지만 사양이 낮은 컴퓨터에는 아쉽게 비활성화를 시켜야 할 수도 있습니다.

영문 버전 Tools > Options > Text Editor > All Languages > Scroll Bars 에서 Use map mode
한글 버전 도구 > 옵션 > 텍스트 편집기 > 모든 언어 > 스크롤 막대 에서 세로 스크롤 막대에 지도 모드 사용

 

728x90

4. Windows Defender (윈도즈 디펜더)

이 부분이 아주 중요한 부분입니다. 윈도즈 디펜더는 항상 바이러스 스캔을 하여서 지금 쓰이고 있는 파일들은 항상 실시간 스캔이 되고 있죠. 코딩을 하건 디버깅을 하건 여러 가지 파일들이 가동이 되므로 어디서 뭐가 디펜더에 걸려서 스캔이 될 시에는 느려집니다. 그래서 Visual Studio 가 설치된 폴더나 프로젝트 파일들이 있는 폴더들은 당연히 디펜더에서 스캔에서 제외를 시켜주면 좋습니다.

아래의 PowerShell 코드를 텍스트파일 .ps1 확장자로 저장을 하시고 PowerShell에서 구동을 하세요.  구동 시에 지금 사용하시는 프로젝트 파일들이 들어가 있는 페어런트 폴더위치를 입력해야 합니다.

아니면 여기에 보이는 폴더 및 프로세스 하나하나 다 윈도즈 디펜더에서 제외시킵니다.  다른 보완 프로그램을 이용하시면 그 프로그램에도 넣어 주어야 합니다.

$userPath = $env:USERPROFILE
$pathExclusions = New-Object System.Collections.ArrayList
$processExclusions = New-Object System.Collections.ArrayList

$pathExclusions.Add('C:\Windows\Microsoft.NET') > $null
$pathExclusions.Add('C:\Windows\assembly') > $null

$pathExclusions.Add($userPath + '\Downloads\HeidiSQL_11.3_64_Portable') > $null

$pathExclusions.Add($userPath + '\.dotnet') > $null
$pathExclusions.Add($userPath + '\.librarymanager') > $null

$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VisualStudio') > $null
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VisualStudio Services') > $null
$pathExclusions.Add($userPath + '\AppData\Local\GitCredentialManager') > $null
$pathExclusions.Add($userPath + '\AppData\Local\GitHubVisualStudio') > $null
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\dotnet') > $null
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VSApplicationInsights') > $null
$pathExclusions.Add($userPath + '\AppData\Local\Microsoft\VSCommon') > $null
$pathExclusions.Add($userPath + '\AppData\Local\Temp\VSFeedbackIntelliCodeLogs') > $null

$pathExclusions.Add($userPath + '\AppData\Roaming\Microsoft\VisualStudio') > $null
$pathExclusions.Add($userPath + '\AppData\Roaming\NuGet') > $null
$pathExclusions.Add($userPath + '\AppData\Roaming\Visual Studio Setup') > $null
$pathExclusions.Add($userPath + '\AppData\Roaming\vstelemetry') > $null
$pathExclusions.Add($userPath + '\AppData\Roaming\HeidiSQL') > $null

$pathExclusions.Add('C:\ProgramData\Microsoft\VisualStudio') > $null
$pathExclusions.Add('C:\ProgramData\Microsoft\NetFramework') > $null
$pathExclusions.Add('C:\ProgramData\Microsoft Visual Studio') > $null
$pathExclusions.Add('C:\ProgramData\MySQL') > $null

$pathExclusions.Add('C:\Program Files\Microsoft Visual Studio') > $null
$pathExclusions.Add('C:\Program Files\dotnet') > $null
$pathExclusions.Add('C:\Program Files\Microsoft SDKs') > $null
$pathExclusions.Add('C:\Program Files\Microsoft SQL Server') > $null
$pathExclusions.Add('C:\Program Files\MySQL') > $null
$pathExclusions.Add('C:\Program Files\IIS') > $null
$pathExclusions.Add('C:\Program Files\IIS Express') > $null

$pathExclusions.Add('C:\Program Files (x86)\Microsoft Visual Studio') > $null
$pathExclusions.Add('C:\Program Files (x86)\dotnet') > $null
$pathExclusions.Add('C:\Program Files (x86)\Microsoft SDKs') > $null
$pathExclusions.Add('C:\Program Files (x86)\Microsoft SQL Server') > $null
$pathExclusions.Add('C:\Program Files (x86)\IIS') > $null
$pathExclusions.Add('C:\Program Files (x86)\IIS Express') > $null

$processExclusions.Add('ServiceHub.SettingsHost.exe') > $null
$processExclusions.Add('ServiceHub.IdentityHost.exe') > $null
$processExclusions.Add('ServiceHub.VSDetouredHost.exe') > $null
$processExclusions.Add('ServiceHub.Host.CLR.x86.exe') > $null
$processExclusions.Add('Microsoft.ServiceHub.Controller.exe') > $null
$processExclusions.Add('PerfWatson2.exe') > $null
$processExclusions.Add('sqlwriter.exe') > $null

Write-Host "이 스크립트는 윈도우즈 디펜더에 Visual Studio 2022에 관한 폴더및 프로세스를 제외시킵니다."
Write-Host ""
$projectsFolder = Read-Host '사용하시는 Visual Project 프로젝트 폴더를 입력하여주세요: (예제: c:\source)'

Write-Host ""
Write-Host "Adding Path Exclusion: " $projectsFolder
Add-MpPreference -ExclusionPath $projectsFolder

foreach ($exclusion in $pathExclusions) 
{
    Write-Host "Adding Path Exclusion: " $exclusion
    Add-MpPreference -ExclusionPath $exclusion
}

foreach ($exclusion in $processExclusions)
{
    Write-Host "Adding Process Exclusion: " $exclusion
    Add-MpPreference -ExclusionProcess $exclusion
}

Write-Host ""
Write-Host "제외된 항목들입니다:"

$prefs = Get-MpPreference
$prefs.ExclusionPath
$prefs.ExclusionProcess

Write-Host ""
Write-Host "즐거운 코딩되세요!"
Write-Host ""

부록: .ps1 스크립트 파일 구동 방법


PowerShell 이용 방법
위의 스크립트를 .ps1 확장자로 저장을 하고 PowerShell을 관리자로 시행합니다. 그러면 아래와 같이 PS C:...>라고 왼쪽에 커멘드 치는 곳에 보일 거예요.

그리고 ps1파일이 저장되어 있는 폴더로 이동하세요. (cd 커멘드)

그 폴더에서 다음의 형식으로 커멘드를 입력하시고 엔터를 누르면 스크립트가 진행이 됩니다.

.\스크립트파일이름.ps1 (enter 키 누름)


Command Prompt 이용 방법
PowerShell 보다 Command Prompt를 이용하시고 싶으신 분들은 다음의 형식으로 입력하시면 됩니다 (따옴표 개수 주의).

powershell -noexit "& ""스크립트 파일이 위치한 full path\스크립트 파일 이름.ps1""" (enter 키 누름)

즐거운 코딩되세요!


도움이 되셨거나 즐거우셨다면 아래의 ❤️공감버튼이나 구독버튼을 눌러 주세요~  감사합니다

 

 

728x90
반응형

관련글 더보기