Come si forza Visual Studio a rigenerare i file .designer per i file aspx / ascx?

A volte quando sto modificando la pagina o controllo i file .designer smettere di essere aggiornati con i nuovi controlli che sto mettendo sulla pagina. Non sono sicuro di cosa stia succedendo, ma mi chiedo se c’è un modo per forzare Visual Studio a rigenerare il file .designer. Sto usando Visual Studio 2008

EDIT: Scusa avrei dovuto notare che ho già provato:

  • Chiusura e riapertura di tutti i file e Visual Studio
  • Apportare una modifica a un controllo runat = “server” sulla pagina
  • Eliminazione e ri-aggiunta della direttiva di pagina

Se apri il file .aspx e passi dalla vista struttura alla vista html e viceversa, verrà richiesto a VS di controllare i controlli e di aggiungere quelli mancanti al file del designer.

In VS2013-15 è disponibile il comando Converti in applicazione Web nel menu Progetto . Prima di VS2013 questa opzione era disponibile nel menu di scelta rapida del tasto destro del mouse per i file come (c / p) x. Quando ciò è fatto, dovresti vedere che ora hai un file * .Designer.cs disponibile ei controlli all’interno del codice HTML di progettazione saranno disponibili per il tuo controllo.

PS: Questo non dovrebbe essere fatto in modalità debug, poiché non tutto viene “ricompilato” durante il debug.

Alcune persone hanno segnalato il successo eliminando il file .designer.cs e ricreando un file vuoto con lo stesso nome.

Bene, ho trovato una soluzione che funziona, anche se non mi piace molto. Ho dovuto eliminare il file .designer.cs per ricreare un file vuoto con lo stesso nome. Quando sono tornato indietro e ho salvato di nuovo il file aspx, il file del designer è stato rigenerato.

Dodgy!

Io uso il seguente metodo che funziona ogni volta:

  • Seleziona tutto il code-in-front (markup html, ecc.) Nell’editor del file aspx / ascx.
  • Tagliare.
  • Salvare.
  • Incolla.
  • Salvare.

Ricompilazione.

Di recente ho visto che stavo avendo lo stesso problema. Visual Studio 2010 si rifiutava di aggiornare il file del designer.

Come risulta, VS non modifica il file di progettazione per una pagina che utilizza CodeFile (esecuzione fuori pagine) anziché CodeBehind (DLL). Questo è vero non importa quante volte si chiude VS, si ricarica il progetto, si ricrea il controllo o si modifica un file. Niente avrebbe spinto VS a rigenerare il designer. È come se non crea il file di progettazione per le pagine CodeFile ma richiede che sia lì.

L’ho cambiato in CodeBehind e ho salvato la pagina. Il file del designer è stato aggiornato immediatamente. Poi ho appena cambiato e tutto era ancora d’oro. Questo comportamento sembra essere nuovo con VS 2010 / .NET 4.0 poiché VS 2008 non ne ha risentito.

È questa parte:

 <%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %> 

Cambia CodeFile in CodeBehind, salva, quindi ripristina.

C’è un’altra possibilità: potresti avere un errore nel tuo file .aspx che non consente a Visual Studio di rigenerare il designer.

Se passi a Design View, mostrerà che il controllo non può essere reso. Correggere il controllo (nel mio caso si trattava di un preventivo extra nelle proprietà) e la ricompilazione dovrebbe rigenerare il progettista.

La maggior parte delle soluzioni qui non funziona se si esegue Visual Studio 2013 e possibilmente 2012. Microsoft probabilmente ha introdotto alcune ottimizzazioni per rendere l’IDE più veloce, di conseguenza hanno ridotto il numero di casi che triggersno il generatore di codice. I seguenti scenari che prima non funzionavano più:

  1. Elimina il file aspx o ascx: non è più necessario verificare questo caso
  2. Taglia tutto il contenuto e ripulisci nel file aspx o ascx: non funziona più, non cambia i riferimenti
  3. Converti in applicazione Web – Opzione non più disponibile
  4. Modifica arbitraria del contenuto nel file aspx / ascx – Non funziona più (vedi 2).

La soluzione è sorprendentemente semplice, ma è leggermente ingombrante. Per triggersre il generatore di codice, modificare qualcosa che richiederebbe la creazione di designer.aspx.cs. La modifica del contenuto che non influisce sul codice, come uno stile CSS o l’aggiunta di testo, non innesca il generatore di codice. È necessario modificare un controllo di riferimento. Ecco come farlo:

