Bu scriptin amacı masaüstü programlarını “Release” olarak build ettiğimizde build edilen yerdeki exe ve dll dosyalarını alıp bir zip dosyasına atıyor. Dosya adı proje adı, tarih, saat ve kullanıcı adından oluşuyor. Aşağıdaki resim gibi sonuç çıkıyor karşımıza. Bence gereksiz bir şeydi bu mesele çünkü Git diye bir şey var ama herkes aynı mantıkla çalışmıyor. Bir versiyondaki özellik bir sonrakinde kayboluyormuş, bir önceki versiyonda çalışan özellik yenisinde çalışmıyormuş… Allah’tan bana gelmiyor böyle saçma sapan hatalar.
Şu anda bir işe yaradığı yok ama güzel bir özellik. İş yaptığımızı gösterebiliyoruz herkese.
Çalıştırmak için Visual Studio’nun Post-Build Event Command Line kısmına
powershell -ExecutionPolicy ByPass -file "c:\Post-Execute.ps1" -ConfigurationName "$(ConfigurationName)" -TargetName "$(TargetName)"
yazın. Sonra da aşağıdaki kodları “Post-Execute.ps1” adında bir dosyaya kaydedin. Hepsi bu kadar.
param ( [Parameter(Mandatory=$true)][string] $ConfigurationName, [Parameter(Mandatory=$true)][string] $TargetName ) $User="Huseyin" function zipFiles([string] $sourceFileName) { Add-Type -Assembly System.IO Add-Type -Assembly System.IO.Compression.FileSystem $sourceFolder="\\192.168.2.232\Ortak\_Output\" + $sourceFileName + "\" $DateStr = (Get-Date).ToString("yy.MM.dd HH.mm.ss") $FileName = $TargetName + " " + $DateStr + " " + $User + ".zip" $zipFileName = $sourceFolder+$FileName $releaseFolder=$sourceFolder+"Temp" $sourceFileNames1=$sourceFileName+".exe*" $sourceFileNames2=$sourceFileName+".dll*" $directoryTest = (Test-Path $releaseFolder) if ( $directoryTest -eq $false) { New-Item -ItemType Directory -Force -Path $releaseFolder } Get-ChildItem $sourceFolder -Filter $sourceFileNames1 | Copy-Item -Destination $releaseFolder -Force Get-ChildItem $sourceFolder -Filter $sourceFileNames2 | Copy-Item -Destination $releaseFolder -Force try { [System.IO.Compression.ZipFile]::CreateFromDirectory($releaseFolder,$zipFileName) } catch [System.IO.IOException] { Write-Output ($dateTime + ' | ' + $_.Exception.Message ) } Get-ChildItem -Path Temp -Recurse | Remove-Item -force -recurse -ErrorAction SilentlyContinue Remove-Item .\Temp -Recurse -Force -ErrorAction SilentlyContinue } if ($ConfigurationName -eq "Release") { zipFiles -sourceFileName $TargetName }