2009-09-22 4 views
11

Ich versuche, eine resx Datei in meiner .net Website zu laden, mit:Resourcemanager versuchen RESOURCES zu laden nicht RESX-Datei

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

Die Resource.resx Datei ist im Ordner App_LocalResources und eingestellt ist, um eingebettet in Assembly auf Build.

Wenn ich versuche, die resx Datei zuzugreifen mit:

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

ich eine Fehlermeldung erhalten:

konnte nicht finden alle Ressourcen geeignet für die angegebene Kultur oder die neutrale Kultur. Stellen Sie sicher, „Project.Resource.resources“ wurde richtig eingebettet oder verknüpft in assembly „Project“ bei der Kompilierung oder , dass alle Satelliten-Baugruppen sind erforderlich belastbar und vollständig unterzeichnet.

Beachten Sie die .resources ... irgendwelche Ideen, was hier vor sich geht?

+0

Wird auch keine Designer-Datei erstellt? –

Antwort

3

Ich denke, die Art, wie Sie ResourceManager verwenden, ist falsch. Siehe hierzu post.

Beachten Sie auch, wenn Sie Visual Studio-Eingabeaufforderung öffnen, & Lauf Resgen.exe, sagt er seine verwendet, um Ressource-Dateien von einem Format in ein anderes (das heißt resx zu Ressourcen) zu konvertieren. Ich denke, Sie müssen Ihre Datei in Ressourcen von resx & konvertieren, dann laden Sie es mit ResourceManager.

+1

Danke, dass Sie mich auf den richtigen Weg gebracht haben ... Ich sollte nicht ResourceManager verwenden Ich endete mit der <% $ Resources: Dateiname, Schlüssel%> Syntax auf meiner Seite statt –

1

Fügen Sie explizit die Erweiterung .resx hinzu.

Sie können auch die automatisch generierte Klasse verwenden und ihre Eigenschaften verwenden, wenn dies für Ihr Projekt geeignet ist.

+0

Wenn ich die .resx der "Project.Resource" hinzufügen, bekomme ich den gleichen Fehler, aber für die Datei Project.Resource.resx.resources –

+0

Sorry, ich habe verpasst, dass Ihre .resx ist in App_LocalResources. Keiner meiner Post gilt ... –

3

Ich bin nicht sicher, welche Version von .NET Framework verwenden Sie.

Versuchen Sie, wie Sie den ResourceManager zum Leben erwecken.

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

Es sollte funktionieren.

Dies wird auch als statische Eigenschaft der automatisch generierten Klasse .designer.cs des Concrete Resorce Managers angezeigt.

13

laden .resx in Resourcemanager Sie Namespace

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

oder Sie können Resourcemanager kostenlos erhalten, wenn gesetzt Zugriffsmodifikator innerhalb Managed Resource Editor auf interne oder öffentliche, danach VS generiert ResxName.Designer angeben müssen.cs

var rm = ResxName.ResourceManager; 
+1

+ 1 für die Methode des Zugriffs auf Ressourcen über den Designer-Code – Boggin

4

Es ist überraschend einfache Art und Weise des Lesens Ressource von string:

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

Es ist sauber und elegante Lösung für Ressourcen durch Tasten zu lesen, wo „Punktnotation“ nicht (zum Beispiel verwendet werden, wenn Schlüsselressource ist in der Datenbank beibehalten).