2009-05-14 3 views
22

Qual è il modo migliore per copiare o tagliare/incollare un modulo da un progetto a un altro progetto all'interno di una soluzione in Visual Studio?Copia di winform tra progetti in Visual Studio

Ogni volta che provo, usando l'esploratore soluzione (drag and drop o verso destra, facendo clic taglio e passato), si copia solo il codice sottostante C# e non i 'pezzi' che consentono di visualizzare il modulo tramite il modulo necessario progettista.

+0

Quali "frammenti" mancano? Copia i file Designer.cs e .resx o solo il file YourForm.cs? –

+0

Tipo di duplicato - sarebbe meglio se inserissi la mia soluzione nella domanda "Gold" e poi cancellassi questa domanda da SO ??? – Vidar

risposta

9

Capito da capo - sapeva che sarebbe stato qualcosa di sciocco.

A quanto pare il progetto di destinazione dovrebbe avere i riferimenti:

  • System.Windows.Forms
  • System.Drawing

inclusi all'interno del progetto FIRST prima di fare qualsiasi copia o incollare o altro otterrai il problema che ho descritto.

Grazie per tutti coloro che hanno cercato di aiutare BTW.

0

Stai selezionando il file o utilizzando il designer per "Copia" tutti i controlli? Selezionare il file YourForm.cs in Esplora soluzioni e copiarlo tramite copia-incolla o trascina e rilascia sull'altro progetto dovrebbe portare a termine ciò che è necessario.

+0

Soppresso in linea con la tua domanda. – Vidar

3

Assicurarsi di copiare non solo Form.cs, ma anche i file Form.designer.cs e Form.resx.

Ma ho bisogno di chiedere perché si vorrebbe mantenere una copia dello stesso modulo in più progetti all'interno della stessa soluzione. Sembra come se volessi generalizzare il codice, metterlo in una libreria di classi e riutilizzarlo nei luoghi in cui è applicabile.

+0

No Ho appena progettato un modulo nel progetto sbagliato e ora voglio spostarlo nel progetto corretto. – Vidar

+0

Ho anche aggiunto i file designer.cs e resx - non cambia ancora nulla. – Vidar

+0

OK; Volevo solo alzare la bandiera dato che hai usato la parola "copia" invece di "spostare": o) –

3

Utilizzare ReSharper (ottenere la demo), fare clic con il tasto destro del mouse sulla classe in Vista codice, Refactor-> Sposta e spostarlo in un altro progetto.

Il vantaggio ulteriore è che se si modifica lo spazio dei nomi spostandolo tra i progetti, verranno aggiornati automaticamente tutti i riferimenti.

+0

In realtà ha un buon supporto per copiare i moduli - attualmente usando ReSharper - e piace molto. – Vidar

33
  1. Copiare i tre file, .cs, .designer, resx alla cartella di soluzione di destinazione.
  2. Nel progetto di destinazione, selezionare Add existing item e aggiungere prima il file di progettazione.
  3. Modificare l'attributo Namespace. Anche il file .cs dovrebbe entrare.
  4. Modificare lo spazio dei nomi nel file .cs.
  5. Aggiungere il file resx utilizzando Add existing item.
+0

Grazie, ha funzionato bene. Per prima cosa aggiungo il file Form1.cs – Jack

+7

In VS2013, è ancora più semplice, basta copiare i file .cs, .designer e .resx nella cartella della soluzione di destinazione. Usa 'Aggiungi elemento esistente' come sopra, MA AGGIUNGI IL file .cs. Questo è tutto! Tutti e 3 i file portati nello spazio dei nomi AND vengono automaticamente cambiati! –

+1

Ho fatto Joe's vs vs 2015 e ha funzionato! –

7

Ora è più semplice ora nel 2012. Basta andare su File> Aggiungi> Progetto esistente> trascinare e rilasciare il modulo nel progetto a cui si desidera aggiungerlo.

0

** Questo funziona per me:

1) Copiare i file di origine (Cs o VB, .designer,.resx) nella cartella di destinazione

