2015-02-10 22 views
39

Ho una soluzione in Visual Studio 2012 con 170 progetti C# in esso. Ho bisogno di retarget tutti i progetti da .NET Framework 4.0 a 4.5.2.Retargeting Tutti i progetti in una soluzione su .NET 4.5.2

Preferisco lasciare che sia gestito da Visual Studio andando nelle proprietà di ogni progetto, modificando il framework di destinazione e lasciando che Visual Studio apporti le modifiche necessarie ai file .csproj.

Ho notato che queste modifiche includono l'aggiunta di alcuni nuovi tag XML a .csproj, in base ad alcuni attributi del progetto corrente.

Come posso eseguire il retargeting in batch di tutti i 170 progetti C# senza utilizzare solo uno strumento di sostituzione testo per sostituire il numero di versione di destinazione? Voglio che Visual Studio esegua tutte le modifiche necessarie al tag e le aggiunte e la sola sostituzione non consentano che ciò accada.

+0

Non conosco alcun modo per farlo automaticamente .. Penso che la soluzione migliore sarebbe un normale registratore di macro di Windows, che usi i comandi da tastiera .. Ma, vorrei eseguirli uno alla volta piuttosto che provare raggrupparli insieme in quanto potrebbe essere difficile identificare quando VS è fatto con il suo lavoro in tutti i casi. –

+1

No, non dovresti farlo. * Soprattutto * non 4.5.2, non ha nuovi tipi utili ed è improbabile che sia coperto da futuri pacchetti multi-targeting. Proprio come 4.0x non lo era. Fai questo * un * progetto alla volta e solo quelli che ne hanno bisogno. Quelli in cui * in realtà * vuoi aggiungere un nuovo assembly di riferimento e modificare il codice per utilizzarli. Se si desidera ignorare questo consiglio, probabilmente lo si fa, quindi utilizzare Modifica> Trova e sostituisci> Sostituisci nei file per sostituire l'elemento TargetFrameworkVersion nei file * .csproj. Assicurati che il tuo controllo sorgente sia solido. –

+1

@HansPassant La tua soluzione di Trova/Sostituisci è esattamente ciò che non volevo fare in base alla mia domanda. Ho bisogno di una soluzione più robusta. –

risposta

46

La documentazione MSDN "Migration Guide to the .NET Framework 4.5" e "How to Configure an App to Support .NET Framework 4 or 4.5" tratta solo la modifica di progetti. Non ci sono dettagli sull'applicazione delle modifiche all'intera soluzione in una sola volta, né ho visto una funzione in VS che la supporta.

Tuttavia, esiste un'estensione (ben valutata) denominata Target Framework Migrator disponibile nella galleria di Visual Studio, che supporta l'aggiornamento alla versione 4.5.2 (così come le versioni più recenti) e sembra che farà esattamente ciò che si desidera. Il codice sorgente è disponibile su GitHub, se sei interessato.

Si noti che la mancanza di tale funzione può essere intenzionale (e non solo un'omissione). Sto solo cercando di indovinare, ma forse i dati di MS sono solo progetti che hanno bisogno di i nuovi Framework saranno aggiornati. FWIW, se si termina l'aggiornamento di alcuni progetti condivisi con altre soluzioni, tali soluzioni potrebbero non riuscire a essere compilate fino al sono anche aggiornate a.

Detto questo, se sei in un piccolo negozio con solo una (o poche) soluzioni e stai cercando di aggiornare tutto in una volta sola, allora forse lo strumento sopra funzionerà per te.

+0

Lo strumento "migratore del framework di destinazione" non funziona sull'ultimo aggiornamento di VS 2017 15.5.5, "Parametro non valido" –

+0

@Anas Si spera che l'autore possa aggiornarlo. Se non lo hai fatto, potresti prendere in considerazione [aprendo un problema] (https://github.com/VHQLabs/TargetFrameworkMigrator/issues) anche su GitHub. –

4

ho costruito io stesso un semplice strumento per la migrazione delle versioni framework di destinazione per una soluzione completa, perché il bersaglio quadro Migrator di estensione non supporta Visual Studio 2017. Scaricare lo strumento dal mio repository GitHub https://github.com/Xpitfire/TargetFrameworkMigrator

So che questo non è il modo migliore per andare, ma ha funzionato per me e forse aiuterà anche qualcun altro.

+2

In base al sito Web, supporta _ "Visual Studio 2012, 2013, 2015, 2017" _ e il progetto è stato aggiornato di recente un mese fa. È fantastico che tu abbia funzionato, ma potresti voler [aprire un problema] (https://github.com/VHQLabs/TargetFrameworkMigrator/issues) anche per il bug. O anche inviare un PR al progetto con la tua correzione in modo che tutti possano trarne beneficio! –

+0

Lo fa di sicuro. –