Visual Studio sposta il progetto in un'altra cartella


182

Come posso spostare un progetto in un'altra cartella in Visual Studio? Sono abituato a questa struttura nei miei progetti.

-- app
---- Project.Something
---- Project.SomethingElse

Voglio rinominare l'intero spazio dei nomi SomethingElse in SomethingNew, qual è il modo migliore per farlo (senza andare manualmente nel file .sln)?


Stai usando TFS come provider di controllo del codice sorgente?
Bermo,

Vuoi rinominare solo la cartella o l'intero progetto?
Charles Gargent,

Progetto, cartella e spazi dei nomi.
Egor Pavlikhin,

Risposte:


175

Rimuovere il progetto dalla soluzione facendo clic con il pulsante destro del mouse nella finestra Esplora soluzioni e selezionando Rimuovi. Sposta l'intera cartella del progetto, comprese le sottodirectory ovunque tu voglia. Aggiungi il progetto alla tua soluzione.

I nomi degli spazi dei nomi sono qualcosa di completamente diverso, basta modificare il codice sorgente.


6
Questo è quello che ho fatto, ma ho pensato che ci fosse un modo per fare tutto ciò senza rimuovere l'intero progetto, il che mi fa quindi aggiungere nuovamente tutte le dipendenze.
Egor Pavlikhin,

31
Scaricare tutti i progetti dipendenti dalla soluzione, prima di rimuovere il progetto che si desidera spostare. In questo modo, non rilevano la rimozione e i riferimenti al progetto rimangono intatti. Dopo aver spostato il progetto e averlo nuovamente aggiunto alla soluzione, è possibile caricare nuovamente i progetti dipendenti.
base2

13
Non dimenticare che l'eliminazione di un file in TFS e la successiva reimportazione in TFS in un altro percorso o progetto di directory provoca l'eliminazione della cronologia delle modifiche al file.
Paul,

voglio farlo senza perdere la cronologia delle modifiche, quindi posso ancora fare dei confronti quando voglio.
user734028,

197

Ho provato il suggerimento di rimuovere e aggiungere nuovamente il progetto, ma poi risolvere le dipendenze può essere una seccatura.

Uso questo approccio:

  1. Sposta la cartella del progetto.
    • Se il progetto è nel controllo del codice sorgente, eseguire lo spostamento utilizzando i comandi di controllo del codice sorgente.
  2. Modifica il file della soluzione in un editor di testo. Dovrebbe esserci solo un percorso che è necessario modificare.

Decisamente più facile! Ma, dopo aver spostato e modificato la soluzione utilizzando la modifica del testo, il file della soluzione viene visualizzato di seguito come un normale file di testo. Come posso liberarmene?
Abriel

2
"Se il progetto è nel controllo del codice sorgente, esegui lo spostamento utilizzando i comandi di controllo del codice sorgente." .. Puoi spiegare come fare?
Anish V,

3
@AnishV Per esempio, se usi Git, digita git mv ...invece di mv .... Vedi la git-mvdocumentazione per maggiori informazioni.
cubuspl42,

3
Nel file .csproj è necessario aggiornare la proprietà SolutionDir, nonché correggere tutti i percorsi per i riferimenti di progetto e le posizioni dei pacchetti nuget. Nel file .sln tutto ciò che devi fare è aggiornare il percorso del progetto.
Pete,

Questo ha funzionato per me. L'unico "trucco" era che dovevo cambiare il file .sln in modo che non fosse di sola lettura per modificarlo e quindi contrassegnarlo di nuovo in sola lettura per motivi di sicurezza.
JustWannaFly

44
  1. Chiudi la tua soluzione in VS2012
  2. Sposta il tuo progetto nella nuova posizione
  3. Apri la tua soluzione
  4. Seleziona il progetto che non è stato caricato
  5. Nella finestra dello strumento Proprietà, è presente una voce modificabile "Percorso file" che consente di selezionare il nuovo percorso del progetto
  6. Imposta il nuovo percorso
  7. Fare clic con il tasto destro sul progetto e fare clic su Ricarica

