Modo corretto per rinominare la soluzione (e le directory) in Visual Studio


415

Ho una soluzione Visual Studio piuttosto impegnata (2010, ma non dovrebbe importare) che devo rinominare.

Voglio rinominare le cartelle in modo che corrispondano al nome della nuova soluzione, ma non riesco a trovare un modo per riformattare automaticamente i nomi delle cartelle e passare attraverso ogni singolo file di progetto sarà doloroso.

C'è un modo ufficiale per farlo? In alternativa (e molto meno preferibilmente), ci sono strumenti gratuiti per raggiungere questo obiettivo?



13
Come è un duplicato? Chiede una ridenominazione di una soluzione, non un progetto!
Viking

Risposte:


375

Modifica manualmente il file .sln

Questo metodo è interamente finalizzato a rinominare la directory per il progetto, come visualizzato in Esplora risorse.

Questo metodo non soffre dei problemi nel metodo Rimuovi / aggiungi file di progetto sotto (riferimenti che scompaiono), ma può causare problemi se il tuo progetto è sotto il controllo del codice sorgente (vedi note sotto). Questo è il motivo per cui il passaggio 2 (backup) è così importante.

  1. Chiudi Visual Studio.
  2. Crea un backup del tuo file .sln (puoi sempre ripristinare).
  3. Immagina di voler rinominare la directory Project1in Project2.
  4. Se non si utilizza il controllo del codice sorgente, rinominare la cartella da Project1in Project2Windows Explorer.
  5. Se si utilizza controllo del codice sorgente, rinominare la cartella da Project1al Project2utilizzando le funzioni fornite dal controllo del codice sorgente. Ciò preserva la cronologia del file. Ad esempio, con TortoiseSVN, fare clic con il tasto destro sul file, selezionare TortoiseSVN .. Rename.
  6. Nel file .sln, modifica tutte le istanze di Project1essere Project2, usando un editor di testo come NotePad .
  7. Riavvia Visual Studio e tutto funzionerà come prima, ma con il progetto in una directory diversa.

Puoi anche vedere manualmente la soluzione di ridenominazione o pubblicare che descrive questo processo manuale .

vantaggi

  • È possibile fare in modo che la directory in Esplora risorse corrisponda al nome del progetto all'interno della soluzione.
  • Questo metodo non rimuove alcun riferimento da altri progetti a questo file (un vantaggio rispetto al metodo Rimuovi / aggiungi file di progetto , vedere la mia altra risposta di seguito).

Avvertenze

  • È importante eseguire il backup di tutto in un file .zip prima di rinominare qualsiasi cosa, poiché questo metodo può creare problemi con il controllo del codice sorgente.
  • Se il progetto è sotto il controllo del codice sorgente, è possibile che si verifichino problemi se si rinomina file o directory al di fuori del controllo del codice sorgente (utilizzando Esplora risorse). È preferibile rinominare il file usando il framework di controllo del codice sorgente stesso , se possibile, per preservare la cronologia di quel file (controlla il menu contestuale con un clic destro - potrebbe avere una funzione per rinominare il file).

Aggiornamento 02/11/2014

ReSharper ha aggiunto un metodo automatizzato per ottenere lo stesso risultato del metodo manuale sopra. Se lo spazio dei nomi è sottolineato da una linea blu ondulata, fai clic sull'icona della piramide d'azione per:

  • Rinominare lo spazio dei nomi in modo che corrisponda al nome della directory in Esplora risorse, oppure;
  • Rinominare la directory in Esplora risorse in modo che corrisponda allo spazio dei nomi.

Nel secondo caso, l'ultima parola definisce il nome della nuova directory in Esplora risorse, ad esempio se cambiassimo lo spazio dei nomi in ViewModel2, offrirebbe di spostare il file nella cartella ViewModel2.

Tuttavia, ciò non aggiornerà necessariamente i file nel controllo del codice sorgente, quindi potrebbe essere necessario utilizzare il metodo manuale.

inserisci qui la descrizione dell'immagine

Aggiornamento 2018-01-31

Testato con Visual Studio 2008, 2010, 2012, 2013, 2015, 2017 Aggiornamento 1, 2, 3, 4, 5.

Aggiornamento 2020-05-02

Testato con Visual Studio 2019.


2
nota: anche con VS2012 è necessario riavviare perché altrimenti può essere confuso e si ottengono errori stupidi
Simon_Weaver

