Resourcendatei

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von vanitas-mundi.

    Resourcendatei

    Hallo!

    Ich habe ein Windows-Forms-Projekt, in welchem ich eine Resourecendatei, mit einigen Strings angelegt habe.

    Nun habe ich ein weiteres Projekt (eine Klassenbibliothek) angelegt. Diese soll auf einige Werte der Resourcendatei zugreifen können.

    Könnte mir jemand erklären, wie ich dies am besten realisieren kann?

    Der Zugriff muss wohl über einen RessourcenManager geschehen, aber ich weiß nicht genau,
    wie ich diesen in meiner Klassenbibliothek erzeugen soll.
    was hälst du davon den Hauptplan zu erklären, evtl können wir dir ne bessere Methode vorschlagen

    du könntest eine Datei von beiden Seiten aus mit Strings bestücken und mit nem FileWatcher reagieren wenn sich was geändert hat.
    Nun gut, die lange Geschichte ...

    Ich möchte meine Klassen gerne lokalisiert in einem PropertyGrid anzeigen lassen.
    Dies ist nur möglich, wenn man die Klassen der beschreibenden Attribute (wie DescriptionAttribute)
    ableitet und modifiziert, dass die Rückgabewerte ihre Ergebnisse aus den sprachbezogenen
    Resourcendateien holen.
    Dies klappt auch alles wunderbar ...

    Tja, allerdings finde ich es ziemlich unraffiniert, für jedes Projekt die Attribut-Klassen neu zu schreiben.
    Deshalb möchte ich sie gerne in eine Klassenbibliothek auslagern.
    Dies macht es nun allerdings erforderlich, dass diese Bibliothek, auf die Resourcendateien des Hauptprojektes
    zugreifen kann, weil dort die beschreibenden Texte, in unterschiedlichen Sprachen, in den Resourcendateien gepflegt werden.

    Zwar gehe ich sehr stark davon aus, dass dieses funktioniert, jedoch weiss ich derweil nicht, wie ich den Zugriff Projektübergreifend realisieren kann.

    Innerhalb des Hauptprojektes geht dies sehr leicht mit:

    VB.NET-Quellcode

    1. My.Resources.ResourceManager.GetString(_Description, System.Threading.Thread.CurrentThread.CurrentCulture)


    Die momentanen Resourcen heißen: Resources.de-DE.resx und Resources.en-US.resx!

    Kann mir nun jemand helfen?
    Hi, du kannst dir deinen eigenen Resourcemanager erstellen und über die ausführende Assembly auf die Resourcen zugreifen.
    Ich hab es selber noch nicht richtig benutzt und noch nicht ganz durchschaut, aber ich werde das heute mal ausprobieren.
    Das ist meine Signatur und sie wird wunderbar sein!
    zum Verwalten der mehreren Sprachen kannst du dann ja ein Dictionary nehmen
    Hallo Mono!

    Genau dieses möchte ich erreichen, aber ich bekomme es nicht hin.

    Habe es jetzt mit:

    VB.NET-Quellcode

    1. Dim rm = New System.Resources.ResourceManager("Resources", System.Reflection.Assembly.GetEntryAssembly)
    2. Return rm.GetString(_Description, System.Threading.Thread.CurrentThread.CurrentCulture)


    probiert und bekomme folgende Fehlermeldung:

    Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass Resources.resources beim Kompilieren richtig in die Assembly LocalizationTest eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind.
    Habe es geschafft :)


    VB.NET-Quellcode

    1. Dim rm = New System.Resources.ResourceManager("Resources", System.Reflection.Assembly.GetEntryAssembly)
    2. Return rm.GetString(_Description, System.Threading.Thread.CurrentThread.CurrentCulture)


    Dies war schon gar nicht schlecht, es fehlte nur der Namespace vor dem Resources:

    VB.NET-Quellcode

    1. Dim rm = New System.Resources.ResourceManager("WindowsApplication1.Resources", System.Reflection.Assembly.GetEntryAssembly)


    Danke, für eurer Mitdenken!