Visualizzatore registro associazione assembly (Fuslogvw.exe)

Uno degli aspetti più difficili dell'utilizzo delle risorse localizzate è il debug del processo di caricamento delle risorse. Quando si utilizza una ResourceManager, le richieste di risorse vengono passate a Common Language Runtime, responsabile dell'individuazione, caricamento e associazione alla risorsa in questione. Nel codice sorgente è possibile che una singola chiamata per il caricamento di una risorsa esegua diverse richieste di associazione a Common Language Runtime.

Il Visualizzatore registro associazione assembly consente di analizzare il processo di caricamento delle risorse. Informazioni dettagliate sull'associazione delle risorse sono in realtà gestite in base a un sistema di URL dal componente WinInet di Windows. Sfortunatamente le voci restituite da WinInet non seguono necessariamente un ordine cronologico.

Per impostazione predefinita, le chiamate di associazione non vengono registrate. Per attivare la registrazione, è innazitutto necessario creare un valore DWORD nella chiave HKLM\Software\Microsoft\Fusion del Registro di sistema di Windows. Nel primo livello di registrazione vengono visualizzate solo le associazioni di risorse non riuscite. A questo scopo, è necessario creare un valore LogResourceBinds DWORD e impostarlo su un valore diverso dall'impostazione predefinita pari a zero.

È possibile causare un errore di associazione delle risorse nell'applicazione di esempio eliminando o rinominando un assembly satellite della risorsa appropriata. Se ad esempio si eliminano \en-US\Graphic.resources.dll e \en\Graphic.resources.dll e si esegue quindi l'esempio Graphic, lo strumento FusLogVW produce il registro visualizzato nella figura che segue:

Le due voci del registro indicano che Common Language Runtime ha tentato prima di trovare una risorsa per la lingua en-US. Dal momento che il tentativo non è riuscito, ha tentato di caricare una risorsa per la lingua en. Essendo fallito anche questo tentativo, ha caricato infine l'assembly principale che, poiché è riuscito correttamente, non è stato registrato.

Molti sviluppatori però desiderano osservare tutta l'attività di associazione. In tal caso, è necessario impostare il valore DWORD di ForceLog su un valore diverso dall'impostazione predefinita pari a zero. A questo punto le chiamate di associazione successive, sia quelle completate correttamente che quelle non riuscite, verranno registrate. Nella figura che segue viene mostrato un esempio tipico di registro:

Selezionando una delle associazioni di risorse (in questo caso, per Locale=en-US) e facendo clic su Visualizza registro verrà visualizzata una finestra del browser e verrà prodotto il registro dettagliato illustrato nella figura riportata di seguito.

Questa voce del registro specifica mostra che la risorsa è stata caricata correttamente dopo una ricerca operata da Common Language Runtime nella cache degli assembly globale e nelle sottodirectory dell'applicazione. Per ridurre il numero di file che Common Language Runtime tenta di caricare, e migliorare al tempo stesso le prestazioni, Common Language Runtime tenta di individuare le risorse solo nei file con estensioni DLL.