Nell’ascx o nell’aspx modificare l’ID del controllo

  

a

  

Vai su ascx.cs o aspx.cs e assicurati di rinominare tutti i riferimenti a “MyLink” anche a “theLINK”. Salva e costruisci e dovresti essere bravo.

l’unico modo che conosco è quello di eliminare il file del designer e convertirlo in app web. Tuttavia, quando lo fai, di solito si apre con l’errore, sul motivo per cui non si è auto-rigenerato in primo luogo, di solito è un ref di controllo che non è dichiarato nella testa della pagina.

Convert to Web Application non ha funzionato per me.

Eliminare designer.cs e incollare un designer.cs vuoto non ha funzionato neanche.

Ma sì, questo ha funzionato:

  1. Seleziona tutto (Default.aspx)
  2. Tagliare
  3. Salva Default.aspx
  4. Incolla
  5. Salva Default.aspx

Fatto. Nuovi designer.cs generati. 🙂

Ho trovato spesso che la copia / incolla ha causato questo comportamento per me. La maggior parte dei casi può essere risolta modificando l’ID di un controllo server (basta aggiungere un carattere, quindi cancellarlo).

Ricorda anche che il controllo all’interno di cose come i ripetitori non sono visibili nel file del designer.

E sì, ci sono casi in cui è necessario fare la magia di eliminazione del file sopra elencata – ma la soluzione di cambio del nome funzionerà la maggior parte del tempo.

Ho trovato un modo per risolvere questo problema senza modificare alcun codice o eseguire comandi come “Convert to Web Application” – ed è anche semplice!

Quello che ho trovato è stato che riavviare Visual Studio risolve spesso il problema, ma a volte no. In questi casi, se chiudi Visual Studio e poi elimini tutto il contenuto nella directory “obj” per il progetto web prima di aprirlo di nuovo, ha sempre funzionato per me.

(quando viene riavviato, basta aggiungere uno spazio e rimuoverlo di nuovo, quindi premere Salva per fare in modo che il file del designer venga rigenerato correttamente)

(Quanto segue deriva dall’esperienza con VS2005.)

Se si modifica una pagina ASPX durante il debug, il codebehind non viene aggiornato con le nuove classi. Quindi, è necessario interrompere il debug, modificare banalmente la pagina ASPX (come aggiungere un pulsante o qualcosa del genere), quindi fare clic su Vista Progettazione, quindi eliminare il pulsante. Quindi, i file del tuo designer dovrebbero essere aggiornati.

Se stai riscontrando un problema diverso con VS2008, non posso aiutarti.

La mia esperienza è che se vuoi fare come in questo articolo, come detto sopra.

Il tuo file di markup (aspx / ascx) deve includere l’attributo CodeBehind = “MyPage.aspx.cs” altrimenti non funzionerà. Ne ho parlato qui .

Quando sei in visualizzazione struttura, fai clic con il pulsante destro del mouse sullo schermo e premi Aggiorna.

Un’altra cosa che ha funzionato è stata –

  1. Elimina manualmente e quindi crea un file di progettazione nel filesystem.
  2. Modifica il file di progetto .
  3. Aggiungi il codice per includere il designer
    Es: FileName.ascx
  4. Ricarica il progetto
  5. Apri come (c / p) x file in modalità di progettazione / visualizzazione e salvalo.
  6. Controlla il file del designer. Il codice sarà lì.

Se si utilizza VS2013 o versioni successive, assicurarsi che il codice di riferimento con l’attributo “CodeBehind” non “CodeFile”, quindi eseguire i passaggi seguenti

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="yourControl.ascx.cs" Inherits="yourControl.yourControl" %> 
  • crea una pagina designer vuota (o cancellala se è già esistente “yourControl.ascx.designer.cs”)
  • nell’ascx (o aspx) copia tutto il codice, lo elimina, quindi salva. ri-passato di nuovo, quindi salvare.
  • il file di progettazione deve essere compilato ora.
  • Seleziona tutto nel file del designer ed elimina tutto nel file, lasciandolo vuoto e quindi salvando
  • Seleziona tutto nel file ASPX / ASCX e taglia tutto e quindi ri-incollalo di nuovo
  • Il file del designer avrebbe dovuto rigenerare il codice

