your programing

디버그 빌드 전용 Visual Studio 빌드 후 이벤트를 실행하는 방법

lovepro 2020. 10. 3. 11:25
반응형

디버그 빌드 전용 Visual Studio 빌드 후 이벤트를 실행하는 방법


빌드 후 이벤트를 한 가지 유형의 빌드에 대해서만 실행하도록 제한하려면 어떻게해야합니까? 이벤트를 사용하여 DLL을 로컬 IIS 가상 디렉터리에 복사하고 있지만 릴리스 모드의 빌드 서버에서 이런 일이 발생하는 것을 원하지 않습니다.


사전 및 사후 빌드 이벤트는 배치 스크립트로 실행됩니다. 에서 조건문을 수행 할 수 있습니다 $(ConfigurationName).

예를 들어

if $(ConfigurationName) == Debug xcopy something somewhere

참고로 goto를 사용할 필요가 없습니다. 쉘 IF ​​명령은 둥근 대괄호와 함께 사용할 수 있습니다.

if $(ConfigurationName) == Debug (
  copy "$(TargetDir)myapp.dll" "c:\delivery\bin" /y
  copy "$(TargetDir)myapp.dll.config" "c:\delivery\bin" /y
) ELSE (
  echo "why, Microsoft, why".
)

평소처럼 포스트 빌드 이벤트를 추가하십시오. 그런 다음 프로젝트를 저장하고 메모장 (또는 선호하는 편집기)에서 열고 PostBuildEvent 속성 그룹에 조건을 추가합니다. 예를 들면 다음과 같습니다.

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>

또는 (이벤트를 배치 파일에 넣고 호출하기 때문에) 다음을 사용하십시오. (배치 파일이 아닌 빌드 이벤트 상자에서) :

if $(ConfigurationName) == Debug goto :debug

:release
signtool.exe ....
xcopy ...

goto :exit

:debug
' debug items in here

:exit

이렇게하면 모든 구성에 대한 이벤트를 가질 수 있으며 배치 파일로 전달하지 않고 매크로를 사용하여 계속 관리 할 수 ​​있으며 % 1은 $ (OutputPath) 등입니다.


Visual Studio 2015 : 올바른 구문은 다음과 같습니다 (한 줄로 유지).

if "$(ConfigurationName)"=="My Debug CFG" ( xcopy "$(TargetDir)test1.tmp" "$(TargetDir)test.xml" /y) else ( xcopy "$(TargetDir)test2.tmp" "$(TargetDir)test.xml" /y)

여기에 오류 255가 없습니다.


구성 이름을 빌드 후 스크립트에 전달하고 거기에서 확인하여 실행해야하는지 확인할 수 있습니다.

$ (ConfigurationName)으로 구성 이름 전달

이를 확인하는 것은 빌드 후 단계를 구현하는 방법을 기반으로하며 명령 줄 인수가됩니다.


이것은 Visual Studio 2015에서 저에게 효과적입니다.
솔루션 폴더와 동일한 수준의 lib 폴더에있는 폴더에서 빌드중인 프로젝트의 대상 디렉터리로 모든 dll 파일을 복사합니다.
내 프로젝트 디렉토리에서 상대 경로를 사용하고 .. \ .. \ lib

MySolutionFolder
.... MyProject
Lib으로 폴더 구조를 두 단계 위로 이동

if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE  (echo "Not Debug mode, no file copy from lib")

다른 프로젝트 설정과 마찬가지로 구성별로 빌드 이벤트를 구성 할 수 있습니다. 속성 페이지 대화 상자의 드롭 다운에서 변경할 구성을 선택하고 빌드 후 단계를 편집하기 만하면됩니다.


VS 2012에서는 사용해야합니다 (VS 2010에서도 생각합니다)

if $(Configuration) == Debug xcopy

$ (ConfigurationName)이 매크로로 나열되었지만 할당되지 않았습니다.

enter image description here

비교 : http://msdn.microsoft.com/en-us/library/c02as0cs(v=vs.110).aspx

참고URL : https://stackoverflow.com/questions/150053/how-to-run-visual-studio-post-build-events-for-debug-build-only

반응형