Rider의 새로운 기능

Rider 2021.3은 Hot Reload 기능을 포함하여 .NET 6 SDK에 대한 공식 지원을 제공합니다. 완전히 새롭게 디자인된 기본 툴바와 Debug(디버그) 탭, 새로운 Problems View(문제 뷰) 도구 창을 제공합니다. 또한 Rider는 최신 언어 기능을 더 효과적으로 사용할 수 있도록 파일 범위의 네임스페이스 및 global using 지시문과 같은 더 많은 C# 10 기능을 지원합니다.

Unity 및 F# 지원, 저장 시 Reformat and Cleanup(서식 다시 지정 및 정리), .NET 6, .NET 5 및 .NET Core 3.x SDK용 XAML 미리보기, Apple Silicon 칩 지원 등의 업데이트도 이루어졌습니다.

.NET 6 SDK 지원

Rider 2021.3은 다음과 같은 .NET 6 SDK 공식 지원을 제공합니다.

  • 프로젝트 템플릿.
  • 최신 대상 프레임워크.
  • 최신 NuGet API.
  • Hot Reload.
  • Blazor WebAssembly 디버그.
  • 새 SDK를 대상으로 하는 프로젝트 생성/실행/디버그.
  • .NET 6 프로젝트를 위한 ASP.NET 스캐폴딩.

Rider는 .NET 6 SDK의 일부인 Xamarin iOS 및 Xamarin Android 프로젝트에 대한 조기 지원도 제공합니다.

Hot Reload

Rider는 .NET 6 Hot Reload 기능을 지원합니다! 앱이 실행되는 동안 앱에서 관리되는 소스 코드를 수정하면 Rider가 앱을 다시 시작하지 않고 실행 중인 앱에 이 변경 사항을 적용할지 여부를 묻습니다. 텍스트 에디터 상단에서 노란색 Sources are modified(소스가 수정되었습니다) 알림 표시줄을 찾아보세요. 변경 사항을 수락하면 앱이 즉시 업데이트되고 업데이트된 앱으로 계속 작업할 수 있습니다.

.NET Project(.NET 프로젝트).NET Launch Settings Profile(.NET 시작 설정 프로파일) 실행 구성을 사용하는 경우 Hot Reload가 자동으로 활성화됩니다.

Hot Reload 기능을 활성화 및 비활성화하기 위한 새로운 전용 페이지가 마련되었으며, Preferences(환경 설정)/Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | Hot Reload로 이동하면 됩니다.

제한 사항:

  • Hot Reload 세션 중 디버그는 Windows에서만 사용할 수 있으며, Hot Reload를 디버거와 함께 사용하면 단계별 실행 및 재개 시 변경 사항을 자동으로 적용할 수 있습니다. Hot Reload는 디버그하지 않을 때 전체 플랫폼에서 작동합니다.
  • Hot Reload는 F# 및 VB.NET 애플리케이션을 지원하지 않습니다. 또한 Hot Reload는 WPF, Windows Forms 및 .NET MAUI와 같은 프레임워크에서 UI 형식에 이루어지는 변경을 지원하지 않습니다. Blazor WebAssembly(WASM)도 아직 지원되지 않습니다.
  • Razor Pages에 대한 변경 사항을 표시하려면 브라우저에서 페이지를 다시 로드해야 합니다. 자동 페이지 재로드는 향후 릴리스에 추가될 예정입니다.

자세한 내용: Rider 2021.3에서 지원되는 .NET 6 Hot Reload

UI/UX

새롭게 디자인된 기본 툴바

이전의 기본 툴바에는 다소 문제가 있어 이 부분을 손보기로 했습니다. 아이콘이 너무 많았고 그중 대부분은 거의 사용되지 않았으며, VCS 및 탐색 기능을 찾을 수 없었습니다. 가장 심각한 문제는 다중 실행 구성을 제어할 수 없다는 것이었습니다.

Rider 2021.3에는 완전히 새롭게 디자인된 기본 툴바가 제공됩니다. 새로운 디자인을 통해 사용자에게 깔끔하면서도 기능적인 툴바를 제공하려고 노력했습니다. 여기에는 다음이 포함됩니다.

  • Rider 컨텍스트 탐색의 기초를 이루는 Back(뒤로)Forward(앞으로) 버튼.
  • 모든 VCS 관련 기능에 액세스하고 이를 사용하기 위한 VCS 위젯. 이 위젯이 이제 Commit(커밋) 도구 창에 더 가깝게 배치되었습니다.
  • 전체 검색 기능의 기본 진입점 역할을 하는 커다란 Search Everywhere(전체 검색) 필드.
  • 솔루션 관련 구성을 관리하기 위한 Solution Configuration(솔루션 구성) 위젯.
  • 실행 구성을 쉽게 관리하고 제어할 수 있는 새로운 Run/Debug(실행/디버그) 위젯.

그러나 이미 이전 툴바를 사용하는 데 익숙한 Rider 사용자의 작업 흐름을 방해하고 싶지는 않기 때문에 새 툴바는 새 Rider를 설치하는 경우에만 기본적으로 활성화됩니다. Rider가 이미 설치되어 있지만 새 툴바를 사용해 보려고 한다면 언제든지 View(뷰) | Appearance(모양) | Toolbar(툴바)(Toolbar Classic(툴바 클래식) 대체)로 이동하여 활성화할 수 있습니다.

문제 뷰

솔루션에 대한 모든 잠재적인 문제를 한 곳에 모아두면 도움이 될 수 있으므로 Problems View(문제 뷰)를 도입했습니다. Problems View(Rider UI의 Problems 탭)는 프로젝트 로드 오류, 실패한 NuGet 복원 프로세스, 열린 파일에 대한 검사, 모든 SWEA 오류와 같이 솔루션에 있는 모든 잠재적 문제를 모아서 보여주는 도구 창입니다. 이 도구 창에는 세 개의 탭이 있습니다.

