토론을 위해 솔루션 파일, "RealLibrary \ RealLibrary.csproj"프로젝트 파일 ("실제"라이브러리, 종속성 포함) 및 "MockLibrary \ MockLibrary"가 포함 된 프로젝트 디렉토리가 있다고 가정합니다. csproj "파일 (비공개 구현을 사용하는"모의 (mock) "라이브러리).
정확하게 이해했다면 솔루션의 RealLibrary에 대한 MockLibrary를 쉽게 "바꾸기"를 원할 것입니다.
"RealLibrary.csproj"프로젝트를 찾기 위해 솔루션 (및 종속 프로젝트)이 "RealLibrary"디렉토리의 이름을 바꾸도록 설정되어 있다고 가정 할 때 가장 쉽고/해킹 할 수있는 방법은 무엇입니까?), "MockLibrary"디렉토리의 이름을 "RealLibrary"로 변경하고 "MockLibrary.csproj"의 이름을 "RealLibrary.csproj"로 바꿉니다. 이렇게하면 "실제 라이브러리"를 참조하는 경우에도 솔루션 및 종속 프로젝트를 "모의 라이브러리"를로드하는 데 효과적으로 "속이게"됩니다.
좀 더 복잡하고 (아마도 더 깨끗한) 해결책은 실제로 "sln"및 "csproj"파일을 "RealLibrary.csproj"대신 "MockLibrary.csproj"를 참조하도록 수정하는 것입니다. 은 "SLN"파일에서, 당신은 상단에있는 섹션에서 프로젝트의 경로를 변경해야합니다 :
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RealLibrary", "RealLibrary\RealLibrary.csproj", "{E1714F9A-E1D9-4132-A561-AE2B4919391C}"
EndProject
당신은 그 길 "RealLibrary \ RealLibrary.csproj"에서 "MockLibrary \ MockLibrary을 변경해야 .csproj ". 완성도를 높이려면 이름을 변경하거나 이름에 "라이브러리"와 같은 일반적인 이름을 사용하십시오.
마찬가지로 종속 csproj 파일에서 "RealLibrary.csproj"를 참조하고 경로를 수정하는 "ProjectReference"노드의 모든 인스턴스를 찾아야합니다. 이 섹션은 다음과 같습니다.
<ProjectReference Include="..\RealLibrary\RealLibrary.csproj">
<Project>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Project>
<Name>RealLibrary</Name>
</ProjectReference>
이 스왑을 수행하기위한 스크립트를 비교적 쉽게 작성할 수 있습니다. 그러나 여기에는 더 깊은 문제가있어보다 직접적으로 해결 될 수 있다고 생각합니다. 나는 그것을 별도의 답변으로 게시 하겠지만, 당신이 먼저 찾고 있던 실제 답변을 갖고 싶었습니다.
우리는 이것을 우리의 주요 솔루션의 일부로 유지하고 싶습니다 (이것은 f.e. 연속 통합 설정을 간소화합니다). 그러나 다른 아이디어가 없다면, 나는 당신을 고려할 것입니다. 고맙습니다. – liori
@liori 외부 종속성이 라이브러리 및 독립 실행 형 도구 형식 인 경우 소스 제어에 추가하고 필요할 때 참조 할 수 있습니다. 이렇게하면 "특별 설정"이 필요하지 않습니다. –