feat: 重构 TodoList 架构,新增动态 API 与 MAUI 内嵌 Web 服务

feat:优化交互逻辑,优化发布流程
This commit is contained in:
ShaoHua
2026-04-04 22:11:18 +08:00
parent 81c649cb23
commit 1412ce2695
91 changed files with 3612 additions and 2489 deletions
+96
View File
@@ -0,0 +1,96 @@
param(
[switch]$Force = $false,
[string]$Framework = "net10.0-windows10.0.19041.0",
[ValidateSet("Debug", "Release")]
[string]$Configuration = "Debug",
[switch]$SkipWebBuild = $false
)
$ErrorActionPreference = "Stop"
Write-Host "====================================" -ForegroundColor Cyan
Write-Host " TodoList.Maui 启动脚本" -ForegroundColor Cyan
Write-Host "====================================" -ForegroundColor Cyan
Write-Host ""
$mauiProjectPath = Join-Path $PSScriptRoot "src\TodoList.Maui"
$mauiProjectFile = Join-Path $mauiProjectPath "TodoList.Maui.csproj"
if (!(Test-Path $mauiProjectFile)) {
Write-Host "❌ MAUI 项目文件不存在: $mauiProjectFile" -ForegroundColor Red
exit 1
}
if (!(Get-Command "dotnet" -ErrorAction SilentlyContinue)) {
Write-Host "❌ 未找到 dotnet,请先安装 .NET SDK" -ForegroundColor Red
exit 1
}
Write-Host "[1/2] 检查 TodoList.Maui 是否已在运行..." -ForegroundColor Yellow
$runningProcesses = Get-CimInstance Win32_Process -Filter "Name='TodoList.Maui.exe' OR Name='dotnet.exe'" | Where-Object {
$_.CommandLine -like "*TodoList.Maui*"
}
if ($runningProcesses) {
$pids = ($runningProcesses.ProcessId | Sort-Object) -join ", "
Write-Host "⚠️ TodoList.Maui 可能已在运行中" -ForegroundColor Yellow
Write-Host " 进程 ID: ($pids)" -ForegroundColor Gray
if ($Force) {
Write-Host ""
Write-Host "🔄 强制关闭并重新启动..." -ForegroundColor Yellow
try {
$runningProcesses | ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction Stop }
Write-Host "✅ 旧进程已停止" -ForegroundColor Green
Start-Sleep -Seconds 1
} catch {
Write-Host "❌ 停止进程失败: $_" -ForegroundColor Red
exit 1
}
} else {
Write-Host " 如果需要重新启动,请使用 -Force 参数" -ForegroundColor Gray
Write-Host ""
exit 0
}
} else {
Write-Host "✓ TodoList.Maui 未运行" -ForegroundColor Green
Write-Host ""
}
Write-Host "[2/2] 启动 TodoList.Maui..." -ForegroundColor Yellow
$argumentList = @(
"build",
$mauiProjectFile,
"-t:Run",
"-c", $Configuration,
"-f", $Framework
)
if ($SkipWebBuild) {
$argumentList += "-p:SkipWebBuild=true"
}
Write-Host "📂 工作目录: $mauiProjectPath" -ForegroundColor Gray
Write-Host "🧩 Framework: $Framework" -ForegroundColor Gray
Write-Host "⚙️ Configuration: $Configuration" -ForegroundColor Gray
Write-Host "🚀 启动应用..." -ForegroundColor Green
Write-Host ""
try {
$mauiProcess = Start-Process -FilePath "dotnet" -ArgumentList $argumentList -WorkingDirectory $mauiProjectPath -PassThru
Write-Host "✅ TodoList.Maui 已启动" -ForegroundColor Green
Write-Host " 进程 ID: ($($mauiProcess.Id))" -ForegroundColor Gray
Write-Host ""
Write-Host "📝 提示:" -ForegroundColor Yellow
Write-Host " - 使用 -Force 参数可以强制重启" -ForegroundColor Gray
Write-Host " - 使用 -SkipWebBuild 可跳过内置 Web 资源构建" -ForegroundColor Gray
Write-Host " - 使用 -Framework 可指定目标框架(如 net10.0-windows10.0.19041.0" -ForegroundColor Gray
Write-Host ""
} catch {
Write-Host "❌ 启动失败: $_" -ForegroundColor Red
exit 1
}