Visual Studio Post 빌드 이벤트 - 상대 디렉토리 위치에 복사
-
08-07-2019 - |
문제
성공적인 빌드에서는 출력 디렉토리의 내용을 동일한 위치에 다른 위치에 복사하고 싶습니다. "베이스" 폴더. 이 상위 폴더는 상대적인 부분이며 소스 제어 설정에 따라 다를 수 있습니다.
나는 나에게 사용할 수있는 몇 가지 매크로 값을 나열했다 ...
$ (SolutionDir) = D : globaldir version appnameSolution1 빌드
$ (projectDir) = D : globaldir version appnameSolution1 버전 projecta
출력 DIR 컨텐츠를 다음 폴더에 복사하고 싶습니다.
D : globaldir version appnameSolution2 Project 종속성
기본 위치 "d : globaldir version appname"은 위의 매크로 중 하나에서 가져와야합니다. 그러나 매크로 값 목록은 없습니다 뿐 부모 위치.
어떻게 추출합니까? 뿐 게시물 빌드 복사 명령의 기본 위치?
해결책
TargetDir 또는 기타 매크로가 올바른 위치를 가리 키지 않으면 ".."디렉토리를 사용하여 폴더 계층 구조를 뒤로 이동하십시오.
즉. 사용 $(SolutionDir)\..\..
기본 디렉토리를 얻으려면.
모든 매크로 목록은 여기를 참조하십시오.
다른 팁
다음은 프로젝트의 건축 후 이벤트 명령 줄에 넣고 싶은 것입니다.
copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"
편집 : 또는 대상 이름이 프로젝트 이름과 다른 경우.
copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"
당신은 시도 할 수 있습니다 :
$(SolutionDir)..\..\
나는 이것이 관련이 있다고 생각하지만 직접 구축 할 때 문제가있었습니다. msbuild
명령 줄 (배치 파일에서) 대 내부에서 빌딩.
다음과 같은 것을 사용합니다.
<PostBuildEvent>
MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>
(노트: start XCOPY
보다는 XCOPY
복사를 방지하는 권한 문제를 해결하는 데 사용됩니다)
매크로 $(SolutionDir)
평가 ..\
Batchfile에서 MSBuild를 실행할 때 XCOPY
명령 실패. 비주얼 스튜디오 내에서 제작 될 때 잘 작동했습니다. 사용 확인 /verbosity:diagnostic
평가 된 출력을 볼 수 있습니다.
매크로 사용 $(ProjectDir)..\
대신, 같은 일에 해당하는 대신 잘 작동하고 두 빌드 시나리오에서 전체 경로를 유지했습니다.
MSBuild를 직접 사용하는 것이 합리적이지 않습니까? 모든 빌드 에서이 작업을 수행하는 경우 마지막에 MSBuild 작업을 추가 할 수 있습니까? Visual Studio IDE에 표시되지 않은 다른 매크로 값을 찾을 수 없는지 확인하려면 MSBuild 옵션을 진단으로 전환 할 수 있으며 사용할 수있는 모든 변수를 표시 할 수 있습니다. 그들의 현재 가치뿐만 아니라.
Visual Studio에서 이것을 켜려면 도구/옵션으로 이동 한 다음 프로젝트 및 솔루션이라는 섹션으로 트리보기를 아래로 스크롤하고 확장하고 빌드 및 실행을 클릭하십시오. ,이를 진단으로 설정하면 사용할 수있는 다른 매크로 값이 표시됩니다.
나는 당신이 어떤 수준을 가고 싶은지, 그리고 당신의 빌드가 얼마나 복잡한 지 잘 모르기 때문에 당신에게 아이디어를 줄 수 있습니다. 최근에 빌드 스크립트를 작성해 왔으며, 심지어 빌드의 일부로 SQL 코드를 실행했습니다. 더 많은 도움이나 샘플 빌드 스크립트를 원한다면 알려주십시오. 그러나 빌드가 끝날 때 실행하려는 작은 프로세스라면 전체 MSBuild 스크립트가 약간 오버로 죽일 것입니다. .
리한을 돕기를 바랍니다