4
Funziona molto bene e sembra essere il modo più rapido e semplice, nonostante le altre risposte votate molto più alte. C'è un articolo qui: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum,

@MikeRosenblum Il collegamento è interrotto, il nuovo collegamento è blogs.msmvps.com/deborahk/…
Roi Gavish,

1
Non funziona in VS2012. L'articolo collegato menziona anche solo VS2010.
bassim

Ha funzionato bene per me in VS2010 compresi tutti i miei riferimenti tranne 1 che ho dovuto aggiungere nuovamente.
Kristian,

@Vasanth In Visual Studio 2019 è necessario modificare manualmente il file .sln per individuare il progetto; e possibilmente (probabilmente) anche il file .csproj per fare riferimento alla posizione corretta di tutti i pacchetti nuget.
Caltor,

3

Ciò che ha funzionato per me è stato:

  1. Rimuovere il progetto dalla soluzione.
  2. Modifica il file di progetto con un editor di testo.
  3. Aggiorna tutti i percorsi relativi ai "pacchetti". Nel mio caso ho dovuto cambiare ..\packagesda ..\..\..\packagesquando ho spostato il progetto in una cartella più profonda.
  4. Carica nuovamente il progetto nella soluzione.

2

Ho avuto lo stesso problema. Ho risolto con spostare i riferimenti e in meno di 15 minuti, senza cambiare i riferimenti.

Per me la soluzione era semplice:

  1. Sposta i tuoi file dove serve.
  2. Elimina la cartella con il nome .vs. Deve essere una cartella non visibile.
  3. Apri il file della soluzione (.sln) usando un semplice editor come note o notepad ++.
  4. Cambia il riferimento dove si trova il tuo file, usando la seguente struttura: se metti il ​​tuo progetto nella stessa cartella rimuovi la cartella precedente o il riferimento ".. \"; se si inserisce una cartella sopra, aggiungere il riferimento ".. \" o il nome della cartella.
  5. Salva il file con le modifiche.
  6. Apri il file di progetto (.csproj) e fai lo stesso, rimuovi o aggiungi il riferimento.
  7. Salva le modifiche.
  8. Apri il file della soluzione.

Esempi:

Nel file di soluzione (.sln)

  • Originale: Progetto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E } "Progetto (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613-ADE566E46 }"

    Nuovo: Progetto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Progetto (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-ADE1313131313131313131313 }"

Nel file di progetto:

  • Originale:

    Nuovo:

    Riferimento originale: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Nuovo riferimento: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

Riepilogo: rinominare e spostare in VS2019 con git, mantenendo la cronologia di git, sfruttando un po 'R #, aggiornamento automatico di riferimento del progetto dipendente (importante per sln con molti progetti, abbiamo> 200)

Ho usato i seguenti passaggi per rinominare e spostare i progetti C # in Visual Studio 2019. Questo processo utilizza R # per regolare gli spazi dei nomi. La cronologia di git viene mantenuta facendo un "git mv" (evitando la caduta della cronologia di aggiunta / cancellazione).

Due fasi: 1) rinominare il progetto in atto e 2) spostare il progetto.

(Utilizza il suggerimento dei progetti di scarico di base2 .)

