ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1489
1489
EMPFEHLEN
-
07.06.10 10:16 #1
- Registriert seit
- Apr 2010
- Beiträge
- 13
Servus Leute,
ich komme schon wieder mit Fragen zu Satellite Assemblies.
Ich habe eine Lib geschrieben die mir aus einem externen System Sprachdaten zieht und diese Daten dann in verschiedene Formate zur Weiterverarbeitung umwandelt. Eines dieser Weiterverarbeitungsformate ist für .NET Programme die Satellite Assembly.
Hierzu erstelle ich programmatisch mit dem ResXResourceWriter die .resx Dateien. Diese schicke ich dann über ResGen um die .resources Dateien zu erhalten und schließlich über al.exe um die Satellite Assembly zu erzeugen.
Soweit, sogut...
Nun würde ich gerne eine Anwendung basteln, die mir eine Überprüfung der Assemblies ermöglicht. Ich wollte gerne hierzu über einen File-Chooser eine Assembly auswählen lassen und dann "einfach" alle Key-Value-Pairs in einem Data-Grid-View ausgeben lassen.
Nun dachte ich das wäre nicht soooo dramatisch in der Umsetzung, aber wurde eines Besseren belehrt. Ich kriege einfach die Assemblies nicht geladen, jedenfalls nicht so, dass ich über den ResourceManager einen String abrufen könnte.
Dazu zu sagen ist noch folgendes:
In meinen Satellite Assemblies sind mehrere .resources-Dateien inkludiert. (SatelliteAssemblyChecker.Text.Sprachdaten1.de.resources, SatelliteAssemblyChecker.Text.Sprachdaten2.de.resources).
Und die .resources-Dateien enthalten NUR strings, also keine anderen Resourcen!
Hier noch ein wenig Code von mir, mit dem ich versuche zu testen:
Code :1 2 3 4 5
var dir = Directory.GetCurrentDirectory() + "\\" + Thread.CurrentThread.CurrentUICulture.ToString() + "\\"; Assembly asm = Assembly.LoadFrom(dir + "SatelliteAssemblyChecker.resources.dll"); this._rm = new ResourceManager("SatelliteAssemblyChecker.Text.Sprachdaten1.de", asm); ... this._rm.GetString("AdresseDefText");
Irgendwas scheint mit den Namespaces nicht zu passen. Er motzt beim Zugriff auf den String:
Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass SatelliteAssemblyChecker.Text.Sprachdaten1.de.resources beim Kompilieren richtig in die Assembly SatelliteAssemblyChecker.resources eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind.
Richtig platziert habe ich die Assemblies eigentlich auch:- SatelliteAssemblyChecker.exe/de-DE/SatelliteAssemblyChecker.resources.dll
- SatelliteAssemblyChecker.exe/en-US/SatelliteAssemblyChecker.resources.dll
Ich hoffe mir kann hier jemand weiterhelfen mit dem Laden und dem Zugriff auf die Sprachdaten. Im Netz bin ich schon seit Tagen am suchen, aber find irgendwie nix, was mir weiter hilft...
Irgendwie ist Lokalisierung für mich nen sehr frustrierendes Thema bei .NET ...
Danke euch allen schonmal für's Lesen
-
08.06.10 09:04 #2
- Registriert seit
- Apr 2010
- Beiträge
- 13
Habe das Problem gefunden... Nachdem ich mit "Red Gate's .NET Reflector" mir die DLL mal angeschaut habe, ist mir aufgefallen, dass die .resx-Dateien in die Satellite Assembly eincompiliert waren, anstatt der .resources-Dateien.
War also ein Fehler in meinem DLL-erzeugenden Programm. Habe den Fehler da nun ausgebessert und siehe da: DIE VARIANTE VON OBEN FUNKTIONIERT NUN!!
Was sich mir jetzt allerdings als schwierig darstellt:
Wenn ich nun ja verschiedene DLLs auswählen lassen will, kann ich ja den BaseName für den ResourceManager nicht mehr hardcodieren, sondern muss den irgendwie aus der geladenen DLL auslesen können.
Hat da jemand eine Idee wie ich das machen könnte?
Gruß
Chris
-
08.06.10 10:59 #3
- Registriert seit
- Apr 2010
- Beiträge
- 13
Und auch dieses Problem hat sich nun verflüchtigt!
Vielleicht hilft's ja irgendwem mal weiter:
Code :1 2 3 4 5 6 7
// Load the choosen assembly and get the embedded resource names this._assembly = Assembly.LoadFrom(AssemblyTextBox.Text); foreach (string resourceName in this._assembly.GetManifestResourceNames()) { BaseNameComboBox.Items.Add(resourceName); this.SetDebugMessage("Loading base name: {0}", resourceName); }
Alle Probleme hiermit nun gelöst.
Gruß
Chris
Ähnliche Themen
-
Grafikkarte Toshiba Satellite X-200-21X
Von server im Forum HardwareAntworten: 7Letzter Beitrag: 19.12.10, 22:33 -
Toshiba Satellite A100
Von Draxx im Forum Microsoft WindowsAntworten: 5Letzter Beitrag: 13.09.07, 17:11 -
Lokalisierung .resx oder .resources - Komplexe Grundsatzfrage zur Lokalisierung
Von Macan im Forum .NET Application und Service DesignAntworten: 13Letzter Beitrag: 08.11.06, 14:14 -
Linux auf Toshiba Satellite 5000
Von SirSalomon im Forum Linux & UnixAntworten: 0Letzter Beitrag: 15.04.02, 17:04 -
pc crash bei 3d anwendungen, lokalisierung des fehlers und behebung =)
Von CeoN im Forum HardwareAntworten: 9Letzter Beitrag: 04.03.02, 19:05





Zitieren
Login





