성공적으로 빌드되면 출력 디렉토리의 내용을 동일한 “기본” 폴더 아래의 다른 위치에 복사하려고 합니다. 이 상위 폴더는 상대적 부분이며 소스 제어 설정에 따라 달라질 수 있습니다.
사용 가능한 매크로 값 중 일부를 나열했습니다 …
$ (SolutionDir) = D : \ GlobalDir \ Version \ AppName \ Solution1 \ build
$ (ProjectDir) = D : \ GlobalDir \ Version \ AppName \ 솔루션 1 \ Version \ ProjectA \
Output Dir 내용을 다음 폴더에 복사하고 싶습니다.
D : \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependency
위의 매크로 중 하나에서 기본 위치 “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
, 배치 파일에서 명령 줄을 사용하여 VS에서 빌드하는 것을 직접 빌드 할 때 문제가 발생했습니다 .
다음과 같은 것을 사용하십시오.
<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
)
배치 파일 에서 msbuild를 실행할 때 매크로가 $(SolutionDir)
평가되어 명령이 실패했습니다. 그렇지 않으면 Visual Studio에서 빌드 할 때 제대로 작동했습니다. 사용하여 확인..\
XCOPY
/verbosity:diagnostic
평가 결과를 표시.
$(ProjectDir)..\
똑같은 매크로를 대신 사용하면 두 빌드 시나리오에서 모두 잘 작동하고 전체 경로를 유지합니다.
답변
msbuild를 직접 사용하는 것은 이치에 맞지 않습니까? 모든 빌드 에서이 작업을 수행하는 경우 끝에 msbuild 작업을 추가 할 수 있습니까? Visual Studio IDE에 표시되지 않은 다른 매크로 값을 찾을 수 없는지 확인하려면 msbuild 옵션을 진단으로 전환하면 사용할 수있는 모든 변수가 표시됩니다. 현재 가치뿐 아니라
Visual Studio 에서이 기능을 켜려면 도구 / 옵션으로 이동 한 다음 트리보기를 프로젝트 및 솔루션이라는 섹션으로 스크롤하고 확장 한 다음 빌드 및 실행을 클릭하십시오. 오른쪽에서 빌드 출력 세부 정보를 지정하는 드롭 다운입니다 를 진단으로 설정하면 사용할 수있는 다른 매크로 값이 표시됩니다.
어느 수준으로 가고 싶은지, 얼마나 복잡한 지 알고 싶기 때문에 아이디어를 얻을 수 있습니다. 최근에는 빌드의 일부로 SQL 코드를 실행하는 빌드 스크립트를 수행했습니다. 좀 더 도움이 필요하거나 샘플 빌드 스크립트가 필요하면 알려주십시오.하지만 빌드가 끝날 때 실행하려는 작은 프로세스 인 경우 전체 msbuild 스크립트를 사용하는 것은 약간 오버 킬입니다. .
그것이 Rihan을 돕는 희망
답변