Rinominare

  1. VS | Esplora soluzioni | progetto tasto destro del mouse | Rinomina (ad es. Utils.Foo to Foo).
  2. VS | Esplora soluzioni | progetto tasto destro del mouse | Proprietà | modifica del nome dell'assieme, dello spazio dei nomi predefinito e dei campi Informazioni sull'assieme
  3. Esegui 1 e 2 per il progetto di test corrispondente (ad es. Utils.Foo.Test)
  4. VS | Esplora soluzioni | progetti con il tasto destro del mouse (produzione e test) | Rifattore | Regola gli spazi dei nomi
  5. Potrebbe essere necessario aggiornare i file XAML che utilizzano il progetto (manualmente o con un'adeguata ricerca globale e sostituzione)
  6. Ricostruisci tutto
  7. Commettere!! (per eseguire il commit delle modifiche prima delle mosse)

Nota: la cartella in Esplora risorse rimane il vecchio nome a questo punto (ad es. Utils.Foo). Questo è stato risolto nei passaggi di spostamento.

Mossa

Questo metodo: 1) mantiene la cronologia di git, 2) sfrutta R # per regolare gli spazi dei nomi in modo atomico e 3) aggiorna i progetti dipendenti in massa (evita noiose modifiche manuali dei file sln e csproj dipendenti).

  1. scarica tutti i progetti nella soluzione (in modo che la rimozione del progetto di destinazione non attivi cambiamenti nei progetti dipendenti)

    VS | selezionare tutte le cartelle della soluzione in Soluzione | tasto destro del mouse Scarica progetti

  2. sposta le cartelle usando git (quindi la cronologia viene mantenuta)

a) apri il Prompt dei comandi per gli sviluppatori per il 2019

b) stato git (per illustrare "niente da impegnare, lavorare l'albero pulito")

c) git mv il progetto, ad esempio git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"

d) git status per visualizzare / verificare le modifiche

  1. rimuovere il progetto

VS | Esplora soluzioni | seleziona progetto | tasto destro del mouse | Rimuovi (poiché tutti i progetti sono scaricati, questo NON rimuoverà correttamente i riferimenti ad esso nei progetti dipendenti)

  1. aggiungere nuovamente il progetto (nella nuova posizione nella struttura in Esplora soluzioni)

a) VS | Esplora soluzioni | seleziona la cartella principale di destinazione | tasto destro del mouse | Aggiungi | Progetto esistente

  1. ricaricare tutti i progetti

IMPORTANTE: confermare che i file * .csproj per i progetti dipendenti siano stati aggiornati.

(VS | Team Explorer | Modifiche | fai doppio clic su qualsiasi csproj dipendente elencato | inspect-verifica modifica del percorso di ProjectReference)

  1. Correggi manualmente i percorsi nel singolo file * .csproj spostato

Utilizzare Notepad ++ (o un altro editor di testo) per correggere i percorsi. Spesso questo può essere fatto con una semplice ricerca e sostituzione (ad es. Da ../../../../ a ../../).

Questo aggiornerà ...

a) Riferimenti GlobalAssmeblyInfo.cs

b) percorsi per i pacchetti

c) percorsi dei file del diagramma di convalida delle dipendenze

d) percorsi verso percorsi di regole (ad es. <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>)

  1. Chiudi e riapri la soluzione (per ottenere una buona forma dei riferimenti al progetto)

Salva tutto, Chiudi soluzione, preferisco eliminare le cartelle bin e obj per evitare la cronologia, Riapri la soluzione

  1. Convalidare

a) VS | Team Explorer | I cambiamenti

i) dovrebbe vedere le modifiche temporanee che rivelano i file che sono stati spostati ii) dovrebbe vedere i progetti dipendenti (* .csproj) che sono stati ben aggiornati rivedere le differenze csproj e notare che i percorsi sono stati magnificamente aggiornati !! (questa è la magia che evita faticosamente l'aggiornamento manuale dei file csproj usando un editor di testo)

b) in Esplora risorse, verificare che la posizione precedente sia vuota

c) Clean Solution, Rebuild Solution, Esegui unit test, Avvia app in sln.

  1. Commettere!!

1

