본문 바로가기

오류

visual studio 프로젝트 폴더 이동 이후 솔루션에서 프로젝트 인지 못함 해결 (솔루션에서 프로젝트 인지 못함, MSB4025, C1083)

문제 : 프로젝트 폴더를 이동 후 솔루션이 프로젝트를 찾지 못함

결론 : .sln 파일을 메모장으로 열고 프로젝트 경로(작업 디렉토리 경로)를 직접 수정.

 

 


 

 

아래의 구조와 같이 하나의 솔루션 안에서 여러 개의 프로젝트를 실시할 경우가 종종 생깁니다.

 


솔루션 - 프로젝트(windows 데스크톱 애플리케이션 (이하 Client))  - 출력 디렉토리( debug, release)

            - 프로젝트(정적 라이브러리) - 출력 디렉토리( debug, release)

            - 프로젝트(동적 라이브러리) - 출력 디렉토리( debug, release)


 

저는 이것을 프로젝트 끼리 묶고 출력 디렉토리 끼리 묶어서 관리하고 싶었습니다. 따라서 다음과 같이 구조를 변경하였습니다.


솔루션 - 실행파일(폴더명 : OutputFile)  - debug 실행파일(폴더명 : bin_d)

                                                               - release 실행파일(폴더명 : bin)

            - 프로젝트 묶음 폴더(폴더명 : Project)  - 프로젝트(Client)

                                                                          - 프로젝트(정적 라이브러리)

                                                                          - 프로젝트(동적 라이브러리)

            - 외부 참조 - 정적, 동적 라이브러리의 lib, dll 파일

 


실행파일 폴더에 Client의 실행파일을 OutputFile 폴더에 생성시키게 하는 것은 해당 프로젝트 속성 -> 구성 속성 -> 일반 -> 일반 속성 -> 출력 디렉터리를

디버깅에 대해서는 구성을 디버깅으로 설정한 다음  '$(SolutionDir)OutputFile\bin_d\'으로

릴리스에 대해서는 구성을 릴리스로 바꾼 설정한 다음 '$(SolutionDir)OutputFile\bin\ '으로  변경해 주어서 해결하였습니다.

 

하지만 문제가 Client를 빌드하려고 하면 


솔루션 - 실행파일(폴더명 : OutputFile)  - debug 실행파일(폴더명 : bin_d)

                                                               - release 실행파일(폴더명 : bin)

            - 프로젝트 묶음 폴더(폴더명 : Project)  - 프로젝트(Client)

                                                                          - 프로젝트(정적 라이브러리)

                                                                          - 프로젝트(동적 라이브러리)

            - 외부 참조 - 정적, 동적 라이브러리의 lib, dll 파일


위와 같은 구조에서


솔루션 - 실행파일(폴더명 : OutputFile)  - debug 실행파일(폴더명 : bin_d)

                                                               - release 실행파일(폴더명 : bin)

            - 프로젝트 묶음 폴더(폴더명 : Project)  - 프로젝트(windows 데스크톱 애플리케이션)

                                                                          - 프로젝트(정적 라이브러리)

                                                                          - 프로젝트(동적 라이브러리)

            - 프로젝트(Client) 

            - 외부 참조 - 정적, 동적 라이브러리의 lib, dll 파일


이와 같이 Client 폴더가 생성되면서 동시에 MSB4025오류가 발생했고 오류 내용은 프로젝트 파일을 찾지 못했다는 것이었습니다. 정확히 말하면 Client.vcxproj 파일을 찾지 못하는 것이었죠. 해당 프로젝트의 속성 -> 디버깅 -> 작업 디렉터리 를 ' 솔루션 폴더\Client\ ' 에서 '솔루션\Project\Client\' 로 바꾸어 봐도 해경 되지 않고 여전히 빌드를 하면 오류 메시지에서는 '솔루션 폴더\Client' 를 찾을 수 없다고 나왔습니다.

 

이는

솔루션.sln 파일을 메모장으로 열고

빨간 부분을 프로젝트가 위치한 경로로 고쳐주면 해결됩니다.!

(저의 경우에는 "Clint\Client.vcxproj" -> "Project\Client\Client.vcxproj")