• VisualStudio 의 빌드이벤트에 Powershell 사용하기
    • Powershell 관리자 모드로 실행 후 아래와 같이 입력 후 실행한다.
         
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    • 빌드 전 이벤트에 아래와 같이 입력한다. 파라미터를 넣는게 핵심이다.( *사이띄개 주의 할 것 )
      (환경변수 PATH 에 PowerShell 경로를 추가하자.)
         
powershell "$(SolutionDir)build_event_before.ps1" "$(ProjectName) " "$(NATION)"

  • buil_event_before.ps1 샘플
    • project 별 Predefine.h 에 CommonClient.vsprops 에 정의된 $(NATION) 에 맞는 국가를 #include 하도록 변경하는 Script 이다.
         
# filename : build_event_before.ps1
# author : simmanix
# date : 2016-04-07 21:42
# Visual Studio 에서 빌드시 프로젝트 별로 설정된 Predefine_$NATION.h 가 include 되도록 수정한다.
 
$invocation = (Get-Variable MyInvocation).Value 
$scriptPath = Split-Path $invocation.MyCommand.Path 
$scriptName = $invocation.MyCommand.Name
 
echo "--------------- start $scriptName ---------------"
 
if( $args.Count -lt 2 )
{
 
    echo "usage : $scripName param1 param2"
    echo "--------------- failed $scriptName ---------------"
    exit 1
}
 
$ProjName = $args[0]
$Nation = $args[1]
 
echo "ProjectName : $ProjName"
echo "Nation : $Nation"
 
$PredefineFileName = $PSScriptRoot + "\src\" + $ProjName + "\Predefine.h"
$OldNation = 0
 
$Lines = Get-Content $PredefineFileName | % {
    if( $_ -match "#include `"Predefine_" )
    {
        $sp = $_.split("_");
        $OldNation = $sp[1].replace( ".h`"", "" );
        $bSame = $OldNation -eq $Nation;
        $_ = $sp[0] + "_" + $Nation + ".h`"";
    }
    $_;
}
 
if( $bSame )
{
    echo "Not changed because same nation";
}
else
{
    Set-Content -path $PredefineFileName -Value $Lines
    echo "Changed $OldNation to $Nation"
}
 
echo "--------------- succeed $scriptName ---------------"


'Programming > PowerShell' 카테고리의 다른 글

특정파일들을 여러 폴더에 복사하는 PowerShell Script  (0) 2016.05.24
PowerShell 설정  (0) 2016.05.24

+ Recent posts