Qui c’è wat ho sperimentato, selezionare la cartella del sito Web tasto destro del mouse in Esplora soluzioni, selezionare Converti in applicazione Web per tutti i file aspx verrà generato un file di progettazione.

Sameer

Solo per aggiungere alla lunga lista di risposte qui – ho appena incontrato questo problema in VS2010 (SP1) con un file .aspx. Ho provato ad aggiungere e rimuovere i controlli ASP standard (che ha funzionato in passato) ma alla fine, ho dovuto rimuovere una delle righe runat = server da un controllo esistente (e salvare) per forzare la rigenerazione del file del designer.

Ho incontrato lo stesso problema da anni, lavorando in Visual Studio 2008. E ho provato ogni “soluzione” su StackOverflow e dozzine di blog, proprio come sono sicuro che tutti voi avete. E a volte lavorano, ea volte no, proprio come sono sicuro che tutti voi avete incontrato. E a quanto pare è ancora un problema in VS2010 e VS2012.

Quindi, alla fine, un paio di mesi fa, ho deciso che bastasse e in poche settimane ho creato uno strumento chiamato “Redesigner” che genera i file .designer. È open-source sotto la licenza BSD , con il codice sorgente disponibile su SourceForge – gratis da usare, libero di rubare, libero di fare qualsiasi cosa tu voglia. E fa ciò che Visual Studio non riesce a fare così spesso, che genera file .designer in modo rapido e affidabile.

È uno strumento da riga di comando autonomo che analizza i file .aspx e .ascx, esegue tutta la magia di riflessione necessaria e sputa i file .designer corretti. Fa tutto il parsing e la riflessione stessa per evitare di fare affidamento sul codice esistente, che tutti sappiamo troppo bene è rotto. È scritto in C # contro .NET 3.5, ma fa pena evitare di usare anche System.Web per qualcosa di diverso dalle dichiarazioni di tipo, e non usa affatto o fa affidamento su Visual Studio .

Redesigner può generare nuovi file .designer; e offre un’opzione –verbose in modo che quando le cose vanno male, si ottengano messaggi di errore molto migliori di “Eccezione di tipo System.Exception è stata lanciata.” E c’è un’opzione –verify che può essere usata per dirti quando i tuoi file .designer esistenti sono rotti – mancano controlli, dichiarazioni di proprietà errate, illeggibili da Visual Studio, o comunque semplicemente borked.

Lo abbiamo usato sul mio posto di lavoro per tirarci fuori dalle jam per la parte migliore dell’ultimo mese, e anche se Redesigner è ancora una beta, sta diventando abbastanza lungo da farne la pena condividere la sua esistenza con il pubblico. Presto intendo creare un plug-in di Visual Studio per fare in modo che tu possa semplicemente fare clic con il pulsante destro del mouse per verificare o rigenerare i file del designer nel modo che avresti sempre desiderato. Ma nel frattempo, l’utilizzo della riga di comando è abbastanza semplice e ti farà risparmiare un sacco di mal di testa.

Ad ogni modo, vai a scaricare una copia di Redesigner adesso e smetti di tirarti su i capelli . Non ne avrai sempre bisogno, ma quando lo farai, sarai felice di averlo!

https://sourceforge.net/projects/redesigner/

TL; DR;
Modificare l’attributo Inherits della direttiva @Page della pagina ASPX e @Page Salva. Il tuo file designer dovrebbe essere rigenerato.

Assicurati che Inherits = . < CodeBehind > e CodeBehind = .aspx.cs


Stavo cercando di farlo su un progetto Sharepoint 2010, utilizzando VS 2010 e TFS , e nessuna delle soluzioni sopra ha funzionato per me. In primo luogo, l’opzione “Converti in applicazione Web” non è presente nel menu del tasto destro del file .ASPX quando si utilizza TFS in VS 2010.

