2009-09-22 13 views
11

Sto cercando di caricare un file RESX nel mio sito .net utilizzando:ResourceManager cercando di caricare resources non resx presentare

ResourceManager rm = new ResourceManager("Project.Resource", Assembly.GetExecutingAssembly()); 

Il file Resource.resx è nelle App_LocalResources cartella ed è impostato per essere incorporato in assembly su build.

Quando provo ad accedere al file resx utilizzando:

rm.GetString("key"); o rm.GetString("key", culture);

ricevo un messaggio di errore:

Impossibile trovare le risorse appropriata per la lingua specificata o la cultura neutrale. Assicurarsi che "Project.Resource.resources" è stato correttamente incorporato o collegato assemblaggio "Progetto" in fase di compilazione, o che tutti gli assembly satellite obbligatori sono caricabili e completamente firmato.

Notate le risorse. Qualche idea su cosa sta succedendo qui?

+0

Non è stato creato anche un file di progettazione? –

risposta

3

Penso che il modo in cui si utilizza ResourceManager sia sbagliato. Vedere questo post.

Inoltre, quando si apre il prompt dei comandi di Visual Studio, & esegue resgen.exe, si dice che sia utilizzato per convertire i file di risorse da un formato all'altro (ad esempio resx in risorse). Penso che sarà necessario convertire il file in risorse da resx & quindi caricarlo utilizzando resourceManager.

+1

Grazie per avermi inserito nella giusta direzione ... Non dovrei usare ResourceManager Ho finito per usare la sintassi <% $ Resources: filename, key%> nella mia pagina invece –

1

Aggiungere esplicitamente l'estensione .resx.

È inoltre possibile utilizzare la classe generata automaticamente e utilizzare le sue proprietà se è adatta al proprio progetto.

+0

Se aggiungo il .resx a "Project.Resource" ottengo lo stesso errore ma per il file Project.Resource.resx.resources –

+0

Spiacente, mi sono perso che il tuo .resx è in App_LocalResources. Nessuno dei miei post è valido ... –

3

Non sono sicuro di quale versione di .NET Framework si sta utilizzando.

Provate a cambiare il modo in cui portate ResourceManager alla vita.

ResourceManager rm = 
    new ResourceManager("Project.Resource", 
         System.Reflection.Assembly.Load("App_LocalResources")); 

Dovrebbe funzionare.

Questo è anche esposto come una proprietà statica della classe .designer.cs generata automaticamente del gestore di resorce calcestruzzo.

13

Per caricare resx in ResourceManager è necessario specificare namespace

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly()); 

o si può ottenere ResourceManager gratuitamente se impostare l'accesso di modifica all'interno Managed Resource Editor per interna o pubblica, dopo che VS genererà ResxName.Designer.cs

var rm = ResxName.ResourceManager; 
+1

+ 1 per il metodo di accesso alle risorse tramite il codice Designer – Boggin

4

Non c'è modo sorprendentemente semplice di risorsa lettura stringa:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey") 

E 'una soluzione pulita ed elegante per la lettura di risorse con i tasti in cui non è possibile utilizzare "la notazione punto" (per esempio quando il tasto delle risorse è persistito nel database).

Problemi correlati