Visual Studio에서 다른 폴더로 프로젝트 이동


182

Visual Studio에서 프로젝트를 다른 폴더로 어떻게 이동합니까? 내 프로젝트 에서이 구조에 익숙합니다.

-- app
---- Project.Something
---- Project.SomethingElse

전체 네임 스페이스 SomethingElse의 이름을 SomethingNew로 바꾸고 싶습니다. 수동으로 .sln 파일로 이동하지 않는 가장 좋은 방법은 무엇입니까?


소스 제어 제공자로 TFS를 사용하고 있습니까?
Bermo

폴더 나 전체 프로젝트의 이름을 바꾸시겠습니까?
Charles Gargent

프로젝트, 폴더 및 네임 스페이스
Egor Pavlikhin

답변:


175

솔루션 탐색기 창에서 마우스 오른쪽 버튼으로 클릭하고 제거를 선택하여 솔루션에서 프로젝트를 제거하십시오. 하위 디렉토리를 포함하여 전체 프로젝트 폴더를 원하는 곳으로 이동하십시오. 솔루션에 프로젝트를 다시 추가하십시오.

네임 스페이스 이름은 완전히 다른 것입니다. 소스 코드 만 편집하면됩니다.


6
그것이 내가 한 일이지만 전체 프로젝트를 제거하지 않고 모든 것을 수행 할 수있는 방법이 있다고 생각했기 때문에 모든 종속성을 다시 추가 할 수있었습니다.
Egor Pavlikhin

31
이동할 프로젝트를 제거하기 전에 솔루션에서 모든 종속 프로젝트를 언로드하십시오. 이렇게하면 제거를 감지하지 못하고 프로젝트 참조는 그대로 유지됩니다. 프로젝트를 이동하고 솔루션에 다시 추가 한 후 종속 프로젝트를 다시로드 할 수 있습니다.
base2

13
TFS에서 파일을 삭제 한 다음 다른 디렉토리 위치 또는 프로젝트의 TFS로 다시 가져 오면 파일 변경 히스토리가 삭제된다는 것을 잊지 마십시오.
Paul

변경 내역을 잃지 않고하고 싶기 때문에 원할 때 여전히 비교를 할 수 있습니다.
user734028

196

프로젝트를 제거하고 다시 추가하라는 제안을 시도했지만 종속성을 수정하는 것이 어려울 수 있습니다.

나는이 접근법을 사용한다 :

  1. 프로젝트 폴더를 이동하십시오.
    • 프로젝트가 소스 제어에있는 경우 소스 제어 명령을 사용하여 이동하십시오.
  2. 텍스트 편집기에서 솔루션 파일을 편집하십시오. 변경해야 할 경로는 하나만 있어야합니다.

확실히 쉬워요! 그러나 텍스트 편집을 사용하여 솔루션을 이동하고 편집하면 솔루션 파일이 일반 텍스트 파일처럼 아래에 표시됩니다. 이걸 어떻게 제거합니까?
Abriel

2
"프로젝트가 소스 제어에있는 경우 소스 제어 명령을 사용하여 이동하십시오." ..이 작업을 수행하는 방법을 설명 할 수 있습니까?
Anish V

3
@AnishV 예를 들어, Git을 사용한다면 git mv ...대신에 입력하십시오 mv .... 자세한 내용은 git-mv설명서를 참조하십시오 .
cubuspl42

3
.csproj 파일에서 SolutionDir 속성을 업데이트하고 프로젝트 참조 및 너겟 패키지 위치의 모든 경로를 수정해야합니다. .sln 파일에서 프로젝트 경로를 업데이트하기 만하면됩니다.
Pete

이것은 나를 위해 일했습니다. 유일한 '트릭'은 .sln 파일을 변경하여 편집하기 위해 읽기 전용이 아니라 안전을 위해 다시 읽기 전용으로 표시해야한다는 것입니다.
JustWannaFly

44
  1. VS2012에서 솔루션을 닫으십시오
  2. 프로젝트를 새 위치로 이동
  3. 솔루션을 엽니 다
  4. 로드하지 못한 프로젝트를 선택하십시오
  5. 속성 도구 창에는 새 프로젝트 위치를 선택할 수있는 편집 가능한 "파일 경로"항목이 있습니다.
  6. 새로운 경로를 설정
  7. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 다시로드를 클릭하십시오.