2) Mostra file nascosti nella soluzione di destinazione

3) Selezionare questi file e li include nel progetto.

Ciò aggiungerà winform o qualsiasi altro file parzialmente diviso in modo pulito.

0

L'utilizzo di VS2013 ha appena provato questo aspetto e risulta affidabile e coerente. Questo è simile ad alcuni commenti sopra, ma aggiunge un altro metodo che è più veloce.

(1 °) In Windows clou File Explorer e copiare tutti i 3 file Form (vb o Cs, .designer, resx)

(2 °) Ciò può essere ottenuto 2 modi:

(2a-1) In file Explorer incollare i 3 file nella cartella del progetto con le altre forme

(2a-2) In VS Esplora soluzioni, girare 'Mostra tutti i file' su, fate clic destro sul incollato modulo & "Includi nel progetto". Dovrebbe funzionare senza altre modifiche.

Oppure, penso meglio:

(2b-1) In VS, scattano in Esplora soluzioni e incollare w/Control-C. (Per qualche motivo, il menu contestuale del tasto destro del mouse in Esplora soluzioni potrebbe non mostrare un'opzione di incollatura, ma funziona dalla tastiera.) Questo metodo aggiunge il modulo direttamente al progetto senza dover includere "Includi nel progetto" come sopra. Con questo metodo puoi aggiungere tutti i moduli alla volta che vuoi (tutti e 3 i file per ciascuno) in un unico passaggio.

+0

non ha funzionato per me, penso che sia ancora necessario rinominare la classe – MrCalvin

9

Per copiare una forma da un progetto VS2013 ad un altro, il più facile, (minor numero di clic del mouse) è:

  1. Nel progetto di destinazione, fare clic destro del mouse sulla cartella padre (probabilmente il vostro progetto) e nel menu seleziona "Aggiungi, elemento esistente".

  2. Quindi selezionare il file cs del modulo nel progetto di origine. Ad esempio selezionare Form.cs (non Form.Designer.cs o Form.resx).

  3. Aprire Form.cs nel progetto di destinazione e modificare lo spazio dei nomi (tutte le istanze).

  4. Chiudere e riaprire Form.cs e vedrete tutti i controlli, ecc

3

ho provato il seguente processo in Visual Studio 2012 e ha funzionato.

  1. Aggiungere il progetto da cui si desidera importare il modulo alla soluzione, facendo clic con il tasto destro su soluzione> Aggiungi> Menu progetto esistente. Seleziona il progetto e clicca OK.
  2. Ora fare clic con il tasto destro sul modulo che si desidera copiare, selezionare copia.
  3. Fare clic con il tasto destro del mouse sul progetto in cui si desidera copiare e selezionare Incolla.
  4. Il modulo verrà copiato nel progetto, ora rinominare gli spazi dei nomi.
  5. Rimuovere il progetto aggiunto nel passaggio 1 dalla soluzione.
1

Per Visual Studio V.12 questo è l'unico metodo che ha funzionato per me (è un mix di voci di cui sopra):

  • Copy Files attraverso Explorer i tre file che la forma è composta .
  • Nella barra superiore di Solution Explorer in Visual Studio, attivare "Mostra tutti i file".
  • Il file file.cs appare in grigio. Fare clic con il tasto destro e selezionare: "Includi nel progetto". Il solution explorer collega automaticamente i tre file (.designer e .resx sotto il file .cs). Il file.cs cambia icona da C++ per formare l'icona.
0

Sto usando Visual Studio 2010, qui di seguito sono i passi che eseguite:

  1. Copiare tutti i 3 file (Cs, RESX, .Designer.cs) nella cartella del progetto di destinazione.
  2. In Visual Studio, fare clic destro Progetto -> Aggiungi ->elemento esistente ...
  3. Selezionare tutti i 3 file (Cs, RESX, .Designer.cs), fare clic su Aggiungi .
  4. Modificare lo spazio dei nomi su 2 file (.cs, .Designer.cs), se è diverso spazio dei nomi sul progetto di destinazione.
  5. Esegui il progetto.
  6. Fatto!