프로젝트 수준 기능

ReSharper는 개별 코딩 헬퍼와 달리, 프로젝트 또는 전체 솔루션에 적용될 때 유용한 기능 모음을 제공합니다.

여기에는 MSBuild가 프로젝트를 컴파일하는 방식을 최적화하는 ReSharper Build, 프로젝트 또는 유형 간의 종속성을 비롯하여 해당 종속성을 구현하는 특정 코드의 검색 방법을 표시하는 다이어그램, 솔루션의 프로젝트에서 참조를 최적화하는 리팩터링 및 기타 다양한 기능이 포함되어 있습니다.

ReSharper 빌드

ReSharper 빌드

ReSharper Build는 여러 프로세스를 활용하는 데 유용하고, 각기 다른 종류의 프로젝트 빌드 상태를 시각화하며, 다수의 종속성을 포함한 대규모 솔루션용으로 최적화된 독립 실행형 증분 빌드 도구입니다.

ReSharper 빌드는 업데이트가 필요한 빌드 프로젝트에만 경험적 지식을 적용하는 시스템으로 Visual Studio 빌드 관리를 대체합니다. 단, MSBuild를 대체하지 않으며 프로젝트는 평상 시와 마찬가지로 빌드됩니다.

실행 구성 관리

실행 구성

ReSharper는 Run configurations(실행 구성)를 통해 Visual Studio의 코드를 실행하는 새로운 방법을 제공합니다. 실행 구성에는 다음과 같은 3가지 종류가 있습니다.

  • Project(프로젝트) — 이 구성 유형에서는 솔루션 내의 실행 가능한 프로젝트를 실행 또는 디버그할 수 있습니다. 이는 실행 가능한 프로젝트가 여러 개인 대규모 솔루션에 유용할 수 있습니다.
  • Static method(정적 메서드) — 이 구성 유형에서는 매개변수 없이 public 정적 메서드를 실행하거나 디버그할 수 있습니다. 까다로운 알고리즘을 격리해서 디버그해야 하나요? 간단히 정적 메서드를 생성하고 실행 구성을 설정하세요.
  • Executable(실행 파일) — 이 구성 유형을 사용해 모든 실행 파일을 실행하거나 디버그할 수 있습니다. 이 디버그 명령어를 선택하면, ReSharper가 실행 파일을 실행한 다음, Visual Studio를 해당 프로세스에 연결합니다. 이 구성 유형을 사용하기에 좋은 사례는 복잡한 실행 설정을 생성해야 하는 다른 프로그램의 플러그인을 개발하는 상황을 들 수 있습니다.

또한 영구 실행 구성을 만들지 않고도 정적 메서드를 실행할 수도 있습니다. Alt+Enter를 누르고 액션 목록에서 디버그를 사용하면 됩니다.

기본적으로 Visual Studio 시작 프로젝트에 해당하는 활성 구성을 실행하거나 디버그하려면 Ctrl+F5 또는 F5를 누르세요. 실행 구성을 관리하려면 Ctrl+Shift+Alt+R을 누르거나 메뉴에서 ReSharper | Tools(도구) | Run Configurations(실행 구성)를 선택하세요.

프로젝트 종속성 뷰어

프로젝트 종속성 다이어그램

ReSharper에서는 솔루션 아키텍처의 시각적 표현을 사용해 솔루션의 프로젝트 종속성을 살펴볼 수 있습니다. 언제든지 Architecture View(아키텍처 뷰)(ReSharper | Architecture(아키텍처) | Show Project Dependency Diagram(프로젝트 종속성 다이어그램 표시))를 열고, 아무 것도 컴파일할 필요 없이 프로젝트 종속성을 살펴볼 수 있습니다.

이 뷰의 오른쪽에서 리팩터링(예: Adjust Namespaces(네임스페이스 조정) 또는 Remove Unused References(사용되지 않은 참조 제거)), 탐색 액션 및 기타 유용한 명령어를 실행할 수 있습니다. 또한 종속성 스냅샷을 저장한 다음, 솔루션 개발이 진행되면 스냅샷과 현재 상태를 비교할 수 있습니다.

유형 종속성 다이어그램

유형 종속성 다이어그램