Questa risposta ha aiutato alla fine . La mia class sembrava così:

 namespace MyProjects.Finance.Pages { public partial class FinanceSubmission : WebPartPage { protected void Page_Load(object sender, EventArgs e) { } // more code } } 

E la mia direttiva @Page era (interruzioni di riga qui per chiarezza):

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FinanceSubmission.aspx.cs" Inherits="MyProjects.Finance.Pages.FinanceSubmission" MasterPageFile="~masterurl/default.master" %> 

Ho prima cambiato l’ Inherits in MyProjects.Finance.Pages , ho Inherits su Salva, quindi ho cambiato di nuovo in MyProjects.Finance.Pages.FinanceSubmission e ho premuto nuovamente Salva. E wallah! La pagina del designer è stata rigenerata!

Spero che questo aiuti qualcuno che usa TFS!

All’interno di Visual Studio:

1) Rimuovi il tuo file aspx.designer.cs

2) Fare clic con il pulsante destro del mouse sul file aspx e selezionare “Converti in applicazione Web”. Questo dovrebbe aggiungere aspx.designer.cs indietro e aggiornato.

Se ricevi un errore che dice:

“Generazione del file di progettazione non riuscita: il metodo o l’operazione non è implementata.”

Prova a chiudere Visual Studio, quindi riapri il tuo progetto e ripeti il ​​passo numero due

Come generare aspx.designer.cs in Visual Studio?

Eliminare il file designer.cs, quindi fare clic con il pulsante destro del mouse sul file .aspx e scegliere “Converti in applicazione Web”. Se c’è un problema con le dichiarazioni di controllo, come un tag non ben formato, riceverai un messaggio di errore e dovrai correggere il tag malformato prima che lo studio visivo possa ri-generare correttamente il tuo file designer.

Nel mio caso, a questo punto, ho scoperto che il problema era che avevo dichiarato un pulsante di controllo che non era all’interno di un tag form con un attributo runat = “server”.

Questo è un bug nell’IDE; L’ho visto da VS 2003. La soluzione è semplice.

Salva i tuoi file. Chiudere completamente l’IDE (assicurarsi che il processo si interrompa, task mgr.)

Riaprire la soluzione, sporcare il markup, salvare. Fisso.

Ho avuto due problemi … obsoleto AJAXControlkit – cancellato il vecchio dll, rimosso vecchi controlli da toolbox, scaricato nuova versione, caricato toolbox, e trascinato e rilasciato nuovi controlli sulla pagina (vedi http://www.experts-exchange.com /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html )

Aveva anche errori di ortografia nel mio controllo dell’etichetta (avevo usato “class” invece di “cssclass”).

Ta

Se sei come me e aggiungi vecchi file .ASPX a un progetto più recente. Probabilmente dimenticherai alcuni dei controlli usati nella pagina.

In tal caso, per prima cosa, se ci sono più file che stai installando; Risolvi prima uno alla volta.

Quando compili, correggi gli errori generati. Probabilmente saranno gli stessi errori in tutti i file.

Successivamente, se si dispone di file Designer, eliminare tutti i file designer inseriti. Quindi, assicurati che non ci siano altri errori durante la compilazione, oltre ai file di progettazione.

Infine, fare clic con il pulsante destro del mouse sul progetto Web e fare clic su Converti in applicazione Web. Questo inserirà i file del designer che ti servono.

Questi sono i passi migliori in assoluto per risolvere i problemi.

Una cosa che nessuno ha menzionato è di visitare la pagina . Ho dovuto interrompere la rigenerazione del file del mio designer perché includevo un controllo utente che non esisteva (per vari motivi) e nessuna delle cose suggerite qui funzionava. Per qualche ragione, non ho avuto errori in Visual Studio – oltre a quello che lamentava il fatto che i miei controlli sul lato client non esistevano perché non venivano rigenerati, ovviamente.

Ci sono voluti effettivamente visitando la pagina per ottenere ASP.Net per dirmi l’errore.

Ciò può anche accadere se si aggiorna lo spazio dei nomi e non si aggiorna lo spazio dei nomi nel file di progettazione. Correzione: aggiorna lo spazio dei nomi anche nel file del designer.

in solution explorer è sufficiente fare clic con il pulsante destro del mouse e selezionare Converti in applicazione Web. Genererà nuovamente tutti i file del designer.

  1. sostituisci il tuo tag personalizzato con un nome di tag non valido. Salvarla
  2. ripristinare il nome del tag non valido sul nome del tag personalizzato. Salvarla. Quindi ti verrà chiesto di eseguire il checkout dei file * .designer.cs (o modificare silenziosamente i designer.cs) e produrre la variabile corretta del controllo dei tag personalizzati.

Ho avuto questo problema e per me, ho avuto uno spazio in uno dei miei valori ID per uno dei miei controlli. Ho tolto lo spazio e il file del designer si è rigenerato da solo.