chore: 完成v1.2版本迭代与代码清理
本次提交完成了多项清理与规范工作: 1. 移除默认管理员硬编码配置与云同步相关代码 2. 简化前端与MAUI端的配置,关闭静态资源托管以外的冗余功能 3. 清理.gitignore与协调目录,移除临时文件与冗余规则 4. 统一项目命名规范,修正包名与版本号 5. 重构后端数据模型,移除ABP审计字段与云同步相关逻辑 6. 简化WebView配置与系统栏样式,移除不必要的平台检测代码 7. 更新文档与规则文件,完善项目规范与版本记录
This commit is contained in:
+50
-135
@@ -1,147 +1,62 @@
|
||||
param(
|
||||
[switch]$Windows,
|
||||
|
||||
[switch]$Linux,
|
||||
|
||||
[string[]]$LinuxRuntimes = @("linux-x64", "linux-arm64"),
|
||||
|
||||
[switch]$LinuxSelfContained,
|
||||
|
||||
[ValidateSet("Release", "Debug")]
|
||||
[string]$Configuration = "Release",
|
||||
|
||||
[switch]$SkipWindowsInnoSetup,
|
||||
|
||||
[switch]$SkipWindowsVersionBump
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ScriptPath = $PSScriptRoot
|
||||
$WebDir = Join-Path $ScriptPath "src\Hua.Todo.Web"
|
||||
$publishWindowsScript = Join-Path $ScriptPath "publish-windows.ps1"
|
||||
$publishLinuxScript = Join-Path $ScriptPath "publish-linux.ps1"
|
||||
$DirectoryBuildProps = Join-Path $ScriptPath "Directory.Build.props"
|
||||
$ProjectDir = Join-Path $ScriptPath "src\Hua.Todo.Maui"
|
||||
$ProjectFile = Join-Path $ProjectDir "Hua.Todo.Maui.csproj"
|
||||
$SetupScript = Join-Path $ProjectDir "setup.iss"
|
||||
|
||||
function Stop-ProjectProcesses {
|
||||
Write-Host "Shutting down dotnet build servers..." -ForegroundColor Yellow
|
||||
dotnet build-server shutdown | Out-Null
|
||||
|
||||
Write-Host "Checking for running processes to prevent file locks..." -ForegroundColor Yellow
|
||||
|
||||
$processesToKill = Get-Process | Where-Object {
|
||||
$_.ProcessName -like "*Hua.Todo*" -or
|
||||
$_.ProcessName -eq "MSBuild" -or
|
||||
($_.ProcessName -eq "dotnet" -and ($_.CommandLine -like "*Hua.Todo*" -or $_.CommandLine -like "*msbuild*"))
|
||||
# Read version from project file
|
||||
$currentVersion = "1.0.0"
|
||||
[xml]$csproj = Get-Content $ProjectFile -Raw
|
||||
$versionNode = $csproj.SelectSingleNode("//Version")
|
||||
if ($null -ne $versionNode) {
|
||||
$currentVersion = $versionNode.InnerText
|
||||
} else {
|
||||
$versionNode = $csproj.SelectSingleNode("//ApplicationDisplayVersion")
|
||||
if ($null -ne $versionNode) {
|
||||
$currentVersion = $versionNode.InnerText
|
||||
}
|
||||
}
|
||||
|
||||
if ($processesToKill) {
|
||||
Write-Host "Stopping $($processesToKill.Count) running processes..." -ForegroundColor Yellow
|
||||
foreach ($p in $processesToKill) {
|
||||
try {
|
||||
Stop-Process -Id $p.Id -Force -ErrorAction SilentlyContinue
|
||||
} catch {
|
||||
Write-Warning "Failed to stop process $($p.ProcessName) (ID: $($p.Id))"
|
||||
}
|
||||
# Update setup script version with current version before build
|
||||
if (Test-Path $SetupScript) {
|
||||
$issContent = Get-Content $SetupScript
|
||||
$versionFound = $false
|
||||
for ($i = 0; $i -lt $issContent.Count; $i++) {
|
||||
if ($issContent[$i] -like '#define MyAppVersion *') {
|
||||
$issContent[$i] = '#define MyAppVersion "' + $currentVersion + '"'
|
||||
$versionFound = $true
|
||||
break
|
||||
}
|
||||
Start-Sleep -Seconds 2
|
||||
}
|
||||
if ($versionFound) {
|
||||
Set-Content $SetupScript -Value $issContent
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Building Hua.Todo.Maui (Release)..." -ForegroundColor Cyan
|
||||
dotnet publish $ProjectFile -f net10.0-windows10.0.19041.0 -c Release --self-contained false
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "MAUI build failed"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$ISCC = "${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe"
|
||||
if (Test-Path $ISCC) {
|
||||
& $ISCC $SetupScript
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "Setup package created successfully!" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "No conflicting processes found." -ForegroundColor Green
|
||||
Write-Error "Packaging failed"
|
||||
}
|
||||
} else {
|
||||
Write-Error "Inno Setup compiler not found"
|
||||
}
|
||||
|
||||
function Build-Web {
|
||||
Write-Host "Building Web artifacts..." -ForegroundColor Cyan
|
||||
if (!(Test-Path $WebDir)) {
|
||||
Write-Error "Web directory not found: $WebDir"
|
||||
exit 1
|
||||
}
|
||||
$versionParts = $currentVersion.Split(".")
|
||||
$patch = [int]$versionParts[2] + 1
|
||||
$newVersion = $versionParts[0] + "." + $versionParts[1] + "." + $patch
|
||||
|
||||
if (!(Test-Path (Join-Path $WebDir "node_modules"))) {
|
||||
Write-Host "Installing npm dependencies..." -ForegroundColor Yellow
|
||||
Push-Location $WebDir
|
||||
npm install
|
||||
Pop-Location
|
||||
}
|
||||
|
||||
Write-Host "Running Web builds in parallel..." -ForegroundColor Yellow
|
||||
$webJobs = @()
|
||||
$webJobs += Start-Job -ScriptBlock {
|
||||
param($dir)
|
||||
Set-Location $dir
|
||||
npm run build
|
||||
} -ArgumentList $WebDir
|
||||
|
||||
$webJobs += Start-Job -ScriptBlock {
|
||||
param($dir)
|
||||
Set-Location $dir
|
||||
npm run build -- --mode maui
|
||||
} -ArgumentList $WebDir
|
||||
|
||||
$webJobs | Wait-Job | Receive-Job
|
||||
}
|
||||
|
||||
function Bump-Version {
|
||||
if (Test-Path $DirectoryBuildProps) {
|
||||
[xml]$props = Get-Content $DirectoryBuildProps -Raw
|
||||
$versionNode = $props.SelectSingleNode("//Version")
|
||||
if ($null -ne $versionNode -and -not [string]::IsNullOrWhiteSpace($versionNode.InnerText)) {
|
||||
$currentVersion = $versionNode.InnerText.Trim()
|
||||
$versionMatch = [regex]::Match($currentVersion, '^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$')
|
||||
if ($versionMatch.Success) {
|
||||
$newVersion = "{0}.{1}.{2}" -f $versionMatch.Groups["major"].Value, $versionMatch.Groups["minor"].Value, ([int]$versionMatch.Groups["patch"].Value + 1)
|
||||
$propsContent = Get-Content $DirectoryBuildProps -Raw
|
||||
$propsContent = $propsContent -replace "<Version>[^<]*</Version>", "<Version>$newVersion</Version>"
|
||||
Set-Content $DirectoryBuildProps -Value $propsContent -Encoding UTF8
|
||||
Write-Host "Bumped version in Directory.Build.props: $currentVersion -> $newVersion" -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($Configuration -ne "Release") {
|
||||
Write-Host "⚠️ WARNING: You are publishing in $Configuration configuration!" -ForegroundColor Yellow
|
||||
Write-Host " Typically, production artifacts MUST be in Release configuration." -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
}
|
||||
|
||||
$shouldPublishWindows = $Windows.IsPresent
|
||||
$shouldPublishLinux = $Linux.IsPresent
|
||||
if (!$shouldPublishWindows -and !$shouldPublishLinux) {
|
||||
$shouldPublishWindows = $true
|
||||
$shouldPublishLinux = $true
|
||||
}
|
||||
|
||||
# 1. Cleanup
|
||||
Stop-ProjectProcesses
|
||||
|
||||
# 2. Build Web
|
||||
Build-Web
|
||||
|
||||
# 3. App Publishing
|
||||
# NOTE: To avoid file locks in 'obj' and 'bin' folders, we publish the .NET apps sequentially.
|
||||
# However, we can parallelize the Inno Setup packaging later if needed.
|
||||
Write-Host "Starting app publishing..." -ForegroundColor Cyan
|
||||
|
||||
if ($shouldPublishWindows) {
|
||||
Write-Host "Publishing Windows Apps..." -ForegroundColor Cyan
|
||||
# Maui Windows (Skip ISS here, we'll do it later if parallel is needed, or just let it run)
|
||||
& $publishWindowsScript -AppType Maui -Configuration $Configuration -SkipInnoSetup:$SkipWindowsInnoSetup -SkipVersionBump -SkipProcessStop
|
||||
|
||||
# Avalonia Windows
|
||||
& $publishWindowsScript -AppType Avalonia -Configuration $Configuration -SkipInnoSetup:$SkipWindowsInnoSetup -SkipVersionBump -SkipProcessStop
|
||||
}
|
||||
|
||||
if ($shouldPublishLinux) {
|
||||
Write-Host "Publishing Linux Apps..." -ForegroundColor Cyan
|
||||
foreach ($rid in $LinuxRuntimes) {
|
||||
& $publishLinuxScript -RuntimeIdentifier $rid -SelfContained:$LinuxSelfContained -Configuration $Configuration -SkipProcessStop
|
||||
}
|
||||
}
|
||||
|
||||
# 4. Finalizing
|
||||
if (!$SkipWindowsVersionBump.IsPresent) {
|
||||
Bump-Version
|
||||
}
|
||||
|
||||
Write-Host "All publishing tasks completed!" -ForegroundColor Green
|
||||
$content = Get-Content $ProjectFile -Raw
|
||||
$content = $content -replace "<Version>.*</Version>", "<Version>$newVersion</Version>"
|
||||
Set-Content $ProjectFile -Value $content
|
||||
|
||||
Reference in New Issue
Block a user