1
"Se si dispone del controllo del codice sorgente, si perderà la cronologia del file" questo è un grosso svantaggio per noi (controllo, ecc.) Ci sono percorsi suggeriti mantenendo la cronologia?
dougajmcdonald,

23
Visual Studio è un programma così potente, ma questa funzionalità non è inclusa? wow ..
Luca Steeb,

2
Anche dopo aver seguito la soluzione descritta da @Contango, stavo ancora ottenendo ed errore: l'attributo OwinStartup scoperto nell'assembly ... avvio nuovo nome che era in conflitto con il vecchio nome. Ho esaminato le cartelle obj e bin e ho eliminato qualsiasi file con il vecchio nome, lasciando tutto il resto intatto. Riavviato vs con il mio progetto appena nominato e ha funzionato come un fascino! Grazie!
nocturns2,

2
@LucaSteeb Yup, secondo quanto riferito il 2012 era di circa 50 milioni di righe di codice. #monolitico
Chiramisu,

158

Ecco i passaggi che devi seguire per rinominare una soluzione:

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto, selezionare Rinomina e immettere un nuovo nome.
  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto e selezionare Proprietà. Nella scheda Applicazione, modifica "Nome assieme" e "Spazio dei nomi predefinito".
  3. Nel file cs principale (o in qualsiasi altro file di codice), rinominare la dichiarazione dello spazio dei nomi per utilizzare il nuovo nome. Per questo fare clic con il tasto destro del mouse sullo spazio dei nomi e selezionare Refactor> Rinomina immettere un nuovo nome. Per esempio: namespace WindowsFormsApplication1
  4. Modificare AssemblyTitle e AssemblyProduct in Properties / AssemblyInfo.cs.

    [assembly: AssemblyTitle("New Name Here")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("New Name Here")]
    [assembly: AssemblyCopyright("Copyright ©  2013")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
  5. Elimina fisicamente le directory bin e obj.

  6. Rinominare la directory delle cartelle fisiche del progetto.

  7. Apri il file SLN (all'interno del blocco note o di qualsiasi editor) e modifica il percorso del progetto.

  8. Pulisci e ricostruisci il progetto.


1
Funziona perfettamente! Ma devi gestirlo Datasetmanualmente (se ti sei collegato al tuo progetto).
Sujith HS,

2
Lavori! Ho anche dovuto rinominare i file .sln e .suo. E ho scoperto che il passaggio 4 era già stato completato da uno dei passaggi precedenti nel mio VS 2010
Patch del

3
Sono un po 'confuso sul fatto che ci si riferisca o meno alla Soluzione o al Progetto nel passaggio 1. Voglio rinominare entrambi, ognuno con un nome diverso. Quale sarebbe il nuovo spazio dei nomi, il nuovo nome della soluzione o il nome del progetto? Grazie per avermi chiarito questo.
Alan Fisher,

1
Questo ha funzionato anche per me (usando VS2013), ma ha perso i percorsi del progetto nel \Packages\repositories.configfile.
Ted

1
Prima di tentare di riaprire la soluzione, ho utilizzato uno strumento di ricerca, Agent Ransack, per cercare in tutti i file e le cartelle qualsiasi riferimento al nome della soluzione / progetto precedente e correggerli. C'erano diversi posti in cui dovevo farlo.
Andy G,

31

Le operazioni di ridenominazione in Visual Studio cambiano solo il nome file, ovvero per un progetto, * .prj e per una soluzione * .sln. Dovrai rinominare le cartelle separatamente usando il filesystem, e dovrai rimuovere e leggere i progetti poiché avranno nuovi nomi di cartella. Tuttavia, si noti che i file di soluzione e progetto sono rispettivamente file texst e xml. È possibile scrivere il proprio programma che li analizza e rinomina i nomi delle cartelle, i nomi dei file e corregge i file di progetto / soluzione internamente.


1
Ci sono strumenti gratuiti disponibili che lo fanno già? Non sono riuscito a trovare nulla.
David Pfeffer, l'

5
L'unica cosa che potrebbe aiutare è CoolCommands 4.0 "Aggiungi Progetti dalla cartella", in modo che dopo aver rimosso / rinominato le cartelle del progetto è possibile aggiungere tutti indietro in una volta: sharptoolbox.com/tools/coolcommands
AaronLS

1
sublime text 2 ha regex search e sostituisce funzionalità che facilitano la gestione di questo.
jfyelle,

22

Puoi anche esportare un modello e quindi creare un nuovo progetto dal modello esportato modificando il nome come preferisci


1
Questo ha funzionato anche per me. Ho dovuto apportare una modifica, però. Stavo usando il framework di entità in un'applicazione web e ha lasciato i vecchi file .dll sotto il nome del progetto originale, quindi ho dovuto cercare perché stavo ottenendo un tipo di errore duplicato per le classi della tabella. Una volta rimossi quelli dal progetto, ha funzionato bene. Speriamo che questo aiuti. E grazie Edoardo!
Steve,

2
Questo è assolutamente il modo migliore per farlo, fare riferimento a msdn.microsoft.com/en-us/library/… per vedere dove spostare il modello esportato per trovarlo nella finestra di dialogo "Nuovo progetto".
Ares Ou,

13

Di seguito è riportato un modo dettagliato per rinominare l'intera soluzione in Visual Studio 2013

Supponendo che stiamo cambiando un progetto chiamato "HelloWorld.ui" in "Section1to5.ui"

  1. Vai a Esplora soluzioni (screenshot di seguito), fai clic con il pulsante destro del mouse sul progetto che desideri rinominare e seleziona "Rinomina". Inserisci il nuovo nome che desideri.

Screenshot di Solution Explorer

  1. Fare clic con il tasto destro del mouse sul Progetto appena rinominato e fare clic su "Proprietà". Nella scheda Applicazione, modifica "Nome assembly" e "Spazio dei nomi predefinito".

  2. Nel file Program.cs principale (o in qualsiasi altro file di codice eventualmente creato), rinominare la dichiarazione dello spazio dei nomi per utilizzare il nuovo nome. Per questo fare clic con il tasto destro del mouse sullo spazio dei nomi e selezionare Refactor> Rinomina immettere un nuovo nome. Per esempio:

    spazio dei nomi HelloWorld.ui ----> spazio dei nomi Section1to5.ui

  3. Quindi, espandere le "Proprietà" e fare doppio clic sul file AssemblyInfo.cs. Noterai il seguente frammento di codice:

[assembly: AssemblyTitle("HelloWorld.ui")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("HelloWorld.ui")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

È necessario modificare AssemblyTitle e AssemblyProduct in Properties / AssemblyInfo.cs con il nuovo nome, in questo esempio da "HelloWorld.ui" a "Section1to5.ui". Dopo aver modificato il nome, salva e chiudi Visual Studio.

  1. Nella directory del progetto, vai nella cartella "HelloWorld.ui" ed elimina le directory "bin" e "obj".

  2. Al termine, rinominare la cartella "HelloWorld.ui" con il nome del nuovo progetto.

  3. Apri il file delle soluzioni rinominato con un editor di testo quale Blocco note o Blocco note ++ e modifica la seguente riga:

    Progetto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.ui", "HelloWorld.ui \ HelloWorld.ui.csproj", "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}"

Sostituisci tutte le istanze di "HelloWorld.ui" con il nuovo nome che hai selezionato per il tuo progetto, in questo caso "Section1to5.ui". Ciò modifica il percorso del progetto nella directory rinominata nel passaggio 6.

  1. Apri il file delle soluzioni con Visual Studio, pulisci e ricostruisci il progetto.

  2. È possibile notare che il pulsante "Debug / Esegui" è stato sostituito dal pulsante "Allega". In questo caso, fai semplicemente clic con il pulsante destro del mouse sul progetto e scegli l'opzione "Imposta come progetto di avvio". In alternativa, fai clic su Strumenti> Personalizza> Comandi> Aggiungi comando> Debug e aggiungi il pulsante.

Hai finito di rinominare il progetto, se hai qualche dubbio non esitare a postare e sarei felice di aiutarti!


6

Elimina le sottocartelle bin e obj per rimuovere un carico di riferimento errato, quindi utilizza Windows per cercare il vecchio nome.

Modifica qualsiasi codice o file XML trovato e ricostruito, ora dovrebbe essere ok.




4

Ho provato il Renamer di Visual Studio Project, ma ha generato eccezioni nei pochi casi in cui l'ho provato.

Ho avuto un buon successo con CopyWiz .

Non sono in alcun modo affiliato con loro e non l'ho ancora pagato, ma potrei doverlo fare presto, poiché è l'unico strumento che sembra funzionare sia per i miei progetti C # che C ++. Spero che facciano un po 'di soldi e continuino a migliorarli.


4

Rimuovere / aggiungere il metodo del file di progetto

Questo metodo è interamente finalizzato a rinominare la directory per il progetto, come visualizzato in Esplora risorse.

  1. Fai il backup dell'intero progetto usando qualcosa come GIT, SVN o WinZip (importante!).
  2. All'interno della soluzione in Visual Studio, rimuovere il progetto.
  3. Rinomina la directory in Esplora risorse.
  4. Aggiungi nuovamente il progetto in Visual Studio.

vantaggi

  • È possibile fare in modo che la directory in Esplora risorse corrisponda al nome del progetto all'interno della soluzione.

svantaggi

  • Se rimuovi una biblioteca, rimuove qualsiasi riferimento a detta biblioteca da altri progetti. La soluzione potrebbe non essere compilata dopo questo, fino a quando non si aggiungono nuovamente i riferimenti a detta libreria (è abbastanza semplice). Questo è il motivo per cui il passaggio 1 (backup) è così importante.
  • Se hai il controllo del codice sorgente, perderai la cronologia del file.

Fare clic con il tasto destro del mouse su un progetto e selezionare "Apri cartella in Esplora risorse" è utile per tenere traccia di dove è archiviato il progetto mentre si esegue questo processo.


4
WinZip ??? Spero davvero che tu stia utilizzando il controllo del codice sorgente reale e non esegua backup di file zip del tuo codice. Se tu o qualcun altro lo stai leggendo, dai un'occhiata a try.github.io e dai un'occhiata a un progetto di test. Non ci tornerai!
Matt Klein,

2
Ho letto il tuo commento Signor @MattKlein e avevi ragione: D Grazie!
Jeancarlo Fontalvo,

@Matt Klein Totalmente d'accordo, aggiornato per consigliare anche GIT o SVN.
Contango,

3

Puoi:

  1. fai clic su file-> nuovo -> crea progetto da progetto esistente

  2. seleziona il tuo file originale, ad es. soluzione 1 e immettere il nuovo nome file soluzione 2

  3. cambiare il nome del progetto nella nuova soluzione 2


Mi piace molto questo approccio è votato in negativo per un motivo particolare?
Coops

bloccato la mia macchina vicino alla fine - su Visual Studio 2017
Kleis

3

Se hai problemi con il caricamento di progetti condivisi, come Xamarin, ricorda di cambiare il riferimento alle librerie condivise nei file csproj. Ho sviluppato un gioco CocosSharp e non volevo caricare i progetti Droid / iOS / WP81. Ho dovuto cambiare sotto la linea in ogni file csproj (Driod / iOS / WP81) che faceva riferimento alla libreria condivisa. Ciò è stato causato dalla modifica dei nomi delle cartelle, quindi sostituisci YOUR_PREVIOUS_NAMESPACE con i tuoi nuovi nomi di cartelle.

<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />

Inoltre ho notato che per i progetti .Driod, il nome dell'assembly nelle proprietà del progetto non può essere modificato utilizzando Visual Studio (utilizzo 2015). Ho dovuto cambiare manualmente il nome dell'assembly nel file .Droid.csproj.

<AssemblyName>YourNameSpace</AssemblyName>

Quindi ho caricato la soluzione e nelle proprietà del progetto ho visualizzato il nuovo nome visualizzato. Dopo aver ricostruito la DLL con quel nome è stato generato.


2

Se si sta creando un sito Web in Visual Studio 2010. È possibile modificare il nome del progetto come segue.

Passaggio 1: In Visual Studio 2010 il file SLN verrà archiviato nella cartella del progetto in Visual Studio 2010 e i file di origine verranno archiviati nella cartella del sito Web in Visual Studio 2010.

Passaggio 2: rinominare la cartella facendo clic con il tasto destro su quella cartella in avanti da Rename che contiene il progetto SLN.

Passaggio 3: rinominare il nome del file SLN facendo clic con il tasto destro del mouse sul file SLN in avanti da Rename.

Passaggio 4: rinominare la cartella che contiene l'origine del file SLN in Sito Web in Visual Studio 2010.

Passaggio 5: Infine, fai doppio clic sul file SLN e modifica la radice della cartella di origine SLN.


2

L'unica soluzione che funziona per me su Visual Studio 2013 in un progetto WEB:

Diciamo che voglio rinominare "project1" in "project2". Diciamo che il percorso fisico del mio file .sln è: c: \ my \ path \ project1 \ project1.sln

quindi il percorso del mio file .csproj e delle cartelle bin e obj dovrebbe essere: c: \ my \ path \ project1 \ project1 \

  1. Aprire la soluzione in VS facendo doppio clic sul file project1.sln.

  2. In Esplora soluzioni, fai clic con il pulsante destro del mouse sul progetto (NON sulla soluzione !!!), seleziona Rinomina e inserisci un nuovo nome.

  3. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto e selezionare Proprietà. Nella scheda Applicazione, modifica "Nome assieme" e "Spazio dei nomi predefinito".

  4. Nel file CS principale (o in qualsiasi altro file di codice come Global.asax per esempio), rinominare la dichiarazione dello spazio dei nomi per utilizzare il nuovo nome. Per questo fare clic con il tasto destro del mouse sullo spazio dei nomi e selezionare Refactor> Rinomina immettere un nuovo nome. Per esempio:

progetto namespace1

4.1 In Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto (NON sulla soluzione !!!), selezionare Rinomina e immettere un nuovo nome.

  1. Assicurarsi: AssemblyTitle e AssemblyProduct in Properties / AssemblyInfo.cs sono impostati sul nuovo nome ("project2").

1 [assembly: AssemblyTitle ("New Name Here")] 2 [assembly: AssemblyDescription ("")] 3 [assembly: AssemblyConfiguration ("")] 4 [assembly: AssemblyCompany ("")] 5 [assembly: AssemblyProduct (" Nuovo nome qui ")] 6 [assembly: AssemblyCopyright (" Copyright © 2013 ")] 7 [assembly: AssemblyTrademark (" ")] 8 [assembly: AssemblyCulture (" ")]

  1. Chiudi Visual Studio.

  2. Elimina fisicamente le directory bin e obj.

  3. Rinominare la cartella principale e la cartella di origine con il nuovo nome (project2):

Nell'esempio: c: \ my \ path \ project1 \ project1

sarà: c: \ my \ path \ project2 \ project2

  1. Rinominare il nome del file SLN facendo clic con il tasto destro del mouse sul file SLN in avanti da Rename.

  2. Quindi infine apri il file SLN (all'interno del blocco note o di qualsiasi editor) e copia e sostituisci (Ctrl + h) qualsiasi vecchio nome con il nuovo nome.

  3. Apri VS e fai clic su BUILD -> Clean Solution

  4. fai clic su Genera -> Crea soluzione e quindi F5 per eseguire ...

  5. Nota 1: Se si ottiene qualcosa del genere: Errore di compilazione CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi 'project2' (manca una direttiva using o un riferimento di assembly?)

File di origine: c: \ Users \ Nome utente \ AppData \ Local \ Temp \ File ASP.NET temporanei \ root \ 78dd917f \ d0836ce4 \ App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs

Quindi vai alla cartella "File temporanei ASP.NET" ed elimina tutto.

  1. Nota2: se si sta tentando di "salvare con nome" in un nuovo progetto denominato e di conservare anche quello precedente, prendere in considerazione la duplicazione del db modificando le stringhe connection in web.config e anche riavviando le migrazioni se ne si dispone progetto.

2

Sono nuovo di VS. Ho avuto lo stesso problema: avevo bisogno di rinominare un progetto avviato dopo un paio di settimane di lavoro. Questo è quello che ho fatto e ha funzionato.

  1. Per ogni evenienza, fai un backup della tua cartella Progetto, anche se non la toccherai, ma per ogni evenienza!
  2. Crea un nuovo progetto e salvalo usando il nome che desideri per il tuo "nuovo" progetto, ovvero il nome in cui vuoi cambiare il tuo "vecchio" progetto.
  3. Costruiscilo. Dopodiché avrai un Progetto con il nome che desideri, ma che non fa altro che aprire una finestra (un'app di Windows Form nel mio caso).
  4. Con il nuovo progetto aperto, fai clic su Progetto-> Aggiungi Ítem esistente e usando Esplora risorse di Windows individua la cartella "vecchia" Progetto e seleziona tutti i file in ... Visual Studio xxx \ Progetti \ oldApp \ oldApp
  5. Seleziona tutti i file presenti (.vb, .resx) e aggiungili al tuo 'nuovo' Progetto (quello che dovrebbe essere già aperto).
  6. Quasi l'ultimo passo sarebbe quello di aprire il file di progetto utilizzando
    Esplora soluzioni e nella prima scheda modificare il modulo di avvio predefinito nel modulo che dovrebbe essere.
  7. Ricostruisci tutto.

Forse più passaggi ma meno o nessuna digitazione, solo alcuni clic del mouse. Spero che sia d'aiuto :)




Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.