Files
kislovdm 8467399001
.NET Core Desktop / build (Debug) (push) Has been cancelled
Реорганизация
2026-04-27 00:15:02 +03:00

60 lines
2.0 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
if [%1] == [] GOTO :USAGE
set version=%1
set fileversion=%1
set informationalversion=%1
if [%2] NEQ [] SET fileversion=%2
if [%3] NEQ [] SET informationalversion=%3
echo Setting version in *.csproj files
set "script=%TEMP%\setversion-csproj.ps1"
(
echo param^(
echo [string]$Version,
echo [string]$FileVersion,
echo [string]$InformationalVersion
echo ^)
echo $ErrorActionPreference = "Stop"
echo $projects = Get-ChildItem -Path ^(Get-Location^) -Filter *.csproj -Recurse
echo foreach ^($project in $projects^) ^{
echo Write-Host "^> $($project.FullName)"
echo [xml]$xml = Get-Content -Path $project.FullName
echo $propertyGroup = $xml.Project.PropertyGroup ^| Select-Object -First 1
echo if ^(-not $propertyGroup^) ^{
echo $propertyGroup = $xml.CreateElement^("PropertyGroup"^)
echo [void]$xml.Project.AppendChild^($propertyGroup^)
echo ^}
echo function Set-Or-CreateTag ^([xml]$doc, [System.Xml.XmlElement]$group, [string]$tagName, [string]$value^) ^{
echo $node = $group.SelectSingleNode^($tagName^)
echo if ^($node^) ^{
echo $node.InnerText = $value
echo ^} else ^{
echo $newNode = $doc.CreateElement^($tagName^)
echo $newNode.InnerText = $value
echo [void]$group.AppendChild^($newNode^)
echo ^}
echo ^}
echo Set-Or-CreateTag $xml $propertyGroup "Version" $Version
echo Set-Or-CreateTag $xml $propertyGroup "AssemblyVersion" $Version
echo Set-Or-CreateTag $xml $propertyGroup "FileVersion" $FileVersion
echo Set-Or-CreateTag $xml $propertyGroup "InformationalVersion" $InformationalVersion
echo $xml.Save^($project.FullName^)
echo ^}
) > "%script%"
powershell -NoProfile -ExecutionPolicy Bypass -File "%script%" "%version%" "%fileversion%" "%informationalversion%"
set exit_code=%ERRORLEVEL%
del /q "%script%" >nul 2>&1
if not %exit_code%==0 exit /b %exit_code%
echo Done!
GOTO:EOF
:USAGE
echo Usage:
echo.
echo SetVersion.cmd Version [FileVersion] [InformationalVersion]
echo.