[visual-studio] Visual Studio 사후 빌드 이벤트-상대 디렉토리 위치에 복사

성공적으로 빌드되면 출력 디렉토리의 내용을 동일한 “기본” 폴더 아래의 다른 위치에 복사하려고 합니다. 이 상위 폴더는 상대적 부분이며 소스 제어 설정에 따라 달라질 수 있습니다.

사용 가능한 매크로 값 중 일부를 나열했습니다 …

$ (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)\..\..기본 디렉토리를 얻는 데 사용하십시오 .


모든 매크로 목록은 다음을 참조하십시오.

http://msdn.microsoft.com/en-us/library/c02as0cs.aspx


답변

다음은 프로젝트의 빌드 후 이벤트 명령 행에 넣을 내용입니다.

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을 돕는 희망


답변