Eseguire il debug delle applicazioni Expression Blend
Se l'applicazione Microsoft Expression Blend non si comporta come previsto oppure si verificano errori quando si tenta di testare l'applicazione, significa che nell'applicazione è presente un bug. Risalire alla causa del bug oppure individuarne la posizione all'interno dell'applicazione può essere difficile. Conoscere i tipi di bug che si possono verificare può tuttavia essere di aiuto.
Errori di sintassi
Quando si genera l'applicazione gli eventuali errori di sintassi vengono visualizzati nella scheda Errori del pannello Risultati di Expression Blend oppure nel pannello Elenco errori di Microsoft Visual Studio 2008.
Gli errori di sintassi si verificano quando il codice o il file XAML (eXtensible Application Markup Language) non segue le regole di formattazione del linguaggio. La descrizione dell'errore può consentire di individuare una modalità di correzione. Nella descrizione sono inoltre specificati il nome del file e il numero della riga in cui è presente l'errore. Di seguito sono elencate alcune cause comuni degli errori di sintassi:
In una parola chiave è presente un errore di ortografia oppure l'utilizzo delle lettere maiuscole/minuscole non è corretto.
Le stringhe di testo non sono racchiuse tra virgolette.
In un elemento XAML manca un tag di chiusura.
È presente un elemento XAML in una posizione non consentita. Per evitare questo tipo di errori, è possibile modificare i documenti nella visualizzazione Progettazione di Expression Blend o in Visual Studio 2008.
In un file di codice la chiamata di una funzione o un metodo non include i parametri necessari. Il metodo MessageBox.Show(), ad esempio, deve includere almeno un parametro, quale una stringa, come in MessageBox.Show("Hello").
In un file di codice una variabile di un tipo viene assegnata a un tipo diverso. Il metodo MessageBox.Show(), ad esempio, può includere un argomento stringa, ma non un argomento integer.
In C# potrebbero mancare le parentesi alla fine di un metodo che non richiede argomenti. Il metodo this.InitializeComponent;, ad esempio, causa un errore di sintassi perché la riga corretta è this.InitializeComponent();.
Per informazioni sulla sintassi XAML, vedere gli argomenti contenenti i cenni preliminari sui singoli controlli elencati nell'argomento Libreria di controlli della sezione Windows Presentation Foundation di MSDN. Per informazioni sulla sintassi di programmazione, è possibile cercare su MSDN le parole chiave presenti nel codice.
Torna all'inizio
Errori di compilazione
Quando si genera l'applicazione gli eventuali errori di compilazione vengono visualizzati nella scheda Errori del pannello Risultati di Expression Blend oppure nel pannello Elenco errori di Visual Studio 2008.
Gli errori di compilazione si verificano quando il sistema di compilazione di Expression Blend o Visual Studio 2008 non è in grado di individuare un elemento necessario per il progetto. Se ad esempio nel progetto WPF manca un riferimento agli assembly WPF, potrebbe verificarsi un errore quale "Il nome 'Window' non esiste nello spazio dei nomi 'https://schemas.microsoft.com/winfx/2006/xaml/presentation'". Se viene restituito tale errore, sarà possibile scegliere Aggiungi riferimento dal menu Progetto per aggiungere i riferimenti agli assembly WPF seguenti nella cartella C:\Programmi\Reference Assemblies\Microsoft\Framework\v3.5:
PresentationCore.dll
PresentationFramework.dll
WindowsBase.dll
Se vengono ancora visualizzati errori quali "Il nome '<membro>' non esiste nel contesto corrente", è possibile che manchi un riferimento a un altro assembly oppure potrebbe essere necessario aggiungere al codice un'istruzione using (C#) o Imports (Visual Basic .NET) per lo spazio dei nomi mancante. Per individuare l'assembly o lo spazio dei nomi necessario, vedere l'argomento di riferimento su MSDN relativo al membro che causa l'errore.
Di seguito sono elencate alcune altre cause comuni degli errori di compilazione:
In una parola chiave è presente un errore di ortografia oppure l'utilizzo delle lettere maiuscole/minuscole non è corretto.
L'applicazione contiene un riferimento a una classe non corretto. Se ad esempio nell'applicazione viene utilizzata una classe personalizzata implementata in un file di codice con estensione cs o vb separato e con un proprio spazio dei nomi, o in un file di codice con estensione js, nel caso di un progetto di Microsoft Silverlight 1.0, tutti i documenti dell'applicazione che utilizzano la classe personalizzata devono includere una riga simile alla seguente, dove FullyQualifiedNamespace rappresenta lo spazio dei nomi nel file di codice:
xmlns:SampleNamespace="clr-namespace:FullyQualifiedNamespace"
Le opzioni del compilatore non sono impostate in modo corretto oppure il sistema non è in grado di generare applicazioni basate su Microsoft .NET Framework. Se nel sistema è installato Microsoft .NET Framework 3.5 e l'applicazione viene generata tramite Expression Blend o Visual Studio 2008, questo problema non dovrebbe verificarsi.
Non è stato salvato un file prima del tentativo di generazione del progetto. Se ad esempio si utilizza il pannello Eventi di Expression Blend per generare un nuovo metodo di gestore eventi nel file code-behind (aprendo così tale file in Visual Studio) e quindi si tenta di generare il progetto in Expression Blend senza prima salvare il file code-behind, verrà restituito un errore per informare che il progetto non contiene una definizione per il gestore di evento.
Torna all'inizio
Errori di runtime
Si verifica un errore di runtime quando l'applicazione viene generata ma durante l'esecuzione, che può essere avviata premendo F5 in Expression Blend, non si comporta come previsto. Gli errori di runtime sono i più difficili da individuare perché coinvolgono errori all'interno della logica. In alcuni casi, è possibile correggere gli errori di runtime provando a implementare varie modifiche nel codice o nel linguaggio XAML fino a comprendere in dettaglio il funzionamento. È tuttavia più rapido valutare quanto accade eseguendo le istruzioni del codice riga per riga mentre l'applicazione è in esecuzione. Per ulteriori informazioni, vedere Debugging in Visual Studio 2008 più avanti in questo argomento.
Di seguito sono elencate alcune cause comuni degli errori di runtime:
Il layout degli elementi XAML non è corretto oppure l'elemento Panel utilizzato per racchiudere altri elementi non è corretto. Per informazioni sul layout, vedere Sistema di layout in questo Manuale dell'utente oppure Sistema di layout e Panoramica su allineamento, margini e spaziatura interna nella sezione relativa a WPF di MSDN.
Un elemento XAML non è collegato al gestore dell'evento corretto. Questa situazione si può verificare se si creano numerosi metodi del gestore dell'evento e quindi si assegna all'elemento XAML un metodo errato. Per verificare i gestori di evento assegnati a un elemento XAML in un progetto WPF aperto in Expression Blend, selezionare l'elemento in Oggetti e sequenza temporale, nel pannello Interazione, e quindi fare clic sul pulsante Eventi nel pannello Proprietà. Per ulteriori informazioni, vedere Gestione degli eventi e interattività dell'utente in questo Manuale dell'utente. In un progetto di Silverlight 1.0 questa situazione può verificarsi se si collega un gestore di evento all'elemento radice utilizzando il codice seguente:
rootElement.addEventListener(…);
anziché collegare il gestore di evento a un elemento figlio nel documento, ad esempio utilizzando il codice seguente:
this.control.content.findName("WebLink").addEventListener(…);
Per ulteriori informazioni, vedere Creare un pulsante che controlla uno storyboard in un'applicazione Silverlight.
Un trigger animazione in Expression Blend non è impostato in modo corretto. È ad esempio necessario avviare gli storyboard per animazioni in qualsiasi trigger se si desidera poterli interrompere o sospendere dopo il caricamento dell'applicazione. Per impostazione predefinita, tutti gli storyboard per animazioni vengono avviati nel trigger Window.Loaded, ma è possibile modificare tale impostazione. Per ulteriori informazioni, vedere Animazione in questo Manuale dell'utente. Per un esempio di trigger animazione, vedere Creare un'animazione semplice oppure gli argomenti nella sezione Esercitazioni in Stili semplici.
In un file di codice una variabile fa riferimento a un oggetto non ancora esistente. In un file code-behind di un progetto WPF, ad esempio, se si fa riferimento a un oggetto XAML prima della riga this.InitializeComponent() si verifica un errore XamlParseException.
In un file di codice i presupposti formulati fanno sì che l'applicazione segua un percorso del codice imprevisto. In una situazione di questo tipo è consigliabile eseguire il codice un'istruzione alla volta durante il debug dell'applicazione in Visual Studio 2008. Per ulteriori informazioni, vedere Eseguire il debug di applicazioni Expression Blend in Visual Studio 2008 in questo Manuale dell'utente.
In un file code-behind gli aggiornamenti dell'interfaccia utente vengono eseguiti sullo stesso thread di altra logica di programmazione che dovrebbe essere eseguita in un thread separato. Se ad esempio si crea un metodo del gestore dell'evento che aggiorna il testo visualizzato in un controllo Label, esegue altri calcoli e quindi aggiorna nuovamente il testo presente nel controllo Label prima del completamento, sarà possibile visualizzare solo l'ultimo aggiornamento. Questa situazione si verifica poiché il rendering dell'interfaccia utente si verifica al termine del metodo del gestore dell'evento e tutta l'elaborazione viene eseguita nello stesso thread. L'applicazione non dispone pertanto del tempo necessario per aggiornare l'interfaccia utente durante l'esecuzione del metodo stesso. Per informazioni sulla realizzazione di applicazioni WPF che eseguono vari calcoli e aggiornamenti dell'interfaccia utente, vedere Modello di threading nella sezione relativa a WPF di MSDN.
In un metodo del gestore dell'evento all'interno di un file code-behind viene fatto riferimento a elementi dell'interfaccia utente o alle relative proprietà prima che siano disponibili. In un progetto WPF, ad esempio, nel metodo del costruttore Window1() non è ancora possibile accedere agli elementi dell'interfaccia utente. In un metodo del gestore dell'evento OnInitialized() è possibile accedere agli elementi dell'interfaccia utente, ma non esaminare proprietà, ad esempio ActualWidth, perché il layout degli elementi dell'interfaccia utente non è ancora stato eseguito. In un metodo del gestore dell'evento OnLoaded() è possibile eseguire qualsiasi operazione necessaria sugli elementi dell'interfaccia utente esistenti nel documento XAML. Per ulteriori informazioni, vedere Eventi di durata degli oggetti nella sezione relativa a WPF di MSDN. Per un elenco degli eventi e delle situazioni in cui si verificano, vedere Riferimenti rapidi sugli eventi WPF in questo Manuale dell'utente.
Torna all'inizio
-
Eseguire il debug in Visual Studio 2008
Expression Blend è uno strumento di progettazione per la creazione di avanzate interfacce utente per applicazioni WPF e Silverlight 1.0. Per aprire, generare ed eseguire il debug dei progetti di Expression Blend, è possibile utilizzare Visual Studio 2008. Se si incontrano difficoltà durante il debug dell'applicazione con la funzionalità Test (F5) di Expression Blend, sarà possibile utilizzare Visual Studio 2008 per ottenere messaggi di errore dettagliati sugli errori di runtime. Per ulteriori informazioni, vedere Eseguire il debug di applicazioni Expression Blend in Visual Studio 2008 in questo Manuale dell'utente.
Torna all'inizio
Eseguire il debug dei problemi di prestazioni
In WPF è disponibile una serie di strumenti di valutazione delle prestazioni che consentono di analizzare il comportamento in fase di esecuzione dell'applicazione e di determinare come è possibile migliorare le prestazioni. Per ulteriori informazioni, vedere Strumenti di analisi delle prestazioni per WPF e Ottimizzazione delle prestazioni di applicazioni WPF nella sezione relativa a WPF di MSDN.
Torna all'inizio
Registrazione di eventi
I programmatori .NET esperti possono aggiungere codice alle applicazioni WPF create per attivare eventi di debug personalizzati che consentano di eseguire il debug di bug più complessi. Questa funzionalità è denominata Event Trace for Windows (ETW). Lo strumento di profiling Event Trace di WPF utilizza ETW per la registrazione degli eventi. Per ulteriori informazioni, vedere "Traccia eventi" e "PresentationTraceSources" in Strumenti di analisi delle prestazioni per WPF su MSDN.
Torna all'inizio
Eseguire il debug delle applicazioni ibride
Se un'applicazione creata utilizza sia WPF che un'altra tecnologia, ad esempio la programmazione Windows Forms, è possibile che si verifichino problemi quali un comportamento imprevisto di sovrapposizione o modifica della scala, difficoltà di controllo dello stato attivo e così via. Per informazioni di riferimento sul debug delle applicazioni ibride, vedere Risoluzione dei problemi relativi ad applicazioni ibride nella sezione relativa a WPF di MSDN.
Torna all'inizio
Protezione
Le autorizzazioni di protezione di un'applicazione sono le stesse sia quando viene sottoposta al debug che quando viene utilizzata da un altro utente. Per ulteriori informazioni, vedere Distribuire e pubblicare applicazioni Expression Blend in questo Manuale dell'utente. Per informazioni sulla protezione delle applicazioni WPF, vedere Sicurezza nella sezione relativa a WPF di MSDN.
Torna all'inizio
Visualizzazione del manuale dell'utente
Per ulteriori informazioni sul debug dell'applicazione Expression Blend è possibile cercare post correlati al problema riscontrato oppure inserire una domanda nel forum di Windows Presentation Foundation.
Torna all'inizio