몇 가지 프로젝트 (주로 C++)가있는 Visual Studio 솔루션 파일이 있는데
대부분이 출력 디렉토리가 "bin"디렉토리로 설정된 매우 일반적인 방식으로 구성되어 있습니다.
"bin"의 하위 디렉토리 (즉, "bin \ others")로 출력되도록 기본 출력 대상을 지정해야하지만 일부 DLL 종속성 (NuGet 패키지로 관리 됨)은 계속 "bin"디렉토리에 복사됩니다 .
출력 경로의 구조는 다음과 같습니다컴파일 된 대상을 종속성 DLL이 아닌 다른 폴더에 출력하는 올바른 방법은 무엇입니까?
("다른 사람"프로젝트 \ bin에있는 EXE에 의해 런타임에로드 된 DLL이기 때문에 의존성이 EXE 경로에서 찾을 수 있어야하므로 종속 DLL은 \ 빈에 있어야합니다) 모든 NuGet 종속성도 동일한 출력에 복사되기 때문에
변경 $ (OUTDIR) "기타"프로젝트를 위해,하지만이 작동하지 않습니다 지금까지 시도했습니다 무엇
\bin (main EXE and ALL dependencies DLLs) \bin\others (others projects, with their dependencies DLL in \bin)
예배 규칙서.
\ bin에 $ (OutDir)을 유지하지만 "타사"프로젝트의 TargetName을 "others \ $ (ProjectName)"로 변경하십시오.하지만 MSBuild (자동 빌드)에서 clean로 재 빌드 할 때 오류가 발생합니다 사실 Microsoft.CppClean.targets 파일 VC++ 프로젝트에 기본적으로 포함 된 파일은 "$ (IntDir) $ (TargetName) .Build.CppClean.log"에 쓰기를 시도하지만 존재하지 않습니다 ("$ (IntDir) \ others \ "디렉토리가 아직 생성되지 않았습니다).
내가 명령과 같은 cmd를이 MSBuild를 통해 병렬 자동화 된 빌드에 문제가 있고, 프로젝트 내부의 MSBuild 작업이 (VS IDE가 AFAIK, 그들을 suppert하지 않습니다) 수동으로 유지해야하기 때문에 작업을 포스트 구축하지 않도록하고 싶습니다.
이 문제를 해결하는 방법에 대한 의견이나 제안이 있으십니까?
매우 실용적입니다. 빌드 문제 때문에뿐만 아니라 다음 문제를 해결할 방법을 설명하지 않았습니다. 운영 체제는 "그 외"폴더에 종속성을 찾을 기회가별로 없기 때문에 거기에 표시되지 않습니다. 좋은 Q + A는 세부 정보도 지정해야합니다. –
@HansPassant 당신의 요지는 잘 모르겠지만 Windows에서는 EXE ("bin"폴더에서)를 실행하면 "dinamically"bin \ others 폴더에서 DLLS가로드되고 종속성은 "bin"에서 올바르게 발견됩니다. 왜 내가 그들을 "빈 \ 기타"가 아니라 거기에 머물러있게 할 필요가 있는지. – roalz