2009-04-17 15 views
9

Sto aggiornando un progetto da Visual Studio 2003 a 2008 e desidero generare automaticamente i file XXX.Designer.cs e aggiornare quello originale XXX.cs corrispondente.Come convertire automaticamente le classi VS2003 in file Designer.cs parziali?

Qualsiasi modo automatico per farlo?

UPDATE: Mi riferisco a WinForms. Certo, so che il vecchio stile funziona, ma sto cercando un modo per andare al nuovo stile senza farlo a mano.

+0

Non vedo dove hai detto se si tratta di un progetto ASP.NET o di un progetto Windows Form. Si prega di indicare quale. –

+2

Altre risposte sono su http://stackoverflow.com/questions/669540/split-old-net-code-into-designer-partial-class – reinierpost

risposta

0

Non sono sicuro di aver capito, ma farò una congettura.

Si trattava di un progetto ASP.NET in VS2003? Aveva file .Designer.cs in esso? È il caso che hai fatto un aggiornamento ma ora non hai file .Designer.cs?

In tal caso, è possibile che sia stato inavvertitamente modificato il progetto di applicazione Web in un "progetto" sito Web. Questo tipo di "progetto" è stato introdotto in VS2005, quindi non lo avresti ancora visto. Questi non sono progetti reali (nessun file .csproj) e hanno molte altre differenze.

Altrimenti, se il progetto non aveva usato i file .Designer.cs, allora perché li vuoi ora?

In generale, il modo per creare file di progettazione è aprire il file in un designer, attendere alcuni minuti affinché il progettista finisca ciò che sta facendo (aggiornamento dello schermo, ecc.); e quindi salvare il file. Potrebbe essere necessario "toccare" l'originale per consentire al progettista di rivalutare le cose.

+2

VS2003 non ha file .designer.cs perché .net 1.1 non ha supporto classi parziali. Quindi mette semplicemente le dichiarazioni di controllo nascoste all'interno di una regione nel codebehind. FerranB sta chiedendo un modo automatico per spostare queste dichiarazioni in un file di progettazione. –

+0

È passato tanto tempo da quando ho usato VS2003 che avevo dimenticato! In tal caso, aprendo la finestra di progettazione, il salvataggio verrà eseguito manualmente. Potrebbe esserci un modo per automatizzarlo, tramite macro o estensibilità VS più forte. Probabilmente lo faranno i macro. –

+0

no, né VS2005 né VS2008 spostano automaticamente le cose in file .designer semplicemente aprendo e salvando. –

1

Le classi originali continueranno a funzionare, anche con il designer di Visual Studio. Il codice che il VS inserisce nelle classi Designer ha semplicemente lo scopo di rimuovere il "rumore" del designer in un file separato in modo da potersi concentrare sul codice non visivo della classe.

Dopo aver migrato il progetto in VS2008 utilizzando la procedura guidata, è possibile aprire i moduli in VS e continuare a modificarli come si faceva prima. Qualsiasi nuova forma creata creerà i file di backer di Designer.

1

Abbiamo avuto questo problema.

Fondamentalmente il file del designer non deve contenere altro che un insieme di dichiarazioni oggetto (cioè gli oggetti sul modulo) e la chiamata InitializeComponent(). Se hai fatto qualche lavoro di fantasia sul tuo costruttore, potrebbe esserci anche.

Basta creare un file denominato MyForm.Designer.cs e aggiungerlo al progetto. VS2008 lo posizionerà automaticamente sotto MyForm.cs. Da lì, se crei l'intestazione della classe parziale e lo spazio dei nomi, quindi copia tutte le dichiarazioni e la chiamata Initializecomponent nel file di progettazione, funzionerà.

Ma perché se fosse necessario, le persone modificherebbero il componente iniziale e modificheranno anche il costruttore predefinito, VS2005 e 2008 non potrebbero aggiornare automaticamente questi file poiché potrebbero verificarsi tutti i tipi di cose strane. Credo che dal punto di vista del progetto, quale vantaggio pensi che il tuo codice operativo derivi dalla separazione?

3

C'è una macro là fuori che fa questo. L'ho usato e funziona benissimo. Inizia guardando Nathan Jones Blog. Se non si ha molta fortuna, scaricare un file zip della macro sorgente (che ho pubblicato) da VSCONVERT - PasteBin

+0

Link scaduto su fileFactory. – Matthieu

+0

Ok, cambiata la sorgente del codice in pastebin. Non ho usato questa macro dal 2006, periodo di tempo 2008. – ja72

Problemi correlati