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