LutzBerillio
Grünschnabel
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:
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:
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
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:
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