Risoluzione dei problemi relativi alla conversione in Visual Web Developer
Aggiornamento: novembre 2007
Quando si utilizza Microsoft Visual Web Developer per aprire un progetto di applicazione Web creato nelle versioni precedenti di Microsoft Visual Studio .NET, mediante Visual Web Developer l'applicazione Web viene convertita automaticamente nel formato utilizzato in ASP.NET versione 2.0.
Nota: |
---|
Per informazioni dettagliate sul processo di conversione, vedere Conversione di progetti Web da Visual Studio .NET. |
In alcune circostanze le applicazioni Web avranno un comportamento differente dopo la conversione. In questo argomento vengono descritte le situazioni più comuni e vengono suggerite possibili soluzioni. Per ulteriori informazioni sulla risoluzione dei problemi relativi alla migrazione, è anche possibile consultare le informazioni sulla migrazione nel sito Web ASP.NET Development Center for Migration.
In questo argomento vengono descritti i seguenti problemi relativi alla conversione:
Rendering mediante controlli di markup diverso dopo la conversione
Generazione di errori nella convalida del markup
Eventi di pagina generati due volte dopo la conversione
Classi ambigue segnalate durante la compilazione
Errori correlati alle modifiche apportate al modello di pagina code-behind
Errori di analisi
Inclusione dei file esclusi
Soluzioni parzialmente convertite per tipi di progetto misti
Apertura di un sito basato su Web come sito per file system
Eliminazione di ID sul lato client dal file code-behind
Errore relativo ai riferimenti circolari
Rendering mediante controlli di markup diverso dopo la conversione
In ASP.NET 2.0, a meno che il browser non sia identificato come non supportante le funzionalità XHTML, la classe Page e i controlli server Web ASP.NET eseguono per impostazione predefinita il rendering del markup compatibile con lo standard XHTML 1.0 Transitional. Nella Conversione guidata l'attributo mode dell'elemento xhtmlConformance viene impostato automaticamente su Legacy. Dopo la conversione, il rendering degli elementi può essere eseguito in modo leggermente differente rispetto alle versioni precedenti di ASP.NET. Nella maggior parte dei casi, le differenze nel rendering non hanno alcun effetto sulla funzionalità dell'applicazione. Tuttavia, se si ha uno script client che si basa su tag o attributi specifici, l'applicazione potrebbe non operare come in precedenza.
Per ulteriori informazioni, vedere ASP.NET e XHTML.
Generazione di errori nella convalida del markup
Dopo la migrazione, lo schema predefinito di convalida del markup viene impostato su Internet Explorer 6.0. In tal modo, l'editor confronta il markup della pagina con uno schema che definisce gli elementi HTML validi per Microsoft Internet Explorer 6.0. Questa operazione viene effettuata per facilitare il passaggio a Visual Web Developer. È consigliabile modificare il markup in modo che le pagine dell'applicazione eseguano la convalida mediante lo schema di convalida XHTML 1.0 Transitional.
Per informazioni dettagliate su come modificare lo schema di convalida, vedere Procedura: selezionare gli schemi di convalida per la modifica HTML in Visual Web Developer.
Eventi di pagina generati due volte dopo la conversione
Il processo di conversione consente di rimuovere l'attributo AutoEventWireup della direttiva @ Page. Il valore predefinito per questo attributo è true, che indica che la pagina genera automaticamente eventi con il nome Page_evento. Se una pagina aveva impostato in modo esplicito l'attributo AutoEventWireup su false, dopo la conversione gli eventi sulla pagina verranno generati automaticamente. Se la pagina include un altro modo esplicito per generare l'evento, ad esempio la parola chiave Handles in Visual Basic, l'evento potrebbe essere generato due volte. Per risolvere il problema, aggiungere AutoEventWireup="false" alla direttiva @ Page.
Classi ambigue segnalate durante la compilazione
Dopo la conversione di un progetto, è possibile che il compilatore segnali che una classe sia ambigua, indicante che è stata importata da più spazi dei nomi. Se ad esempio un progetto convertito crea un'istanza della classe Cache, il compilatore segnala che la classe risiede in entrambi gli spazi dei nomi System.Net e System.Web.Caching.
In casi come questi, in .NET Framework versione 2.0 è contenuta una nuova classe che ha lo stesso nome di una classe esistente. Per risolvere il problema, individuare i riferimenti alla classe nel codice e anteporre al nome della classe il nome dello spazio dei nomi, creando riferimenti completi.
Errori correlati alle modifiche apportate al modello di pagina code-behind
La conversione di progetti con pagine aspx che accedono a membri protetti di classi nelle classi code-behind può generare eccezioni. La causa di ciò consiste nella modifica del modello code-behind in .NET Framework 2.0. Nelle versioni precedenti di .NET Framework le pagine erano classi derivate delle classi code-behind. In ASP.NET 2.0 le classi code-behind rappresentano classi parziali utilizzate con la pagina aspx nel corso della generazione di quest'ultima per creare la pagina compilata risultante.
Uno scenario comune in cui è possibile rilevare un problema di conversione di questo tipo è un'applicazione che definisce i componenti di layout condivisi in una classe code-behind di una classe base. È possibile ottenere le stesse funzionalità di layout condivise utilizzando i controlli utente o le pagine master oppure l'attributo CodeFileBaseClass della direttiva @ Page. Per ulteriori informazioni sullo sviluppo dei controlli utente, vedere Cenni preliminari sui controlli utente ASP.NET. Per ulteriori informazioni sull'utilizzo di pagine master, vedere Informazioni generali sulle pagine master ASP.NET.
Errori di analisi
Nella Conversione guidata vengono segnalati errori di analisi nei file aspx che non è stato possibile analizzare. Le cause dei problemi di analisi rientrano nelle seguenti categorie:
La pagina aspx non è stata formattata in modo corretto prima dell'esecuzione della Conversione guidata.
Non è stato trovato un attributo CodeBehind o Src della direttiva @ Page.
Non è stato trovato il file code-behind cui si fa riferimento in una pagina aspx.
Un file aspx è elencato nel file di progetto, ad esempio csproj o vbproj, ma non nella directory del progetto. È possibile ignorare questo errore se il file non fa parte del progetto.
Inclusione dei file esclusi
Nelle versioni precedenti di Visual Studio, era possibile includere o escludere file in un progetto Web. Inoltre, era possibile escludere un file dalla compilazione del progetto impostando la relativa operazione di compilazione su None. Nella Migrazione guidata questi due casi vengono trattati in modo diverso. I file di un progetto Web, non contrassegnati come esclusi, vengono convertiti. Non vengono invece convertiti i file che non fanno parte della compilazione del progetto, ovvero i file configurati con l'impostazione della relativa operazione di compilazione su None.
Dopo il completamento del processo di conversione, è possibile eliminare tutti i file precedentemente esclusi o rinominarli con un'estensione non utilizzata in Visual Studio, ad esempio con l'estensione exclude. Se un file di progetto all'interno di un progetto Web non è stato convertito, verificare che la relativa operazione di compilazione non sia impostata su None.
I file la cui operazione di compilazione associata è impostata su None generano un messaggio di errore nel report di conversione. Per ulteriori informazioni sul report di conversione, vedere Formato del report di conversione della migrazione.
Soluzioni parzialmente convertite per tipi di progetto misti
In Microsoft Visual Studio 2005 e nelle versioni precedenti è possibile trovare una soluzione costituita da progetti Web e progetti client, quali librerie di classi o applicazioni Windows. Se si utilizza una versione Express Edition di Microsoft Visual Studio 2005, può essere convertita solo la parte della soluzione relativa all'Express Edition. Se ad esempio si utilizza la Conversione guidata in Visual Web Developer 2005 Express Edition, sarà possibile convertire solo i progetti Web delle soluzioni aperte, indipendentemente dagli altri tipi di progetto contenuti nella soluzione. La soluzione convertita risultante sarà pertanto convertita solo parzialmente. Per convertire completamente una soluzione contenente tipi di progetto misti, utilizzare Visual Web Developer 2005, Visual Studio 2005 o Visual Studio 2005 Team System.
Apertura di un sito Web come sito basato su file
Il metodo consigliato per aprire un sito Web creato in una versione precedente di Visual Studio consiste nell'utilizzare la voce di menu Apri sito Web in Visual Web Developer 2005. È quindi possibile scegliere di aprire il sito come sito basato su file, sito Microsoft Internet Information Services (IIS) locale, sito distribuito tramite FTP (File Transfer Protocol) o sito remoto. L'apertura di un sito Web come sito basato su file determinerà la perdita delle informazioni sui metadati IIS. In particolare, non verranno conservate le informazioni sulle sottocartelle contrassegnate come directory virtuali. Quando un sito Web viene convertito in un sito basato su file, nel report di conversione verrà visualizzato un avviso.
Si consiglia di chiudere il sito Web e di riaprirlo utilizzando il comando Apri sito Web e selezionando la scheda IIS locale. Per ulteriori informazioni su come utilizzare la Migrazione guidata, vedere Procedura: convertire un progetto di Visual Studio .NET in Visual Studio 2005. Per ulteriori informazioni sul report di conversione, vedere Formato del report di conversione della migrazione.
Eliminazione di ID sul lato client dal file code-behind
Se si dispone di markup che utilizza un attributo ID sul lato client (ad esempio, in un elemento div HTML) che presenta lo stesso nome di una variabile membro dichiarata nella pagina code-behind, il tag ID nel markup verrà rimosso durante la conversione.
Per risolvere questo problema, controllare il markup e il codice prima della conversione e cercare eventuali conflitti nei nomi degli attributi ID sul lato client e delle variabili membro, quindi modificarli in modo che utilizzino nomi diversi.
Errori relativi ai riferimenti circolari
Nel processo di conversione vengono aggiunte direttive @ Reference a pagine code-behind che fanno riferimento ad altre pagine o controlli utente. Possono verificarsi situazioni in cui questa circostanza crea un riferimento circolare. Per facilitare la risoluzione del problema, è possibile impostare l'attributo batch dell'elemento compilation su False. Il valore predefinito dell'attributo batch è True. L'impostazione dell'attributo batch su False può eliminare i problemi di riferimento circolare. Successivamente, è possibile riprogettare le pagine o i controlli utente in modo che utilizzino una classe base astratta definita in una classe memorizzata nella cartella App_Code e reimpostare l'attributo batch su True.
Vedere anche
Attività
Procedura: selezionare gli schemi di convalida per la modifica HTML in Visual Web Developer
Concetti
Conversione dei file di progetti e soluzioni Web