param( [Parameter(Mandatory = $true)] [string]$ProjectPath, [string]$Version = "8.0.23" ) # Namespace da aggiornare $namespaces = @( "Microsoft.EntityFrameworkCore", "Microsoft.AspNetCore" ) if (-not (Test-Path $ProjectPath)) { Write-Host "ERRORE: Progetto non trovato: $ProjectPath" -ForegroundColor Red exit 1 } Write-Host "Progetto: $ProjectPath" Write-Host "Versione target: $Version" Write-Host "Analizzo pacchetti outdated..." Write-Host "" # Ottieni la lista dei pacchetti outdated $outdated = dotnet list "$ProjectPath" package --outdated if ($LASTEXITCODE -ne 0) { Write-Host "Errore nell'esecuzione di 'dotnet list package'." -ForegroundColor Red exit 1 } foreach ($ns in $namespaces) { $matches = $outdated | Select-String $ns foreach ($m in $matches) { $line = $m.ToString().Trim() # Spezza la riga in colonne non vuote $columns = $line -split "\s+" | Where-Object { $_ -ne "" } # Il nome del pacchetto è la prima colonna che NON è ">" $pkg = $columns | Where-Object { $_ -ne ">" } | Select-Object -First 1 if (-not $pkg) { Write-Host " Riga non riconosciuta: $line" -ForegroundColor Yellow continue } Write-Host " -> Aggiorno $pkg a $Version" dotnet add "$ProjectPath" package $pkg --version $Version } } Write-Host "" Write-Host "Aggiornamento completato."