Visual Studio : "다른 네임 스페이스로 클래스 이동"리팩토링이 있습니까?
여러 클래스를 다른 프로젝트 및 / 또는 네임 스페이스로 이동하는 것과 관련된 아키텍처 정리를 수행하고 있습니다. 현재 필자는 파일을 손으로 이동하고 빌드 한 다음 필요에 따라 Foo 문을 사용하여 수동으로 추가 하여 컴파일 오류를 해결하고 있습니다. 이 작업을 수행하는 더 똑똑한 방법을 아는 사람이 있습니까? (우리는 CodeRush 및 Refactor! 상점이지만 Resharper가 이에 대해 지원하는지 듣고 싶습니다.)
Resharper는이 기능이있는 유일한 도구입니다. CodeRush 및 Refactor에서 누락 된 다른 많은 기능도 있습니다!
Visual Studio 2010에는 네임 스페이스의 이름을 바꿀 수 있습니다. 네임 스페이스 이름 위에 커서를 놓고를 누릅니다 F2. 또는 단순히 코드와 언론에서 이름을 변경 Shift+ Alt+ F10, Enter빨간 SQUIGGLE 표시 본 후.
Reharper는 네임 스페이스의 이름을 변경할 수도 있습니다 . 인용문:
이름 바꾸기 네임 스페이스 리팩토링은 사용자가 특정 네임 스페이스의 이름을 변경하고 자동으로 코드 네임 스페이스에 대한 모든 참조를 보정 할 수 있습니다. 다음 사용법의 이름이 변경되었습니다.
- 네임 스페이스 문
- 지시문 사용
- 유형의 정규화 된 이름
이 답변은 resharper가 필요하지 않은 Visual Studio 2013 및 2015 이상에 적용됩니다.
- 클래스 파일을 새 폴더로 이동
- '찾기 및 바꾸기'를 엽니 다.
- '파일에서 바꾸기'를 선택하십시오.
- '찾을 내용'필드에 원래 네임 스페이스 정의를 입력합니다 ( 예 :
MyCorp.AppStuff.Api - 예를 들어 '바꿀 내용'필드에 새 네임 스페이스 정의를 입력합니다 .
MyCorp.AppStuff.Api.Extensions - '찾아보기'필드의 찾아보기 버튼을 사용하여 새 폴더를 선택 ...하거나 폴더 경로를 입력합니다.
- 언론 Replace All버튼을
Visual Studio 2019는 최소 2 개의 기본 제공 옵션을 제공합니다.
'Move to namespace ...' 리팩토링은 모든 클래스에서 트리거 될 수 있으며 VS는 대상 네임 스페이스를 묻는 메시지를 표시합니다.
현재 파일 네임 스페이스가 폴더 구조와 일치하지 않는 경우 '다음으로 네임 스페이스 변경 ...' 리팩토링이 제공됩니다.
다음과 같은 방법으로 개별 클래스를 다른 네임 스페이스로 이동하는 데 사용할 수 있습니다.
- 원하는 폴더 구조 만들기
- 파일 이동
- 언급 된 리팩토링 적용 (네임 스페이스 위에 커서를두고 CTRL +.)
이러한 작업은 모든 참조가 그에 따라 업데이트되도록합니다.
무료 확장을 사용하는 Resharper가없는 VS 2015 및 VS 2017에 대한 부분 솔루션이 있습니다 .
오늘 (2017 년 말) 좋아하는 확장 기능 중 하나는 Fix Namespace VS Extension입니다 : https://marketplace.visualstudio.com/items?itemName=vs-publisher-599079.FixNamespace#overview
솔루션의 폴더 구조를 분석하고이를 사용하여 네임 스페이스 리팩토링을 제공합니다. 불행히도 완벽하지는 않습니다. 의존성을 잘 추적하지 못하지만 저에게 가장 큰 비중을 차지하는 부분을 해결했습니다.
Resharper 사용 : CTRL+ R+O
그런 다음 아래쪽 화살표 키를 두 번 눌러 Move Type To Another Namespace 를 선택 합니다.
위의 답변이 제공 되었으므로이 기능이 CodeRush에 추가되었습니다. 이동할 유형 에 캐럿을 배치 하면 리팩터링에 유형을 네임 스페이스 로 이동 옵션이 표시됩니다! 상황에 맞는 메뉴. 그러면 유형이 새 네임 스페이스로 이동하고 참조가 업데이트됩니다. 그래도 네임 스페이스의 이름과 일치하는 솔루션 폴더로 파일을 이동할 수 있습니다.
최상의 결과는 아니지만 플러그인이나 도구없이 Visual Studio에서만 수행 할 수 있습니다. 전체 솔루션, 대 / 소문자 일치, 전체 단어 일치에서 찾기 및 바꾸기. 찾을 내용 : 클래스 이름, 바꿀 내용 : New.Namespace.ClassName (정규화 된 클래스 이름).
이전 네임 스페이스에 이동 된 클래스 및 다른 클래스에 대한 100 개 이상의 참조가있는 경우 이동되지 않은 것은 내가 찾은 유일한 안전하고 무료 솔루션입니다. 오류가 발생하는 유일한 경우는 다른 네임 스페이스에 동일한 클래스 이름이있는 경우입니다.
Re $ harper를 사용할 수 없거나 사용하고 싶지 않다면 Notepad ++ 를 사용하세요.
- 새 네임 스페이스로 이동해야하는 파일에 대해 Visual Studio 내에서 변경 사항을 사용하지 않았는지 확인합니다.
- Notepad ++에서 변경해야하는 네임 스페이스가 포함 된 모든 파일을 엽니 다.
- 열기 Find & Replace(CTRL + H)
- 찾을 내용 및 바꿀 내용 필드 채우기
- 프레스 Replace All in All Opened Documents
- 모든 문서의 모든 변경 사항 저장 (CTRL + SHIFT + S)
- Visual Studio로 전환하고 모든 문서를 다시로드 합니다 ( Yes to all프롬프트에서).
끝난
'program story' 카테고리의 다른 글
| RecyclerView.Adapter의 onBindViewHolder 내에 OnClickListener를 추가하는 것이 왜 나쁜 습관으로 간주됩니까? (0) | 2020.11.21 |
|---|---|
| C ++ 17의 새로운 범위 기반 for 루프가 Ranges TS에 어떻게 도움이 되나요? (0) | 2020.11.21 |
| C #이 내 제네릭 유형을 유추하지 않는 이유는 무엇입니까? (0) | 2020.11.21 |
| 열의 데이터가 잘렸습니까? (0) | 2020.11.21 |
| Rails에서 다 대다 관계 생성 (0) | 2020.11.20 |