2011-10-06 5 views
7

Resharper 5.1과 함께 VS2010을 사용하고 있습니다.특정 프로젝트에서 클래스 사용 바꾸기

도서관 프로젝트 (Lib)와 응용 프로그램 프로젝트 (App)라는 두 개의 프로젝트가 있습니다. 응용 프로그램은 Lib을 참조합니다.

Lib에는 App 및 Lib에서 사용되는 클래스 X가 포함되어 있습니다. App에서는 이제 모든 X의 사용법을 클래스 Y로 대체하려고합니다. 제 경우 Y는 X와 관련이 없지만 리팩터링을 쉽게하면 X에서 상속받을 수 있습니다.

현재 "찾기 기능"기능을 사용하고 프로젝트별로 그룹화하고 사용법을 하나씩 변경하는 현재 계획. 이 작업을 쉽게/자동화 된 방법으로 수행 할 수 있습니까?

+0

현재 프로젝트에서 빠른 대체는 무엇입니까? 클래스 이름 X를 Y로 바꿉니 까? – wiero

답변

4

Structural Search and Replace은 귀하의 친구입니다. 너는 ReSharper | Find | Search with Pattern...을 통해 그것을 얻는다.

  • X의 자리 표시자를 정의하고 이름은 TX입니다.
  • $TX$
  • 는, 검사로서 "프로젝트"
  • 을 "에서 봐"를 지정하여 검색을 수행하여 찾기 패턴 만들기 - 당신이 교체 토글 버튼을 클릭 X
  • 의 모든 용도를 볼 수
  • 확인 바꾸기 패턴의 완전한 이름은 Y
  • 클릭 교체

ReSharper에서이 쇼됩니다 당신이 바꾸고 싶은 모든 언급이 X이라면 - 트리 상단의 체크 박스가 선택되어 있는지 확인한 다음 바꾸기를 클릭하십시오.

편집

그것은 오히려 어떤 다른 X라는 이름보다 유형X 만 참조, 이름을 바꿀 수 있도록 우리의 찾기 패턴에 유형 자리 표시자를 사용하여 참이다.

당신이

using A.B.C; 

/* later */ 
Y obObject = ... 

보다는

로 끝날 것을 선호하는 경우
A.B.C.Y myObject 
내가 생각

이를 통해 얻을 수 있습니다

  1. ReSharper | Options에서 Tools | Code Cleanup 정의 "Optimize 'using directives를 가진 새로운 프로파일
  2. 까지 단정 한 네임 스페이스에서 A.B.C를 제거하여 당신이
에 추가 목록을 항상
  • 실행 ReSharper | Tools | Cleanup Code imported`해야 네임 스페이스 방금 정의 된 프로파일을 사용하여 "ReSharper | Options에서
  • , Languages | C# | Namespace ImportsA.B.C에 추가 확인"

    다른 모든 using도 삭제되지만 버전 제어 diff가 원하는 것보다 약간 클 수 있습니다.

  • +0

    find 패턴은'X' 클래스에 대한 참조 만이 대체되고 주석이나 속성 이름에는'X'가 나타나지 않는다고 가정합니다. 또한 후속 조치로서 정규화 된 이름을 바꾸고 올바른 'using' 문을 관련 파일에 추가하는 가장 쉬운 방법은 무엇입니까? – Bubblewrap

    관련 문제