Current File(현재 파일)

여기에서, 현재 작업 중인 파일에서 Rider 코드 분석이 찾아낸 모든 오류, 경고, 제안 및 힌트를 확인할 수 있습니다. IntelliJ 기반 IDE에서와 동일하게 작동합니다. 수직 스크롤바 상단에 있는 Inspection(검사) 위젯을 이용해 이 탭으로 바로 이동할 수 있습니다.

Toolset, Environment(도구 모음, 환경)

이 탭에는 솔루션 로드 활동, NuGet 복원 프로세스 등과 관련된 모든 진단 및 메시지가 모여 있습니다. 각 문제에 대해 수정 사항이 있으면 적절한 설명과 함께 해당 목록을 제공합니다. 이전에는 이러한 종류의 진단 메시지에 대한 세부 정보를 찾으려면 Event Log(이벤트 로그) 도구 창을 열어야 했습니다.

All Solution Files(모든 솔루션 파일)

SWEA 도구 창의 새로운 홈입니다. Solution Wide Error Analysis(솔루션 전체 오류 분석)를 통해 전체 솔루션에서 발견된 모든 오류를 여기서 확인할 수 있습니다.

북마크 도구 창

유사한 인스턴스인 Favorites(즐겨찾기)를 대체할 Bookmarks(북마크) 도구 창이 새롭게 도입되었습니다.

북마크를 추가하면 기본적으로 Rider는 Bookmarks 도구 창의 프로젝트 이름이 붙은 노드에 북마크를 추가합니다. 새 북마크가 추가될 때마다 해당 노드 내부 목록의 최상단에 표시됩니다. 또한 새 노드를 생성하고 드래그앤드롭으로 항목을 추가할 수 있습니다.

디버거

디버그 탭의 새 UI

Debug(디버그) 탭의 UI가 새로워졌습니다! 설명해야 할 변경 사항이 많습니다.

기본적으로, Threads & Variables(스레드 및 변수), Console(콘솔), Debug Output(디버그 출력) 등 세 개의 탭이 있습니다. Memory(메모리)Parallel Stacks(병렬 스택)와 같은 다른 탭은 숨겨지지만 Options Menu(옵션 메뉴)(맨 오른쪽에 있는 톱니바퀴 아이콘)를 통해 표시할 수 있습니다.

왼쪽 툴바를 완전히 제거하고 여기에 있던 아이콘을 상단 툴바나 컨텍스트 메뉴로 옮겼습니다. 상단 툴바를 가능한 한 단출하게 유지하기 위해 아이콘을 재정렬하고 가장 중요한 액션만 표시되도록 했습니다. 나머지 아이콘은 More(더보기) 드롭다운 메뉴(세로 점 아이콘)에 재배치했습니다. Hide Frames from Libraries(라이브러리에서 프레임 숨기기) 아이콘과 Hide/Show Threads(스레드 숨기기/표시) 토글은 Threads(스레드) 뷰의 컨텍스트 메뉴로 이동되었습니다.

More(더보기) 드롭다운 메뉴 아래에 Settings(설정)가 새로 추가되었습니다. 여기에서 디버거와 관련된 가장 일반적인 설정의 간략한 목록을 확인할 수 있습니다. 이전까지는 Settings(설정)/Preferences(환경 설정) 대화상자로 이동하고 Build, Execution, Deployment(빌드, 실행, 배포) | Debugger(디버거)로 들어가서 검색해야 했습니다.

직접 실행 창 업데이트

최대화 및 최소화의 두 가지 레이아웃이 있습니다. 최소화된 레이아웃에서 Variables(변수) 뷰는 $result 변수의 실행 결과만 표시합니다. 최대화된 레이아웃에서는 $result 변수 외에 이전에 실행된 줄의 기록과 결과를 볼 수 있습니다. Expand/Collapse(펼치기/접기) 아이콘을 사용하여 레이아웃 사이를 전환할 수 있습니다.

Add Watch(감시점 추가)Variables(변수) 뷰에서 Immediate(직접 실행) 창 툴바로 이동되었으며 이제 단축키 Ctrl+Shift+Enter가 사용됩니다.

새로운 Stop on Breakpoints(중단점에서 중지) 옵션을 사용하면 표현식을 실행할 때 평가 프로세스가 중단점에서 강제로 중지됩니다. 이 옵션을 비활성화하면 평가 프로세스가 중단점을 무시할 수 있습니다.

많은 프로퍼티가 있는 객체를 더 편리하게 평가할 수 있도록 이 객체가 이미 평가된 상태로 Evaluate(평가) 창을 여는 Evaluate 아이콘을 여기에 추가했습니다. 이 창에서 객체의 프로퍼티를 트리로 보는 것이 훨씬 쉽습니다.

UWP 앱 디버그

UWP 개발자를 위한 희소식입니다. 디버거를 바로 연결하여 UWP 프로젝트를 시작할 수 있습니다. 더 이상 프로젝트를 먼저 실행한 다음, 실행 중인 프로세스에 디버거를 수동으로 연결할 필요가 없습니다.

Windows Docker 컨테이너 지원

이제 로컬 Windows Docker 컨테이너에서 .NET(Core) 및 .NET Framework 앱을 모두 디버그할 수 있습니다. 이전에는 디버거가 Linux Docker 컨테이너의 .NET Core 앱에서만 작동했습니다.

기타 업데이트

표준 위임(System.Func 또는 System.Action)을 만들 때 위임에서 래핑할 메서드 또는 람다 식으로 쉽게 이동할 수 있습니다. Variables(변수) 목록에서 위임의 노드에 대한 Navigate(탐색) 링크를 확인하세요.