4
이것은 매우 잘 작동하며 가장 빠르고 가장 쉬운 방법 인 것처럼 보입니다. 다른 더 높은 투표 응답에도 불구하고. 여기에 기사가 있습니다 : msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum

@MikeRosenblum 링크가 끊어졌습니다. 새 링크는 blogs.msmvps.com/deborahk/…
Roi Gavish

1
VS2012에서는 작동하지 않습니다. 링크 된 기사는 VS2010 만 언급합니다.
bassim

VS2010에서 다시 추가 해야하는 1을 제외한 모든 참조를 포함하여 나를 위해 잘 작동했습니다.
Kristian

@Vasanth Visual Studio 2019에서는 .sln 파일을 수동으로 편집하여 프로젝트를 찾습니다. 그리고 아마도 (아마도) .csproj 파일도 너겟 패키지의 올바른 위치를 참조합니다.
Caltor

3

나를 위해 일한 것은 다음과 같습니다.

  1. 솔루션에서 프로젝트를 제거하십시오.
  2. 텍스트 편집기로 프로젝트 파일을 편집하십시오.
  3. "패키지"에 대한 모든 상대 경로를 업데이트하십시오. 필자의 경우 프로젝트를 더 깊은 폴더로 옮긴 이후 로 변경 ..\packages해야했습니다 ..\..\..\packages.
  4. 프로젝트를 솔루션에 다시로드하십시오.

2

나는 같은 문제가 있었다. 나는 참조를 변경하지 않고 참조를 이동하고 15 분 이내에 해결했습니다.

나에게 해결책은 간단했다.

  1. 필요한 곳으로 파일을 이동하십시오.
  2. 이름이 .vs 인 폴더를 삭제하십시오. 보이지 않는 폴더 여야합니다.
  3. note 또는 notepad ++와 같은 간단한 편집기를 사용하여 솔루션 파일 (.sln)을 엽니 다.
  4. 다음 구조를 사용하여 파일이있는 참조를 변경하십시오. 프로젝트를 같은 폴더에 넣으면 이전 폴더 또는 참조 ".. \"를 제거하십시오. 위의 폴더에 넣으면 참조 ".. \"또는 폴더 이름을 추가하십시오.
  5. 변경 사항이있는 파일을 저장하십시오.
  6. 프로젝트 파일 (.csproj)을 열고 동일한 작업을 수행하거나 참조를 제거하거나 추가하십시오.
  7. 변경 사항을 저장하십시오.
  8. 솔루션 파일을여십시오.

예 :

솔루션 파일 (.sln)

  • 원본 : Project ( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " 스캐너 PDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B } "프로젝트 ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") ="PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj ","{ED5A561B-3674-4613-ADE5-B13661146E2E } "

    신규 : Project ( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "프로젝트 ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") ="PATH1.DataService ","PATH1.DataService \ PATH1.DataService.csproj ","{ED5A561B-3674-4613-ADE5-B13661146E2E } "

프로젝트 파일에서 :

  • 실물:

    새로운:

    원본 참조 : .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    새로운 참조 : .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

요약 : VS2019에서 git으로 이름 바꾸기 및 이동, git 기록 유지, R # 비트 활용, 자동 종속 프로젝트 참조 업데이트 (많은 프로젝트가있는 sln의 경우 200 이상)

Visual Studio 2019에서 C # 프로젝트의 이름을 바꾸고 이동하는 데 다음 단계를 사용했습니다.이 프로세스는 R #을 사용하여 네임 스페이스를 조정합니다. git 히스토리는 "git mv"를 수행하여 유지됩니다 (히스토리 추가 / 삭제 방지).

2 단계 : 1) 프로젝트 이름을 바꾸고 2) 프로젝트를 이동합니다.

( base2 다시 언로드 프로젝트의 팁을 사용 합니다.)

이름 바꾸기

  1. VS | 솔루션 탐색기 | 프로젝트를 마우스 오른쪽 버튼으로 클릭 | 이름을 바꿉니다 (예 : Utils.Foo에서 Foo로).
  2. VS | 솔루션 탐색기 | 프로젝트를 마우스 오른쪽 버튼으로 클릭 | 속성 | 어셈블리 이름, 기본 네임 스페이스 및 어셈블리 정보 필드 변경
  3. 해당 테스트 프로젝트 (예 : Utils.Foo.Tests)에 대해 1과 2를 수행하십시오.
  4. VS | 솔루션 탐색기 | 마우스 오른쪽 버튼으로 클릭 한 프로젝트 (생산 및 테스트) | 리 팩터 | 네임 스페이스 조정
  5. 프로젝트를 사용하는 XAML 파일을 수동으로 또는 적절한 전역 검색 및 교체로 업데이트해야 할 수 있습니다.
  6. 모두 다시 작성
  7. 범하다!! (이동하기 전에 변경 사항을 커밋)