ReSharper를 이용하면 유형이 솔루션에서 서로 어떻게 종속되는지 시각적으로 조사할 수 있습니다. 유형 종속성 다이어그램에서는 서로 다른 프로젝트 또는 컴파일된 어셈블리의 여러 유형을 추가하고, 해당 항목 간의 종속성 종류를 시각화할 수 있습니다. 메인 메뉴 명령어인 ReSharper | Architecture(아키텍처) | Show Type Dependency Diagram(유형 종속성 다이어그램 표시) 외에, 다양한 방식으로 다이어그램에 유형을 추가할 수 있습니다. 예를 들어, Find Results(결과 검색) 또는 Hierarchy(계층 구조) 창에서, 탐색 결과를 보여주는 팝업에서, 프로젝트 종속성 다이어그램에서 모든 유형을 추가하고 다른 도구 창에서 유형을 드래그 앤 드롭할 수 있습니다.

프로젝트 종속성 다이어그램과 유사하게, 유형 종속성 다이어그램에서 다양한 탐색 액션을 바로 사용할 수 있으며 드래그 앤 드롭으로 실행되는 Move to Folder(폴더로 이동) 리팩터링도 이용할 수 있습니다.

어셈블리 종속성 다이어그램

어셈블리 종속성 다이어그램

ReSharper를 이용하면 컴파일된 어셈블리 간의 종속성을 살펴볼 수 있습니다. 어셈블리의 수에 관계없이 다수의 어셈블리로부터 하나의 다이어그램을 만들어 해당 어셈블리가 어떻게 서로 참조하는지 탐색할 수 있습니다.

Assembly Explorer(어셈블리 탐색기)에서 선택한 어셈블리에 대한 다이어그램을 실행하면, 어셈블리의 참조를 통해 어셈블리 간에 구축된 연결을 확인할 수 있습니다.

ReSharper의 NuGet 브라우저 창

NuGet 브라우저

ReSharper에서는 NuGet 패키지 갤러리의 유형 또는 네임스페이스를 검색하고, Visual Studio를 벗어나지 않고도 검색과 일치하는 패키지를 설치할 수 있습니다. 이 모든 작업은 NuGet Browser(NuGet 브라우저) 창에서 수행할 수 있습니다(ReSharper | Windows(창) | NuGet Browser).

뿐만 아니라 에디터에서 바로 검색을 시작할 수 있습니다. 해결되지 않은 유형 또는 네임스페이스에서 Alt+Enter를 누르고 Find on nuget.org(nuget.org에서 검색)를 선택하여 누락된 NuGet 패키지를 찾아 설치하세요.

네임스페이스 조정 리팩터링

네임스페이스 조정

일부 코드 리팩터링 기능을 프로젝트, 솔루션 폴더 또는 전체 솔루션 범위에 적용할 수 있습니다.

예를 들어, 전체 솔루션만큼 큰 어떤 범위에서도 Adjust Namespaces(네임스페이스 조정) 리팩터링을 사용해 네임스페이스를 폴더 구조와 동기화할 수 있습니다. 즉, 특정 코드 파일에서 네임스페이스가 프로젝트 구조의 파일 위치와 맞지 않을 경우 파일 위치에 부합하도록 네임스페이스의 이름이 변경됩니다. 또한 수정된 네임스페이스를 참조하는 모든 using 지시문이 그에 따라 업데이트됩니다.

사용되지 않은 참조 제거

사용되지 않은 참조 제거

또 다른 프로젝트 수준의 리팩터링인 Remove Unused References(사용되지 않은 참조 제거)는 프로젝트에서 중복 참조를 찾아 제거하여 솔루션을 정리할 수 있도록 돕습니다.

또한 참조를 런타임 시 사용된 것으로 표시하는 방법도 있습니다. 이는 종속성 삽입 프레임워크를 사용하는 경우 중요합니다.

묵시적으로 로드된 모든 참조를 표기하여, 런타임에 필요한 참조를 손상시키지 않으면서 ReSharper의 Optimize References(참조 최적화)Remove Unused References(사용되지 않은 참조 제거) 명령어를 안전하게 실행할 수 있습니다.

ReSharper에서 참조 코드 검색

참조/종속 코드 검색

Find Dependent Code(종속 코드 검색)를 이용하면 선택한 프로젝트에 종속된 코드를 찾을 수 있습니다. Find Referenced Code(참조 코드 검색)는 반대 방식으로 작동하여, 특정 범위(메서드처럼 좁거나 프로젝트처럼 넓을 수 있음) 내에서 발생한 모든 송신 참조를 검색합니다.

두 기능 모두의 검색 결과는 Find Results(결과 검색) 창에 표시되거나 사용 위치가 하나밖에 검색되지 않은 경우, 캐럿이 해당 위치로 이동합니다.

