Chi avesse provato ad utilizzare le risorse localizzate,
spostandone lo storage nel database come ho spiegato tempo fa, si sarà reso conto che spesso Visual Studio 2005
restituisce un errore di compilazione che in buona sostanza informa che l'IDE
non è in grado di trovare la risorsa specificata.
Questo succede perchè le risorse localizzate vengono caricate
già dall'ide di Visual Studio. In realtà quando inserite un ExpressionBuilder
questo viene immediatamente convertito nel codice relativo ed eseguito, talvolta
anche troppo rapidamente. Ora, nel mio esempio, ma anche in molti altri che
si trovano in rete, il codice dell'ResourceProvider si appoggia alla istanza
singleton di HttpContext, esposta dalla proprietà Current per determinare in
base all'url chiamato il corretto set di risorse. Quando siamo a DesignTime in
Visual Studio 2005, non esiste un context HTTP per cui il codice eseguito
genererà nella maggioranza dei casi un'eccezione per cui l'ide mostrerà l'errore
suddetto.
La soluzione a questo punto è banale: occorre testare il valore
di HttpContext.Current per verificare che non sia null prima di interrogare il
database. Nel mio caso, qualora il contesto http sia nullo mi premuro di fornire
al ResourceProvider dei parametri di default che si occupano addirittura di
creare la risorsa mancante riempiendola con un valore fittizio che rende
semplice la sua ricerca e popolazione durante la fase di labeling
dell'applicazione.
Il codice è semplice:
if (HttpContext.Current == null)
MakeDefaultResourceContext();
Buone risorse
a tutti...
powered by IMHO
1.3