È facile in VS2012; basta usare la funzione di modifica del mapping:

  1. Creare la cartella in cui si desidera spostare la soluzione.
  2. Effettua il check-in di tutti i file del tuo progetto (se desideri mantenere le modifiche) o esegui il rollback di tutti i file estratti.
  3. Chiudi la soluzione
  4. Apri Explorer controllo sorgente.
  5. Fare clic con il tasto destro del mouse sulla soluzione e selezionare "Avanzate -> Rimuovi mappatura ..."
  6. Modificare il valore "Cartella locale" con quello creato nel passaggio 1.
  7. Seleziona "Cambia".
  8. Apri la soluzione facendo doppio clic su di essa in Esplora controllo risorse.

2
Cioè, se stai usando TFS?
Martin Ba,

1

in Visual Studio Comunità 2019, ho fatto quello che dice Victor David Francisco Enrique, ma avevo solo bisogno di eliminare la cartella .vs invisbile


0

In VS 2015

  1. Scarica il tuo progetto in Esplora soluzioni
  2. Crea una nuova soluzione
  3. Copia i progetti nella cartella della nuova soluzione
  4. Fare clic con il tasto destro del mouse sulla soluzione, aggiungere un progetto esistente.
  5. Se si utilizza un framework come MVC, potrebbe essere necessario aggiungere il riferimento nel gestore dei riferimenti.

0

Ho capito questo provare questo ha funzionato per me.

Nell'edizione community di Visual Studio 2017 crea un progetto in questo percorso "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" Ciò creerà un problema di accesso al file negato

Ora puoi risolverlo in questo modo.

chiudi il processo di Visual Studio. Quindi, trova il tuo progetto e copia la cartella del progetto, ma prima crea una sottocartella Named Projects all'interno della cartella di Visual Studio 2017 nei documenti. Quindi, incolla la cartella del progetto all'interno della cartella del progetto di Visual Studio 2017, non la cartella principale di Visual Studio 2017 che dovrebbe andare nella sottocartella denominata Progetti. Quindi, riavvia Visual Studio 2017 Quindi, scegli Apri soluzione progetto Quindi, trova il tuo progetto incollato nella cartella Progetti di Visual Studio 2017 Quindi pulisci il Progetto e ricostruiscilo, Dovrebbe compilare e compilare bene. Spero che questo abbia aiutato chiunque altro. Non sono sicuro del perché Microsoft abbia pensato di costruire i tuoi progetti in un percorso in cui necessitasse delle autorizzazioni di scrittura oltre a me.


0

Volevo che le modifiche in Git fossero mostrate come mosse / rinominazioni invece di eliminare e aggiungere. Quindi ho fatto una combinazione di quanto sopra e questo post .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

E regola i percorsi dei progetti e degli assiemi dai pug di Nuget nel file sln tramite un editor di testo.


0
  1. Copia la cartella del progetto nella nuova destinazione
  2. Rimuovi il progetto dalla soluzione (fai clic con il pulsante destro del mouse su "Esplora soluzioni" e scegli "Rimuovi")
  3. Quindi aggiungi il progetto esistente alla soluzione (fai clic con il pulsante destro del mouse su "Esplora soluzioni" e scegli "Aggiungi", quindi "Progetto esistente")
  4. Cambia il percorso nella cartella "pacchetti" nel file "YourProjectName.csproj" (Apri nel blocco note e cambia i percorsi per i pacchetti collegati)

0

Questo ha funzionato per me vb2019. Ho copiato la mia cartella del progetto di origine. Ho quindi incollato il progetto e rinominato la cartella in qualunque modo. Per rompere i legami con la cartella del progetto di origine, ho rinominato temporaneamente la cartella di origine. Ho aperto il mio progetto di destinazione. I percorsi dei moduli e dei moduli sono stati riscoperti nella cartella locale. Ho esaminato tutti i miei moduli e moduli per assicurarmi che funzionassero. Ho gestito il progetto. Ho chiuso il progetto. Ho rinominato la cartella del progetto di origine in non è il nome originale. Posso aprire entrambi i progetti contemporaneamente senza errori.


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.