종속 또는 참조 코드를 찾으려면 Solution Explorer(솔루션 탐색기)에서 노드를 선택하거나, 캐럿을 텍스트 에디터의 컨테이너에 놓고 ReSharper | Find(검색) | Find Code Dependent on Module(모듈에 종속된 코드 검색) 또는 ReSharper | Find(검색) | Find Symbols External to Scope(범위 외의 심볼 검색)를 선택합니다.

어셈블리 탐색기

어셈블리 탐색기

이 간단한 창을 통해 컴파일된 어셈블리를 열고 탐색 및 검색 명령어를 사용해 소스 코드에서 작업하는 것처럼 이동 및 탐색이 가능합니다. 어셈블리 노드를 확장하면 어셈블리 내의 네임스페이스가 나열되고, 유형 및 유형 멤버를 비롯해 어셈블리 참조로 추가 확장이 가능합니다.

특정 어셈블리에 특별히 관심이 있을 경우, Assembly Explorer(어셈블리 탐색기)를 사용해 해당 어셈블리를 Visual Studio 프로젝트로 내보내어 소스 코드를 탐색하고 빌드, 실행 및 디버그할 수 있습니다.

솔루션 탐색기에서 모두 접기

ReSharper는 Solution Explorer(솔루션 탐색기)에서 노드 상태를 관리하는 기능으로 Visual Studio를 지원합니다. Solution Explorer에서 프로젝트 또는 다른 상위 수준 노드를 접어도 일반 Visual Studio에 포함된 노드는 접히지 않습니다. 이 때문에 나중에 프로젝트를 펼칠 때 산발적으로 펼쳐진 구조가 나타나게 됩니다.

ReSharper에서는 Solution Explorer 노드를 마우스 오른쪽 버튼으로 간단히 클릭하고 컨텍스트 메뉴에서 Collapse All(모두 접기)을 선택하기만 하면 선택한 노드가 하위 노드와 함께 접힙니다.

Collapse All은 ReSharper 또 다른 깔끔한 작은 기능인 Locate in Solution Explorer(솔루션 탐색기에서 검색)와 완벽한 쌍을 이룹니다. 예를 들어 프로젝트를 접기 시작해서, Locate in Solution Explorer를 실행하면 정말로 필요한 노드를 펼칠 수 있습니다.

솔루션 탐색기에서 검색

Shift+Alt+L로 사용할 수 있는 이 편리한 탐색 기능을 이용하면 텍스트 에디터에 현재 열려 있는 파일과 관련 있는 노드를 Solution Explorer(솔루션 탐색기)에서 강조 표시할 수 있습니다. ReSharper가 해당 노드를 강조 표시하고 Solution Explorer를 자동 스크롤하므로 강조 표시된 노드를 실제로 확인할 수 있습니다.

이는 수만 개의 파일이 들어 있는 대규모 솔루션이거나 Solution Explorer 창을 최소한으로 축소해야 하는 제한된 화면 공간에서 특히 유용합니다. 또한 이 기능은 Collapse All in Solution Explorer(솔루션 탐색기에서 모두 닫기)와 훌륭한 쌍을 이룹니다.

다양한 설정 레이어로 ReSharper 설정 저장

ReSharper 설정을 분산 저장

ReSharper 설정은 분산형 저장 모델을 사용해 저장됩니다. 즉, 설정 또는 설정 그룹을 별도로 저장할 수 있고 ReSharper를 실행하면 해당 설정 모두가 결합되어 적용됩니다.

이 모델의 이점은 다양한 솔루션에서 서로 다른 설정을 적용하고, 해당 설정을 간편하게 공유하며, 설정을 가져오거나 내보낼 수 있다는 것입니다. 이는 특히 팀 내에서 코드 스타일 설정, 코드 템플릿, 구조 검색 및 바꾸기 패턴 등의 설정을 동일하게 공유해야 할 경우 유용합니다.

기본적으로 로컬 컴퓨터의 모든 솔루션, 현재 솔루션, 공유 솔루션 설정을 위한 3가지의 설정 레이어가 존재합니다. 예를 들어 글로벌 회사 전반의 설정에서 새로운 레이어를 쉽게 생성하고, 관리 및 공유할 수 있습니다.

단축키 참고사항

이 페이지에 나온 모든 키보드 단축키는 ReSharper의 기본 'Visual Studio' 단축키에서 제공됩니다. ReSharper의 2가지 단축키에 관한 자세한 내용은 ReSharper 문서를 참조하세요.