참고 : Windows 탐색기의 폴더는이 시점까지 이전 이름으로 유지됩니다 (예 : Utils.Foo). 이동 단계에서 수정되었습니다.

움직임

이 방법은 1) git history를 유지하고 2) R #을 사용하여 네임 스페이스를 원자 적으로 조정하고 3) 종속 프로젝트를 일괄 업데이트합니다 (종속 sln 및 csproj 파일의 지루한 수동 편집은 피하십시오).

  1. 솔루션에서 모든 프로젝트를 언로드하십시오 (대상 프로젝트를 제거해도 종속 프로젝트의 변경 사항이 트리거되지 않도록 함)

    VS | 솔루션 | 솔루션 아래에서 모든 솔루션 폴더를 선택하십시오. 프로젝트 언로드를 마우스 오른쪽 단추로 클릭하십시오.

  2. git를 사용하여 폴더 이동 (이력이 유지됩니다)

a) 2019 년 개발자 명령 프롬프트 열기

b) 자식 상태 (“커밋 할 것이 없음, 작업 트리 정리”를 설명하기 위해)

c) 프로젝트 git mv 예 : git mv "C : \ Code \ foo \ foo \ Utils.Foo" "C : \ Code \ Foo"

d) 변경을 보거나 확인하기위한 자식 상태

  1. 프로젝트를 제거하다

VS | 솔루션 탐색기 | 프로젝트 선택 | 마우스 오른쪽 버튼을 클릭 | 제거 (모든 프로젝트가 언로드되므로 종속 프로젝트에서 해당 프로젝트에 대한 참조가 올바르게 제거되지 않음)

  1. 프로젝트를 다시 추가하십시오 (솔루션 탐색기의 트리에서 새 위치에).

a) VS | 솔루션 탐색기 | 대상 상위 폴더 선택 | 마우스 오른쪽 버튼을 클릭 | 추가 | 기존 프로젝트

  1. 모든 프로젝트를 새로 고침

중요 : 종속 프로젝트의 * .csproj 파일이 업데이트되었는지 확인하십시오.

(VS | 팀 탐색기 | 변경 | 나열된 종속 csproj를 두 번 클릭 | 프로젝트 참조 경로 변경 검사-확인)

  1. 이동 한 단일 * .csproj 파일에서 경로를 수동으로 수정

메모장 ++ (또는 다른 텍스트 편집기)를 사용하여 경로를 수정하십시오. 종종 간단한 검색 및 바꾸기 (예 : ../../../../에서 ../../)로 수행 할 수 있습니다.

이것은 업데이트됩니다 ...

a) GlobalAssmeblyInfo.cs 참조

b) 패키지 경로

c) 종속성 유효성 검사 다이어그램 파일의 경로

d) 룰 경로에 경로 (예 <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. 솔루션을 닫았다가 다시 엽니 다 (프로젝트 참조를 양호하게 만들기 위해)

모두 저장, 솔루션 닫기, bin 및 obj 폴더를 삭제하여 기록을 정리하고 솔루션 다시 열기를 선호합니다

  1. 확인

a) VS | 팀 탐색기 | 변경

i) 이동 한 파일을 공개하는 단계적 변경 사항이 표시되어야합니다. ii) 멋지게 업데이트 된 종속 프로젝트 (* .csproj)가 csproj diff를 검토하고 경로가 아름답게 업데이트 된 것을 확인해야합니다 !! (이것은 텍스트 편집기를 사용하여 csproj 파일을 수동으로 업데이트하는 것을 피하는 마술입니다)

b) Windows 탐색기에서 이전 위치가 비어 있는지 확인하십시오.

c) 솔루션 정리, 솔루션 재구성, 단위 테스트 실행, sln에서 앱 시작

  1. 범하다!!

1

