实现 .NET 10 托盘版网关保活
包含分层探测、可补偿的 IPv4 路由/DNS 切换、自动策略、托盘与分组设置界面、只读诊断工具、离线测试和发布脚本。
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
param(
|
||||
[switch]$Test,
|
||||
[switch]$Publish,
|
||||
[switch]$SelfContained
|
||||
)
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$sdkCandidate = Join-Path $env:USERPROFILE '.dotnet-sdk\dotnet.exe'
|
||||
$dotnet = if ($env:GATEWAY_DOTNET) { $env:GATEWAY_DOTNET } elseif (Test-Path -LiteralPath $sdkCandidate) { $sdkCandidate } else { (Get-Command dotnet -ErrorAction Stop).Source }
|
||||
$previousRoot = $env:DOTNET_ROOT
|
||||
$previousTelemetry = $env:DOTNET_CLI_TELEMETRY_OPTOUT
|
||||
try {
|
||||
$env:DOTNET_ROOT = Split-Path -Parent $dotnet
|
||||
$env:DOTNET_CLI_TELEMETRY_OPTOUT = '1'
|
||||
& $dotnet build (Join-Path $PSScriptRoot 'GatewayKeepalive.sln') -c Release --nologo
|
||||
if ($LASTEXITCODE -ne 0) { throw '构建失败。' }
|
||||
if ($Test) {
|
||||
foreach ($project in @('GatewayKeepalive.Tests', 'GatewayKeepalive.ProbeTests')) {
|
||||
& $dotnet run --project (Join-Path $PSScriptRoot "tests\$project\$project.csproj") -c Release --no-build
|
||||
if ($LASTEXITCODE -ne 0) { throw "$project 验证失败。" }
|
||||
}
|
||||
}
|
||||
if ($Publish) {
|
||||
$flavor = if ($SelfContained) { 'standalone' } else { 'runtime-dependent' }
|
||||
$destination = Join-Path $PSScriptRoot "artifacts\publish\$flavor"
|
||||
$contained = if ($SelfContained) { 'true' } else { 'false' }
|
||||
& $dotnet publish (Join-Path $PSScriptRoot 'src\GatewayKeepalive.Tray\GatewayKeepalive.Tray.csproj') -c Release -r win-x64 --self-contained $contained -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=embedded -o $destination
|
||||
if ($LASTEXITCODE -ne 0) { throw '托盘版发布失败。' }
|
||||
$cli = Join-Path $destination 'diagnostics'
|
||||
& $dotnet publish (Join-Path $PSScriptRoot 'src\GatewayKeepalive.Cli\GatewayKeepalive.Cli.csproj') -c Release -r win-x64 --self-contained $contained -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=embedded -o $cli
|
||||
if ($LASTEXITCODE -ne 0) { throw '只读诊断工具发布失败。' }
|
||||
Write-Host "发布完成:$destination"
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$env:DOTNET_ROOT = $previousRoot
|
||||
$env:DOTNET_CLI_TELEMETRY_OPTOUT = $previousTelemetry
|
||||
}
|
||||
Reference in New Issue
Block a user