람다 식을 사용하여 event handler(delegate)를 만들 때 새 비주얼라이저를 사용하면 구독자와 캡처된 객체를 더 자세히 조사할 수 있습니다.

이제 이벤트 핸들러에 Captured variables(캡처된 변수) 하위 노드를 가진 Subscribers(구독자) 노드가 있습니다. 이벤트를 구독한 위치로 빠르게 이동할 수 있도록 구독자별로 새로운 Navigate(탐색) 링크를 추가했습니다.

코드 분석

C# 10

Rider에는 계속해서 더 많은 C# 10 기능이 추가됩니다. 오늘 전해 드릴 기쁜 소식은 파일 범위의 네임스페이스, global using, CallerArgumentExpression 속성, '보간된 문자열 핸들러' 콘셉트 및 C# 10 람다가 지원된다는 것입니다.

파일 범위의 네임스페이스부터 살펴보겠습니다. 새로운 구문 자체를 지원하는 것 외에도 원하는 스타일을 선택할 수 있는 새로운 Syntax style(구문 스타일) 옵션이 추가되었습니다(Settings(설정)/Preferences(환경 설정) | Editor(에디터) | Code Style(코드 스타일) | C# | Syntax Style(구문 스타일) | Code body(코드 본문) | Namespaces(네임스페이스)). 스타일을 선택하면 Rider가 스타일을 따르기 위해 변경해야 하는 코드에 대한 검사를 표시하고 적절한 빠른 수정을 제안합니다. 한 번의 클릭으로 프로젝트 또는 전체 솔루션까지 수정 사항을 적용할 수 있습니다.

이제 코드를 이전 구문 스타일로 되돌릴 수 있는 두 가지 컨텍스트 액션인 Convert to file-scoped namespace(파일 범위 의 네임스페이스로 변환)Convert to block-scoped namespace(블록 범위의 네임스페이스로 변환)가 추가되었습니다.

자세히 알아보기: 파일 범위의 네임스페이스

이제 global using에 대해서 간단히 알아보겠습니다. Rider 코드 분석은 global 키워드로 표시된 using을 인식하고 이를 사용하여 프로젝트의 모든 코드 파일에서 심볼을 올바르게 해결합니다. Rider는 global using이 파일 내에서 잘못된 위치에 있는 경우도 알려줍니다.

Rider는 프로젝트에서 사용된 곳이 없는 global using을 사용되지 않은 것으로 강조 표시하고 해당 구문을 제거할 수 있도록 빠른 수정을 제공합니다.

Rider는 코드 완성 및 코드 검사를 포함하여 CallerArgumentExpression 속성에 대한 풍부한 지원을 제공하여 올바르게 사용할 수 있도록 도와줍니다.

자세히 알아보기: CallerArgumentExpression

C# 10은 '보간된 문자열 핸들러'라는 새로운 콘셉트를 도입했습니다. 최종 사용자의 경우 이는 일반적으로 문자열 보간 표현식이 .NET 6에서 더 빠르게 작동하고 새로운 핸들러를 통해 보간 홀에서 Span<char> 값을 사용할 수도 있음을 의미합니다. 라이브러리 작성자의 경우 이 기능을 통해 문자열 보간 표현식을 문자열로 변환할지 여부를 결정할 수 있습니다. Rider 2021.3은 라이브러리 코드에서 '보간된 문자열 핸들러' 패턴을 인식하고 이제 더 많은 위치에서 문자열 보간 표현식의 사용을 안전하게 제안할 수 있습니다.

Rider는 record 구조체를 readonly로 표시하도록 제안하여 최고의 성능을 얻을 수 있도록 도와줍니다. 제어자를 사용하여 타입 선언을 불필요하게 복잡하게 만드는 것을 방지하기 위해 이 검사는 record 타입에 변경되지 않는 인스턴스 멤버가 있고 솔루션에 setter를 통한 변형이 없는 경우에만 표시됩니다(솔루션 전체 분석이 필요).

C# 10을 사용하면 객체 패턴 중첩 대신 점으로 구분된 액세스를 허용하여 패턴 일치 구문을 약간 단순화할 수 있습니다.

Rider는 빠른 수정을 사용한 해당 검사와 빠른 수정 실행을 취소하는 컨텍스트 액션을 제공합니다.

마지막으로 중요한 개선 사항:

  • C# 10 람다에 대한 지원이 향상되었으며 .NET 6 Minimal API 프로젝트에서는 빨간색 코드나 거짓 양성 오류가 없을 것입니다. 또한 Rider는 올바른 구문을 사용하고 컴파일러에서 예상하는 위치에 괄호를 추가하는 데 도움을 줍니다.
  • Rider는 이제 최상위 구문이 포함된 코드에 대해 유효한 생성 클래스 이름으로 Program을 지원합니다.
  • 이제 인터페이스의 static abstract 멤버에 대한 조기 지원을 사용할 수 있습니다. 코드 분석에서는 이 구문이 유효한 것으로 간주하므로 더 이상 빨간색 코드를 처리할 필요가 없습니다. Generate missing members(누락된 멤버 생성) 기능은 static abstract 멤버를 인식하고 올바르게 처리합니다. 이 릴리스에는 상속 여백 표시와 기본/파생 심볼로 이동하는 기능도 포함되어 있습니다.

Null 가능 참조 타입

stackoverflow.com과 같은 다른 리소스에서 코드 조각을 복사하는 것은 드문 일이 아닙니다. 최근에는 C#에서 null 가능 참조 타입을 사용할 수 있으므로 일부 코드 샘플에는 이미 NRT 구문이 포함되어 있습니다. 하지만 솔루션에 NRT가 활성화되어 있지 않다면 어떻게 해야 할까요? Rider에는 Replace with JetBrains.Annotations​(JetBrains.Annotations 속성으로 대체)Remove nullable annotations without ‘#nullable’ context('#nullable' 컨텍스트 없는 null 가능 어노테이션 제거)라는 두 가지 새로운 빠른 수정 기능이 있습니다. 이는 이러한 코드를 프로젝트에 붙여넣은 후 이 구문을 제거하는 데 도움이 됩니다.

때때로 타입 인수와 해당 null 값 가능성 제약 간에 null 값 가능성 여부가 일치하지 않을 수 있습니다. 이제 다음과 같은 경우를 포함하여 이러한 경우에 대한 빠른 수정이 있습니다.

  • 타입 인수에서 null 가능 어노테이션을 제거합니다.
  • 타입 인수에서 notnull 제약을 제거합니다.
  • 타입 매개변수에 null 가능 값을 허용합니다.
  • 타입 인수로 사용되는 타입 매개변수에 null 가능 값을 허용하지 않습니다.

파일, 프로젝트 또는 전체 솔루션에서 null 가능 디폴트 값이 있는 매개변수의 어노테이션을 수정하기 위해 일괄 빠른 수정을 사용할 수 있습니다.

메서드 내에서 매개변수가 null로 확인되면 해당 매개변수를 null 가능으로 만드는 새로운 일괄 빠른 수정도 있습니다.

C# 코드 분석

클로저를 사용한 static 지역/익명 함수에 대한 몇 가지 빠른 수정 및 컨택스트 액션을 추가하였습니다.

  • Allow closures(클로저 허용) 빠른 수정은 지역 함수 또는 익명 함수가 클로저를 포함하는 경우 해당 함수에서 static 제어자를 제거합니다.
  • Pass closure as a parameter(클로저를 매개변수로 전달) 빠른 수정은 static 지역 함수의 클로저를 매개변수로 리프트합니다.
  • Pass closure as a parameter(클로저를 매개변수로 전달) 컨텍스트 액션은 static이 아닌 지역 함수의 클로저를 매개변수로 리프트합니다.

.PadLeft().PadRight() 메서드 호출을 보간된 문자열 내 자리 표시자로 대체하는 빠른 수정이 포함된 Simplify string interpolation(문자열 보간 단순화)이라는 새로운 검사가 있습니다.

새로운 C# 10 record struct 추가에 이어 일반 구조체에 대한 지원도 개선하였습니다. 대부분의 개발자는 여전히 DTO에 객체 이니셜라이저가 있는 클래스를 사용합니다. 이제 이러한 모든 사용 위치를 매개변수가 있는 생성자로 빠르게 변환할 수 있습니다. 이는 record 선언 자체에서, 또는 모든 객체 이니셜라이저에서 수행할 수 있습니다. 프로퍼티 대입으로 생성자를 정의하는 DTO도 변환할 수 있습니다.

이미 얼마 전부터 Rider는 필드에 대한 일관성 없는 잠금에 대해 경고했습니다. 이 버전에서는 여러 잠긴 리소스의 순서도 고려하는 보완 검사를 추가하여, 발생할 수 있는 교착상태 주기에 대해 알려줍니다.

Rider는 이제 byte, sbyte, short, ushort, uint, long, ulongenum 등의 추가 정수 타입에 대한 정수 산술 표현식의 타당성을 검사합니다. 이렇게 하면 도달할 수 없는 코드 분기를 방지할 수 있습니다.

코드 분석 성능

폴더, 프로젝트 또는 솔루션에 대해 빠른 수정 및 컨텍스트가 호출될 때 구현되는 데 걸리는 시간을 줄였습니다.

Solution-Wide Error Analysis(SWEA, 솔루션 전체 분석)Monitor warnings(경고 모니터링)와 함께 활성화된 경우, Rider는 이제 SWEA 결과를 사용하여 해당하는 문제가 없는 파일을 건너뛰어 해결할 문제를 찾는 데 소요되는 시간을 크게 줄입니다.

솔루션에서 SWEA를 실행하지 않는 분들을 위한 희소식도 있습니다! 이제 Rider는 사용 가능한 모든 CPU 코어를 활용하여 코드 분석을 병렬로 실행합니다. 이렇게 하면 범위 빠른 수정 및 컨텍스트 작업을 실행하는 데 걸리는 전체 시간이 줄어듭니다.

 

다음과 같이 거대한 메서드가 포함된 파일에 대한 데몬의 성능이 크게 향상되었습니다.

  • 크거나 중첩된 조건식, 튜플 표현식 또는 switch 식이 있는 메서드.
  • null 가능 참조 타입이 비활성화된 경우 타입 검사가 많은 메서드.
  • null 가능 참조 타입이 활성화된 경우 인덱서 액세스가 많은 메서드.
  • null 가능 참조 타입이 활성화된 경우 클로저가 많이 사용된 메서드.

SQL 언어 삽입

SQL 언어 삽입에 대한 지원을 개선했습니다. 이제 C# 코드 내에서 바로 SQL 코드를 작성하는 많은 일반적인 경우를 지원합니다.

SQL 쿼리 문자열은 string.Format 메서드, 문자열 보간 및 단순 문자열 연결에 대해 올바르게 해결됩니다.

SQL 쿼리 문자열 내의 매개변수에 대한 SQLParameter 변수가 Microsoft SQL Server 파생 언어 또는 Dapper 라이브러리와 함께 사용될 때 오류가 더 이상 발생하지 않습니다.

게임 존

Unity

이 릴리스에서는 어셈블리 정의 파일에 대한 Rider 지원을 크게 업데이트했습니다. Ctrl+클릭을 사용하여 참조로 이동할 수 있습니다. 참조된 패키지까지 포함하여 전체 프로젝트에서 어셈블리 정의의 사용 위치를 찾고, 그 이름을 바꾸고, 새 참조를 추가할 때 코드 완성 기능을 이용하세요.

Rider는 또한 GUID 기반 참조와 함께 작동하여 대상 어셈블리 정의의 이름과 함께 유용한 힌트를 표시할 뿐만 아니라 명명된 참조와 GUID 기반 참조 사이를 변환하는 Alt+Enter 액션을 표시합니다.

이제 Rider는 어셈블리 정의 파일에서 충족되지 않은 'define constraints'(제약 조건 정의)를 강조 표시합니다. 그러면 어셈블리가 제외된 이유를 쉽게 알 수 있습니다. define 심볼에 대한 완성 기능도 이용할 수 있습니다!

패키지 이름에 대한 완성 기능과 현재 설치된 버전에 대한 인레이 힌트가 제공되어 version defines(버전 정의) 설정도 더 쉬워졌습니다. 또한, 조건이 충족되지 않으면 Rider가 심볼을 강조 표시합니다.

이제 Rider는 패키지가 컴파일될 때 정의된 심볼의 정보를 제공하는 특별한 컨텍스트에서 참조된 Unity 패키지의 소스 파일을 표시합니다. 즉, 올바른 전처리기 브랜치가 강조 표시된 상태로 소스 파일이 표시됩니다.

필드 편집 시 Unity의 [Tooltip] 속성이 Inspector(검사 도구)가 표시할 수 있는 텍스트를 제공합니다. 또한 Rider는 직렬화된 필드를 사용할 때마다 Quick Documentation(빠른 문서) 팝업의 일부로 이 텍스트를 표시합니다. XML 문서에서 툴팁을 생성(또는 그 반대로)하기 위한 새로운 컨텍스트 액션도 있습니다.

USB를 통해 iOS 기기에서 디버그하기 위한 Rider 지원이 Apple Silicon에서 작동하도록 업데이트되었으며 이번 릴리스에는 Linux에 대한 지원도 추가되었습니다.

이제 애셋 색인이 참조된 패키지를 검토하므로, Rider는 패키지의 애셋을 기반으로 프리팹에서 코드 사용 위치를 찾을 수 있습니다.

더 많은 사용 사례를 처리하기 위해 메타 파일 추적이 완전히 새롭게 작성되었습니다. Unity Explorer(Unity 탐색기) 도구 창에서 파일을 추가, 제거, 이름 변경, 이동 또는 리팩터링할 때 원활하게 작동합니다.

이번 릴리스에서는 일반적 수정 사항도 다양하게 제공합니다. 여기에는 특정 외부 앱에서 파일을 업데이트할 때 애셋 색인 인덱스 업데이트, Apple Silicon에서 Unity의 파일 열기, Burst 컴파일러의 변경 사항과 일치하도록 Burst 분석 업데이트 등이 포함됩니다. 또한 설치된 Unity 버전을 검색하고 Unity 로그 뷰어 도구 창을 업데이트할 때 Rider의 성능을 개선했습니다.

Unreal Engine 조기 테스트 버전

Unreal Engine 테스트

Unreal Engine 테스트 프레임워크를 사용하여 게임에 테스트를 추가하는 경우, Rider가 이제 테스트를 자동으로 시작하고 Unit Test(유닛 테스트) 도구 창에 결과를 표시할 수 있습니다. 이 도구 창에서 테스트 결과를 검토하고 원하는 테스트(특정 테스트, 실패한 테스트 또는 모두)를 다시 실행할 수 있습니다. 테스트에 전달된 플래그를 기준으로 테스트를 그룹화할 수도 있습니다.

자세히 알아보기

Unreal Engine용 Rider는 공개 테스트 버전에서 최종 릴리스 버전으로 발전하고 있습니다. 아직까지는 테스트 버전으로 무료 제공되며 양식을 제출하여 별도의 Rider 빌드로서 이용할 수 있습니다.

프레임워크

WPF

이제 XAML 미리보기가 .NET 6, .NET 5 및 .NET Core 3.x SDK를 대상으로 하는 애플리케이션에서 작동합니다. XAML 코드 변경의 결과를 Rider에서 직접 미리 볼 수 있습니다.

Xamarin

  • Plist Editor(Plist 에디터)에서 표준 Xcode 구성이 지원되도록 구현했습니다. 이를 통해 plist에 새 키를 추가할 때 Rider가 친숙한 키 이름, 키 유형에 따른 값 유효성 검사 및 가능한 키 목록을 제공합니다. 이 구성은 macOS와 Windows 모두에서 작동합니다.
  • 이제 에디터에서 직접 Android 구성 요소를 NuGet 패키지로 다운로드할 수 있습니다.
  • AndroidX 라이브러리를 지원하는 프로젝트에서 이 라이브러리가 지원됩니다.
  • Android 에디터 레이아웃을 개선했습니다.

코드 정리, 서식 지정 및 코드 스타일

저장 시 서식 다시 지정 및 정리

Reformat and Cleanup on Save(저장 시 서식 다시 지정 및 정리) 설정을 도입했습니다. 이 기능을 사용하면 IDE에서 Save(저장) 또는 Save All(모두 저장)을 명시적으로 호출할 때마다 코드 서식이 다시 지정되고 정리됩니다. 빌드, 다른 탭으로 전환 및 커밋과 같은 저장 시 발생하는 모든 묵시적 트리거로 인해 코드 서식이 다시 지정되는 일이 없습니다. 대신, Rider는 수정된 문서를 파일의 내부 목록에 추가하여 다음 명시적 저장 시 정리하고 서식이 재지정되도록 합니다. 이 기능으로 코드를 멋지고 깔끔하게 유지하게 되고, 서식에 신경 쓸 일이 줄어들기를 바랍니다.

이 설정을 활성화하고 조정하려면 Preferences(환경 설정)/Settings(설정) | Tools(도구) | Actions on Save(저장 시 액션)로 이동하세요. 여기에서 사용할 정리 프로파일을 선택할 수 있습니다. 사용 가능한 프로파일 목록은 Preferences/Settings | Editor(에디터) | Code Cleanup(코드 정리) 페이지에서 상속됩니다. 작업을 전체 파일에 적용할지 아니면 변경된 줄에만 적용할지 지정할 수도 있습니다.

또한 Reformat and Cleanup on Save 기능이 Do not format(서식 지정 안 함) 설정을 따릅니다. 서식 지정에서 제외해야 하는 파일과 디렉터리를 지정하려면 Preferences/Settings | Editor | Code Style(코드 스타일) | Formatter(서식 지정 도구) 탭을 이용하세요.

기타 개선 사항

Reformat and Cleanup(서식 다시 지정 및 정리) 기능은 Solution Explorer(솔루션 탐색기) 도구 창에서 선택한 여러 파일 및 디렉터리에 대해 작동합니다.

서식 지정 도구에 새로운 옵션을 추가했습니다.

  • if()while()와 같은 구문 조건 내에서 람다 또는 프로퍼티 패턴 중괄호를 들여쓰는 옵션.
  • if(), foreach() 등의 괄호 안에 구문 조건을 정렬하는 옵션. 이 옵션은 기본적으로 활성화됩니다.
  • 예를 들어 x is Foo or Bar or Baz와 같이 바이너리 패턴을 줄 바꿈, 자르기, 정렬 및 내어쓰기하는 옵션.

.NET 5 SDK부터 전역 AnalyzerConfig 파일을 사용하여 Visual Studio 분석기 옵션을 구성할 수 있습니다. Rider 2021.3은 이러한 전역 AnalyzerConfig 파일에서 코드 스타일 정보를 읽고 이를 사용하여 그에 따라 Rider의 규칙을 조정할 수 있습니다.

웹 개발

종속성 업데이트를 위한 새로운 검사

Rider 2021.3을 사용하면 에디터에서 바로 npm 패키지를 최신 버전으로 업데이트할 수 있습니다! package.json 파일을 열고 업데이트하려는 패키지 버전에 캐럿을 놓은 후, Alt+Enter를 누른 다음 Update ‘package name’ to the latest version('패키지 이름'을 최신 버전으로 업데이트)을 선택합니다. 패키지 버전 위로 마우스를 가져가면 빠른 수정도 표시됩니다. 이 검사의 배경에 대한 자세한 내용은 이 블로그 게시물에서 확인할 수 있습니다.

향상된 HTML 코드 완성

HTML에서 코드 완성 기능이 작동하는 방식이 개선되었습니다. 에디터에서 태그 이름이나 약어를 입력하거나 코드 완성을 호출할 때마다 Rider는 관련 제안을 즉시 표시합니다. 이전에는 <를 먼저 입력한 경우에만 표시되었습니다. 또한 문자 엔티티 참조에 대한 코드 완성도 더 효과적으로 작동합니다.

NuGet 지원

Rider는 .NET Framework 프로젝트에서 NuGet 패키지에 대한 Binding Redirects(바인딩 리디렉션)를 생성할 수 있습니다. 프로젝트에 Binding Redirects가 필요한 경우 Rider가 이를 App.config 또는 Web.config 파일에 추가합니다.

Binding Redirects는 NuGet 패키지가 설치되거나 업데이트될 때 생성됩니다. 그러나 Solution Explorer(솔루션 탐색기) 도구 창 내 프로젝트의 컨텍스트 메뉴에 있는 Tools(도구) | Generate Binding Redirects(바인딩 리디렉션 생성)를 통해 언제든지 Rider에 Binding Redirects(바인딩 리디렉션) 수동 생성을 요청할 수 있습니다.

프로젝트의 Properties(프로퍼티) 페이지, Applications(애플리케이션) 탭에 Auto-Generate Binding Redirects(바인딩 리디렉션 자동 생성)라는 새로운 프로퍼티가 있습니다. 이 프로퍼티는 App.config 파일에 리디렉션이 없는 경우 프로젝트가 빌드되는 동안 Binding Redirects(바인딩 리디렉션)를 생성하도록 MSBuild에 요청합니다.

Binding Redirects 지원 추가 외에도 UX를 다소 개선했습니다. 이제 Solution Explorer(솔루션 탐색기) 도구 창에서 바로 NuGet 패키지를 제거할 수 있습니다.

Apple Silicon 지원

이번 릴리스부터 Rider는 Apple Silicon 프로세서가 탑재된 Mac 컴퓨터에서 기본적으로 실행됩니다. Rider 2021.3은 다음 런타임을 사용합니다.

  • 프런트엔드용 Apple Silicon 호환 JetBrains 런타임.
  • 백엔드용 .NET6 RTM.

더 이상 x64에서 ARM64로 변환할 필요가 없습니다! Rider가 이제 Apple 칩에서 초고속으로 작동합니다!

F# 지원

가장 주목할 소식은 Rider가 이제 F# 6을 공식적으로 지원한다는 것입니다! 이 릴리스에서는 코드 완성, 리팩터링 및 탐색에서 이루어진 많은 품질 업데이트와 함께 F# 언어 지원을 위한 다양한 개선 사항을 확인할 수 있습니다.

Introduce Variable(변수 삽입) 리팩터링에 몇 가지 강력한 업데이트가 이루어졌습니다. 이제 필요할 때 튜플과 단일 케이스 union 타입을 분해할 것을 제안하고 계산 표현식에서 계산 타입을 사용하는 것도 제안합니다. 또한 해당되는 경우 useuse! 키워드를 권장하며, 추가된 바인딩은 배치가 개선되었습니다.

이 릴리스에는 개선된 제안 순서 및 초기 컨텍스트 기반 키워드 필터링(일부 키워드는 해당되지 않을 때 더 이상 표시되지 않음)을 포함하여 코드 완성에 대한 여러 업데이트가 포함되었습니다. F# 함수를 재귀적으로 사용할 때 포함하는 함수로 돌아가서 해당 함수에 수동으로 rec를 추가할 필요가 없으므로 더 간편해졌습니다.

코드 완성에 대한 또 다른 주목할만한 업데이트가 있습니다. union 케이스 패턴을 완성할 때 Rider는 해당 필드에 패턴 일치를 사용하도록 제안합니다.

Find Usages(사용 위치 찾기) 결과의 새 아이콘이 호출, 부분 애플리케이션, 패턴 및 기타 사용 위치 유형을 구별하는 데 도움을 줍니다.

이제 Rider를 사용하여 보간된 문자열 내에서 선택 항목을 적절하게 확장할 수 있습니다. Special thanks to Andrew Rublyov for this contribution! _ 및 다양한 브래킷 유형에 대한 선택 동작도 개선되었습니다.

여러 빠른 수정, 리팩터링 및 기타 F# 지원 개선 사항을 구현했습니다. Please take a look at the full release notes for more information.

플러그인

dotCover
dotUltimate

새로운 Code Vision 메트릭인 Covering tests(커버리지 테스트)가 도입되었습니다. Rider에 프로젝트에 대한 커버리지 정보가 있고 메서드(또는 프로퍼티, 인덱서, 이벤트)가 하나 이상의 테스트에 포함된 경우 이 메트릭이 표시됩니다.

Settings(설정)/Preferences(환경 설정) | Editor(에디터) | Code Vision 페이지에서 활성화하거나 비활성화할 수 있습니다.

이제 코드 에디터의 왼쪽에 있는 커버리지 줄을 클릭할 때 표시되는 팝업 창에서 유닛 테스트를 시작할 수 있습니다.

dotTrace
dotUltimate

dotTrace 플러그인을 사용하면 macOS 및 Linux에서 비동기식 호출에 대한 데이터를 수집할 수 있습니다. 데이터를 수집하려면 Timeline(타임라인) 프로파일링 모드를 사용하세요. Call Tree(호출 트리)awaitscontinuations 등의 비동기 호출이 표시됩니다.

dotTrace 플러그인은 Timeline 프로파일링 모드에서 macOS 및 Linux 애플리케이션의 하위 프로세스를 프로파일링할 수 있습니다. 이 지원은 .NET 5+ 애플리케이션에만 사용할 수 있습니다.

탐색 및 사용 위치 찾기

새로운 여백 표시

클래스, 인터페이스 또는 구조체의 상속 구조를 빠르게 탐색할 수 있도록 여백 표시를 몇 개 더 추가했습니다. 새로운 ↑O↑I 아이콘은 코드 엔티티가 각각 다른 클래스 또는 인터페이스를 상속 또는 구현함을 나타냅니다. 이 코드 엔티티의 상속이 복잡한 경우 아이콘을 선택하면 상속 계층 구조의 맨 위에 있는 모든 상위 항목이 있는 메뉴가 표시됩니다. 클래스가 인터페이스와 클래스를 동시에 구현하거나 상속하는 경우 Rider는 여백에 ↑IO 아이콘을 표시합니다.

또한 이 릴리스에서는 기본적으로 클래스 멤버에 대한 여백 표시를 활성화했습니다. Rider는 파생 클래스에서 클래스 멤버가 재정의된 경우 클래스 멤버 옆의 왼쪽 여백에 ↓O 아이콘을 추가합니다. 아이콘을 클릭하면 다음이 수행됩니다.

  • 이 멤버를 재정의하는 파생 클래스의 멤버로 이동합니다.
  • 이 멤버를 재정의하는 다른 클래스의 클래스 멤버 목록이 있는 메뉴를 표시합니다.

사용자 정의 묵시적 변환 연산자에 대한 사용 위치 찾기

이제 사용자 정의 묵시적 변환 operators에 대해 Find Usages(사용 위치 찾기)를 사용할 수 있습니다! 이 기능은 타입 변환 힌트에 사용되는 메커니즘을 기반으로 구현되었습니다.

이 기능을 통해 사용자 정의 묵시적 변환 operators가 사용되는지 여부를 확인한 다음 변환이 있는 코드 블록으로 이동할 수 있습니다.

이 알고리즘은 빠르지 않으며 결과를 계산하고 표시하는 데 상당한 시간이 걸릴 수 있습니다.

데이터베이스 지원

데이터 에디터 집계

일정 범위의 셀에 대해 Aggregate(집계) 뷰를 표시하는 기능을 추가했습니다. 오랫동안 기다려온 이 기능은 데이터 관리에 도움을 주고 추가 쿼리를 작성해야 하는 수고로움을 덜어줍니다. 이를 통해 데이터 에디터가 Excel 및 Google 스프레드시트와 더욱 유사해지고, 더 강력해지고 사용하기 쉬워졌습니다.

뷰를 보려는 셀 범위를 선택한 다음 마우스 오른쪽 버튼으로 클릭하고 Show Aggregate View(집계 뷰 표시)를 선택하면 됩니다.

DDL 데이터 소스와 실제 데이터 소스 매핑

이번 릴리스는 이전 릴리스의 자연스러운 연장으로, 실제 데이터 소스를 기반으로 DDL 데이터 소스를 생성하는 기능이 도입되었습니다. 이제 이 워크플로가 완전히 지원됩니다. 사용자는 다음 작업을 수행할 수 있습니다.

  • 실제 데이터 소스에서 DDL 데이터 소스를 생성합니다(DataGrip 2021.2 발표 참조).
  • DDL 데이터 소스를 사용하여 실제 데이터 소스를 매핑합니다.
  • 이러한 데이터 소스를 양방향으로 비교하고 동기화합니다.

참고로, DDL 데이터 소스는 스키마가 일련의 SQL 스크립트에 기반을 둔 가상 데이터 소스입니다. 버전 관리 시스템에 이러한 파일을 저장하는 것은 VCS에서 데이터베이스를 관리하는 한 가지 방법입니다.

데이터 구성 프로퍼티의 새 탭인 DDL mappings(DDL 매핑)에서 각 DDL 데이터 소스에 매핑되는 실제 데이터 소스를 정의할 수 있습니다.

새 데이터베이스 Diff 창

컨텍스트 메뉴에서 새로운 Database Diff(데이터베이스 Diff) 창을 사용할 수 있습니다. 이 창은 UI가 향상되어 동기화를 수행한 후 얻을 수 있는 결과가 오른쪽 패널에 더 명확하게 표시됩니다.

오른쪽 패널의 범례는 잠재적 결과에 대한 색상의 의미를 보여줍니다.

  • 녹색 및 기울임꼴: 객체가 생성됩니다.
  • 회색: 객체가 삭제됩니다.
  • 파란색: 객체가 변경됩니다.

Script preview(스크립트 미리보기) 탭에는 새 콘솔에서 열거나 이 대화상자에서 실행할 수 있는 결과 스크립트가 표시됩니다. 이 스크립트의 결과는 변경 사항을 적용하여 오른쪽에 있는 데이터베이스(대상)를 왼쪽 데이터베이스(원본)의 복사본으로 만듭니다.

Script preview(스크립트 미리보기) 탭 외에도 하단 패널에는 Object Properties Diff(객체 프로퍼티 Diff)DDL Diff의 두 가지 탭이 더 있습니다. 여기에는 원본과 대상 데이터베이스에 있는 객체의 특정 버전 간 차이가 표시됩니다.

기타

프로젝트 프로퍼티

이번 릴리스에서는 Project Properties(프로젝트 프로퍼티) 대화상자에 몇 가지 새로운 설정이 도입되었습니다.

  • Application(애플리케이션) 페이지의 Resources(리소스) 섹션에서 애플리케이션 아이콘을 사용자 지정할 수 있습니다.
  • 빌드 전후에 실행할 명령어를 지정하기 위한 Build Events(빌드 이벤트) 페이지가 새로 추가되었습니다.
  • Inspections(검사) 페이지에는 Localizable(현지화 가능), Localizable inspector(현지화 가능 검사 도구)Solution-Wide inspections(솔루션 전체 검사) 등 코드 분석과 관련된 몇 가지 새로운 프로젝트 프로퍼티가 있습니다.
  • Reference Paths(참조 경로) 페이지에서 프로젝트의 참조 경로를 구성할 수 있습니다.
  • Applications(애플리케이션) 탭에 Auto-Generate Binding Redirects(바인딩 리디렉션 자동 생성)라는 새 프로퍼티가 추가되었습니다. Binding Redirects(바인딩 리디렉션)에 대해 자세히 알아보려면 위의 NuGet 지원 섹션을 확인하세요.

솔루션 프로퍼티

Solution Properties(솔루션 프로퍼티) 대화상자의 테이블에는 각 프로젝트의 빌드 종속성을 지정하기 위한 새로운 Dependencies(종속성) 열이 있습니다. 순환 종속성이 발생하는 것을 막기 위해 일부 프로젝트는 선택할 수 없습니다.

실행 구성

2021.3부터 Rider는 프로젝트가 로드될 때 Properties/PublishProfiles에서 모든 .pubxml 파일을 가져와 실행 구성으로 변환합니다. 새 .pubxml 파일을 추가할 때마다 새 실행 구성이 자동으로 생성되므로 실행 구성을 수동으로 생성할 필요가 없습니다!

애플리케이션을 실행할 런타임을 지정하기 위한 명시적 런타임 선택기가 있습니다. 사용하는 운영 체제에 따라 목록이 다르지만 전체 목록에는 .NET/.NET Core, .NET FrameworkMono가 포함됩니다.

코드 완성에서 EditorBrowsable 속성 지원

이제 코드 완성 목록을 조정하여 EditorBrowsable 속성에 따라 항목을 필터링할 수 있습니다. Preferences(환경 설정) | Editor(에디터) | General(일반) | Code Completion(코드 완성) 페이지의 Filter members by EditorBrowsable attribute(EditorBrowsable 속성을 기준으로 멤버 필터링)에서 원하는 동작을 선택하기만 하면 됩니다.

모든 탭의 글꼴 크기 변경

요청에 따라 +마우스 휠(macOS) 또는 Ctrl+마우스 휠(Windows 및 Linux)을 사용하여 모든 열린 탭의 글꼴 크기를 동시에 변경하는 기능이 구현되었습니다. 이 기능을 활성화하려면 Preferences/ Settings(환경 설정/설정) | Editor(에디터) | General(일반)l에서 Change font size with Command + Mouse Wheel in(Command + 마우스 휠로 글꼴 크기 변경)All editors(모든 에디터)를 선택합니다. Active editor(활성화된 에디터)를 선택할 경우 해당 단축키로 현재 작업 중인 파일의 글꼴 크기만 변경됩니다.