문제 : 프로젝트 폴더를 이동 후 솔루션이 프로젝트를 찾지 못함
결론 : .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")