Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La modernizzazione con GitHub Copilot utilizza un approccio strutturato per aggiornare i progetti .NET. Comprendere il funzionamento dell'agente, inclusi gli scenari, le competenze, le attività e il flusso di lavoro, consente di collaborare con l'agente in modo efficace e ottenere i risultati migliori.
Suggerimento
Considera l'agente come un collega esperto che capisce .NET profondamente, segue un piano strutturato e si adatta al tuo feedback. Maggiore è il contesto che si dà, maggiore è il livello di prestazioni dell'agente.
L'agente come compagno di squadra
L'agente eccelle nella collaborazione, non nell'automazione in un vuoto:
- Deep .NET knowledge: L'agente comprende i file di progetto, le dipendenze NuGet, le modifiche di rilievo e i modelli di aggiornamento in decine di tecnologie .NET per progetti C# e Visual Basic.
- Flusso di lavoro strutturato: Ogni aggiornamento passa attraverso la valutazione, la pianificazione e l'esecuzione. Nessun cambiamento casuale, nessuna sorpresa.
-
Apprende le preferenze: Quando si dice "usare sempre tipi espliciti invece di
var", l'agente scrive tale preferenza inscenario-instructions.mde lo memorizza tra le sessioni. - Correggibile in volo: Hai commesso un errore? Di' all'agente. Si adatta e applica la correzione in futuro.
- Spiega il suo ragionamento: Chiedi "perché hai scelto questo approccio?" e l'agente ti guida attraverso la decisione.
Scenari
Uno scenario è un flusso di lavoro di modernizzazione end-to-end gestito. Quando si indica all'agente di "aggiornare la soluzione a .NET 10", si attiva lo scenario .NET version upgrade.
Come vengono individuati gli scenari
Non è necessario memorizzare i nomi degli scenari. L'agente individua automaticamente gli scenari pertinenti:
- Analizza la codebase per comprendere le tecnologie in uso, tra cui linguaggio, versione del framework, librerie e tipi di progetto.
- Identifica gli scenari rilevanti per i progetti.
- Classifica gli scenari in base all'importanza e al peso. I più rilevanti vengono visualizzati per primi.
È anche possibile chiedere direttamente: "Quali scenari sono disponibili per la soluzione?"
Persistenza dello scenario
Ogni scenario attivo ottiene la propria cartella in .github/upgrades/{scenarioId}/. La cartella dello scenario contiene il piano, lo stato dell'attività, le preferenze e i log di esecuzione. La cartella fa parte del repository Git.
Per un elenco completo degli scenari, vedere Scenari e informazioni di riferimento sulle competenze.
Ciclo di vita del flusso di lavoro
Ogni scenario segue lo stesso ciclo di vita: un flusso di lavoro a tre fasi.
Fase 1: Valutazione
L'agente raccoglie tutti gli elementi necessari prima di iniziare il lavoro:
- Framework di destinazione: Versione a cui si sta eseguendo l'aggiornamento.
- Strategia Git: L'agente suggerisce la creazione di rami e controlli i dettagli: nome del ramo, se usare rami per singola attività e tempi di commit.
- Modalità flusso: Automatico (guidato dall'agente) o Guidato (approvi ogni fase).
- Parametri specifici dello scenario: A seconda dello scenario, l'agente potrebbe porre altre domande.
L'agente inizializza l'area di lavoro dello scenario in .github/upgrades/{scenarioId}/.
L'agente analizza quindi la codebase:
- Grafico delle dipendenze di progetto (ordine topologico)
- Compatibilità dei pacchetti NuGet con il framework di destinazione
- Modifiche distruttive dell'API
- Copertura dei test
- Complessità e fattori di rischio
L'agente salva un report di valutazione completo in assessment.md.
In base alla valutazione, l'agente valuta la soluzione e identifica le decisioni relative all'aggiornamento. Presenta impostazioni predefinite ragionevoli e consente di esaminare ed eseguire l'override di qualsiasi scelta.
Le opzioni possono includere:
- Strategia di aggiornamento: Bottom-up, top-down o tutto-in-una-volta.
- Approccio di aggiornamento del progetto: riscrittura in-place o side-by-side per le applicazioni Web; in-place o multi-targeting per le librerie.
- Modernizzazione della tecnologia: Opzioni per l'aggiornamento di Entity Framework, l'inserimento delle dipendenze, la registrazione e la configurazione.
- Gestione dei pacchetti: Se e quando adottare Central Package Management.
- Gestione della compatibilità: Come gestire API e pacchetti non supportati.
L'agente salva le decisioni confermate in upgrade-options.md.
In modalità guidata, l'agente si sospende qui per la revisione prima di procedere.
Fase 2: Pianificazione
L'agente crea il piano attività in base alla valutazione e alle opzioni confermate. La pianificazione produce tre file chiave:
-
plan.md: piano di aggiornamento con descrizioni di strategia e attività. -
scenario-instructions.md: Le tue preferenze, decisioni e la memoria dell'agente. -
tasks.md— Elenco ordinato di attività che verrà eseguito dall'agente.
Fase 3: Esecuzione
L'agente lavora attraverso le attività sequenzialmente. Per ogni attività in tasks.md, l'agente segue un ciclo: avvio, esecuzione, convalida (compilazione e test) e completamento. È possibile controllare quando e come l'agente esegue il commit delle modifiche: per compito, per gruppo di compiti o alla fine. Man mano che l'agente funziona, viene aggiornato tasks.md con indicatori di stato live in modo da poter tenere traccia dello stato di avanzamento.
Strategie di aggiornamento
Durante la fase di valutazione, l'agente valuta la soluzione e consiglia una di queste strategie:
| Strategia | Ideale per | Come funziona |
|---|---|---|
| Dal basso verso l'alto | Soluzioni di grandi dimensioni con grafici di dipendenza profondi | Iniziare con i progetti foglia (senza dipendenze), procedere verso l'alto. |
| Dall'alto verso il basso | Feedback rapido sull'app principale | Iniziare con il progetto dell'applicazione, correggere le dipendenze in base alle esigenze. |
| All-at-once | Soluzioni piccole e semplici | Aggiornare tutto in un unico passaggio. |
Suggerimento
L'agente presenta solo decisioni rilevanti per il tuo progetto. Un'app console semplice non visualizza le scelte del framework Web e un progetto senza Entity Framework non visualizza le opzioni di aggiornamento del database.
Competenze
Le competenze sono funzionalità di modernizzazione più piccole e mirate. Quando l'agente rileva codice EF6 durante un aggiornamento, carica la skill da EF6 a EF-Core con istruzioni dettagliate e passo-passo sull'aggiornamento. Richiamare una competenza direttamente durante un aggiornamento: "Aggiornare i servizi WCF nel progetto a CoreWCF".
L'agente viene fornito con oltre 30 abilità integrate, organizzate per dominio:
- Accesso ai dati: da EF6 a EF Core (code-first ed EDMX), LINQ to SQL e aggiornamento SqlClient
- Web/ASP.NET: Identity, Global.asax, OWIN, MVC routing/filters/bundling, e WCF verso CoreWCF
- Serializzazione: Da Newtonsoft.Json a System.Text.Json
- Cloud: Funzioni di Azure da modello in-process a modello di lavoro isolato
- Librerie: DA ADAL a MSAL, SignalR, PowerShell SDK e altro ancora
Caricamento automatico delle competenze in base a ciò che l'agente rileva nella codebase. Non è necessario gestire il caricamento delle competenze. Descrivere solo ciò di cui hai bisogno.
Per l'elenco completo, vedere Scenari e informazioni di riferimento sulle competenze.
Attività
Le attività sono le unità atomiche di lavoro all'interno di uno scenario. Ogni attività rappresenta una parte specifica associata dell'aggiornamento, ad esempio "Aggiornare CommonLib da .NET 6 a .NET 10" o "Aggiornare l'utilizzo di EF6 in DataLayer a EF Core".
Ciclo di vita delle attività
Le attività si spostano tra questi stati:
- Disponibile: Pronto per iniziare, tutte le dipendenze soddisfatte.
- In corso: L'agente sta lavorando attivamente all'attività.
- Completato: Modifiche al codice applicate, la build ha esito positivo, i test superano.
Per ogni attività, l'agente:
- Carica competenze e contesto correlati.
- Valuta la complessità e decide se l'attività necessita di sottoattività.
- Scrive un riepilogo dell'ambito in
tasks/{taskId}/task.md. - Esegue le modifiche al codice.
- Convalida eseguendo compilazione e test.
- Registra i risultati in
tasks/{taskId}/progress-details.md. - Commit delle modifiche e passa all'attività successiva.
Gestione dello stato
L'agente mantiene lo stato permanente in modo da poter arrestare e riprendere in qualsiasi momento. Tutto risiede nel repository in .github/upgrades/{scenarioId}/.
| File | Scopo |
|---|---|
scenario-instructions.md |
Preferenze, decisioni e istruzioni personalizzate. Memoria persistente dell'agente. |
upgrade-options.md |
Decisioni di aggiornamento confermate |
plan.md |
Piano di aggiornamento con descrizioni di strategia e attività |
tasks.md |
Dashboard di avanzamento visivo che mostra lo stato dell'attività |
execution-log.md |
Log dettagliato di tutte le modifiche e decisioni |
tasks/{taskId}/task.md |
Ambito e contesto di attività singola |
tasks/{taskId}/progress-details.md |
Note e risultati dell'esecuzione per singola attività |
Riprendibilità
Chiudere la chat, chiudere l'IDE o tornare al giorno successivo. L'agente riprende da dove si era interrotto.
- Nell'interazione successiva, l'agente controlla automaticamente lo stato corrente dell'area di lavoro.
- L'agente rileva lo scenario esistente e mostra lo stato di avanzamento corrente, ad esempio "3 di 8 attività completate".
- L'agente rileva le attività non aggiornate (bloccate in corso da una sessione precedente interrotta) e offre di riprenderle o riavviarle.
- L'agente ricarica le preferenze da
scenario-instructions.md.
Continuità tra diversi ambienti di sviluppo integrati
Poiché lo stato si trova in Git, è possibile passare tra VS Code, Visual Studio e Copilot CLI durante un aggiornamento. La .github/upgrades/ cartella è lo stato condiviso compreso da entrambi gli IDE.
Suggerimento
Effettua il commit della cartella .github/upgrades/ nel tuo ramo. Eseguire il push del ramo in un repository remoto per consentire ai membri del team di visualizzare lo stato di avanzamento o continuare l'aggiornamento in un computer diverso.
Modalità di flusso
L'agente supporta due modalità di flusso che controllano la quantità di supervisione disponibile: modalità automatica e modalità guidata.
Modalità automatica
L'agente opera in tutte le fasi (valutazione, pianificazione ed esecuzione) senza attendere l'approvazione. Illustra i risultati chiave e gli aggiornamenti sui progressi, ma continua ad andare avanti.
Ideale per utenti esperti, aggiornamenti semplici e soluzioni di piccole dimensioni.
Modalità guidata
L'agente si ferma al confine di ogni fase per consentire la tua revisione.
- Dopo la valutazione: "Ecco cosa ho trovato. Procedere con le opzioni di aggiornamento?
- Dopo la pianificazione: "Ecco il piano attività. Vuoi che inizi l'esecuzione?
- Prima della suddivisione di compiti complessi: "Questo compito è complesso. Ecco come lo suddividerei."
Ideale per gli utenti per la prima volta, soluzioni complesse e quando si vuole apprendere il processo.
Cambiare modalità in qualsiasi momento
- Pronunciare "pausa" o "passare alla modalità guidata" per passare alla modalità guidata.
- Pronuncia "continua" o "vai avanti" per passare alla modalità automatica.
Suggerimento
Iniziare con la modalità guidata per il primo aggiornamento per comprendere il flusso di lavoro, quindi passare a Automatico una volta che si è a proprio agio.