2009-06-28 6 views
10

In tutte le mie ricerche, sono stato in grado di trovare solo this one link che suggerisce che il vecchio CLR Profiler per .NET 2.0 dovrebbe funzionare con .NET 3.0 o 3.5 applicazioni.Esiste un profiler CLR che funzioni con .NET 3.5 SP1 e WPF?

Quando provo a profilare la mia applicazione .NET 3.5 SP1 WPF con CLR Profiler per .NET 2.0 avvia correttamente l'applicazione, ma apre una finestra di dialogo che dice "In attesa che l'applicazione avvii Common Language Runtime ".

Poiché la mia applicazione utilizza chiaramente il CLR, posso solo concludere che il CLR Profiler per .NET 2.0 non funziona con le versioni più recenti del framework (forse è solo un problema con 3.5 app SP1).

Quindi, qualcuno sa se esiste una versione del profiler CLR che funziona con 3.5 SP1? Se non c'è una versione del profiler di Microsoft, c'è un altro profiler gratuito che potrei usare con funzionalità simili?

+2

Credo che tu stia concludendo male, anche perché il CLR è invariato tra i 2.0 e 3,5. :) – jalf

+0

@jaif - che dire tra 3.5 e 3.5 SP1? Sono in grado di riprodurre questo senza fallo. –

risposta

15

Ho appena provato a eseguire CLR Profiler con un'applicazione WPF e funziona correttamente. Ci vuole un po 'prima che l'applicazione abbia inizio (più a lungo che con le applicazioni non WPF, sembra), ma funziona.

Aggiornamento: solo per mantenere aggiornata la risposta; in base ai commenti seguenti, la soluzione era eseguire CLR Profiler con diritti amministrativi.

+0

Ho lasciato la mia applicazione in esecuzione per quasi 20 minuti, in attesa che il messaggio "Attesa per l'avvio della lingua comune runtime" scompaia. La mia app era funzionante, stavo interagendo bene - la mia app aveva chiaramente avviato il CLR. Quale versione del framework era il tuo targeting per app WPF? –

+3

È destinato a .NET Framework 3.5. Ho visto non da qualche parte che ha bisogno di essere eseguito con i diritti amministrativi (non so se è stato specificamente per le applicazioni WPF). Ci hai provato? –

+1

Una buona chiamata per eseguirlo con i diritti amministrativi: era tutto ciò di cui avevo bisogno! Grazie! –

2

Il CLR utilizzato in framework 2.0 e 3.5 framework differisce solo da un service pack. Il CLR ha la versione 2.0 e 2.0SP1 per le rispettive versioni. Il profiler CLR funzionerà contro la versione 2.0SP1 del CLR.

Piccola correzione: non esiste una versione 3.5 del CLR. Le versioni più recenti sono 2.0, 2.0SP1 e 2.0SP2 (associate a .Net Framework SP1).

+0

Quindi il CLR Profiler funziona contro la versione 2.0SP1 del CLR: che ne dici di contro 2.0SP2? Presumo che questo è ciò che viene fornito con 3.5SP1 - almeno questo è quello che sto raccogliendo dalla tua risposta ... mi sbaglio? –

0

Non fare lo stupido errore che ho fatto e provare a utilizzare CLR profiler v1.1 - quello corretto è CLR Profiler per .NET Framework 2.0 (anche se si utilizza .NET 3.5).

1

Ho appena usato il profiler CLR 2 con la mia applicazione .NET 4.0 WPF. Poteva avviare l'app ma quando si fa clic su "Mostra heap adesso" o su qualsiasi elemento nel menu "Visualizza" mostrava finestre di report con figure vuote. Quindi mi chiedo se qualcuno lo abbia già provato con successo? O semplicemente non supporta app .NET WPF.

+0

Non è che non supporti WPF, è che non funzionerà con .NET 4.0. .NET 3.5 era un insieme di librerie extra in cima al runtime di .NET 2.0, cioè il runtime di base non cambiava: ecco perché il V2 del profiler funzionava ancora. Con .NET 4.0 abbiamo un nuovo runtime. – donovan

1

Ho commesso l'errore di eseguire la versione x86 di CLR Profiler per .NET Framework 2 sulla mia macchina a 64 bit, che mostrava permanentemente il messaggio "Attendere che l'applicazione avvii Common Language Runtime". Se si dispone di una macchina a 64 bit, probabilmente si deve eseguire la versione di CLR Profiler che corrisponde al processo che si desidera profilare (cioè normalmente nella cartella "x64")

Per qualche motivo WPF è estremamente lento sotto il profiler.

+0

Deve corrispondere all'applicazione profilata. Sto usando la macchina x64. L'app è a 32 bit. Quindi ho bisogno di eseguire il profiler a 32 bit usando i diritti amministrativi. –