VS2012에서는 쉽습니다. 변경 매핑 기능을 사용하십시오.

  1. 솔루션을 이동할 폴더를 작성하십시오.
  2. 모든 프로젝트 파일을 체크인하거나 (변경 사항을 유지하려는 경우) 체크 아웃 된 파일을 롤백하십시오.
  3. 솔루션을 닫습니다.
  4. 소스 제어 탐색기를여십시오.
  5. 솔루션을 마우스 오른쪽 단추로 클릭하고 "고급-> 맵핑 제거 ..."를 선택하십시오.
  6. "로컬 폴더"값을 1 단계에서 만든 값으로 변경하십시오.
  7. "변경"을 선택하십시오.
  8. 소스 제어 탐색기에서 솔루션을 두 번 클릭하여여십시오.

2
즉, TFS를 사용하고 있습니까?
Martin Ba

1

Visual Studio comunity 2019에서 Victor David Francisco Enrique의 말을했지만 .vs invisbile 폴더를 삭제하기 만하면됩니다.


0

VS 2015에서

  1. 솔루션 탐색기에서 프로젝트 언로드
  2. 새로운 솔루션 만들기
  3. 새 솔루션의 폴더에 프로젝트를 복사하십시오.
  4. 솔루션을 마우스 오른쪽 단추로 클릭하고 기존 프로젝트를 추가하십시오.
  5. 와 같은 일부 프레임 워크를 사용하는 경우 MVC참조 관리자에서 참조를 추가해야 할 수도 있습니다.

0

나는 이것이 나를 위해 일한이 시도를 알아 냈다.

Visual Studio 2017 커뮤니티 에디션에서는이 경로 "C : \ Users \ mark \ source \ repos \ mipmaps \ mipmaps"에 프로젝트를 만듭니다. 이렇게하면 파일에 대한 액세스가 거부됩니다.

이제이 방법으로 고칠 수 있습니다.

비주얼 스튜디오 프로세스를 닫습니다. 그런 다음 프로젝트를 찾아 프로젝트 폴더를 복사하십시오. 그러나 먼저 Visual Studio 2017 폴더 안에 하위 폴더라는 이름의 프로젝트를 문서로 만듭니다. 그런 다음 기본 Visual Studio 2017 폴더가 아닌 Visual Studio 2017 프로젝트 폴더 안에 프로젝트 폴더를 붙여넣고 Projects라는 하위 폴더로 이동하십시오. 그런 다음 Visual Studio 2017을 다시 시작한 다음 프로젝트 열기 솔루션을 선택한 다음 Visual Studio 2017 Projects 폴더에 붙여 넣은 프로젝트를 찾은 다음 프로젝트를 정리하고 다시 빌드하십시오. 빌드하고 컴파일해야합니다. 희망, 이것은 다른 사람을 도왔습니다. 왜 Microsoft가 쓰기 권한이 필요한 경로로 프로젝트를 구축한다고 생각하는지 잘 모르겠습니다.


0

Git의 변경 사항이 삭제 및 추가 대신 이동 / 이름으로 표시되기를 원했습니다. 그래서 나는 위와이 포스트 의 콤보를했다 .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

그리고 텍스트 편집기를 통해 sln 파일의 너겟 Pkg에서 프로젝트 및 어셈블리의 경로를 조정하십시오.


0
  1. 프로젝트 폴더를 새 대상으로 복사
  2. 솔루션에서 프로젝트를 제거하십시오 ( "솔루션 탐색기"에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "제거"를 선택하십시오).
  3. 그런 다음 기존 프로젝트를 솔루션에 추가하십시오 ( "솔루션 탐색기"에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "추가", "기존 프로젝트"선택).
  4. "YourProjectName.csproj"파일에서 "packages"폴더로 경로 변경 (메모장에서 열고 링크 된 패키지의 경로 변경)

0

이것은 vb2019에서 효과가있었습니다. 소스 프로젝트 폴더를 복사했습니다. 그런 다음 프로젝트를 붙여 넣고 폴더 이름을 변경했습니다. 소스 프로젝트 폴더와의 연결을 끊기 위해 일시적으로 소스 폴더의 이름을 변경했습니다. 대상 프로젝트를 열었습니다. 폼과 모듈의 경로는 로컬 폴더에서 다시 발견되었습니다. 나는 모든 양식과 모듈을 살펴보고 작동하는지 확인했습니다. 나는 프로젝트를 운영했다. 나는 프로젝트를 닫았다. 소스 프로젝트 폴더의 이름을 원래 이름이 아닌 이름으로 바꿨습니다. 오류없이 두 프로젝트를 동시에 열 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.