Resourcemanager Kommissionierung nicht korrekt resx Datei auf
-
02-10-2019 - |
Frage
Ich bin ein Problem mit den richtigen Ressource-Datei Einträge bekommen und benötige Hilfe ... hier ist mein Szenario
Ich habe eine Reihe von Projekten, die ein Teil einer großen Reporting-Lösung sind, die dieses Format
folgenPlugin. **** Bericht
- Referenz (Ordner)
- DataAccessLayer (Ordner)
- Datasets (Ordner)
- DataWrappers (Ordner)
-
Lokalisierung (Ordner)
*. Cs
Wo * ist der Name des Berichts ich generieren werde
Die * .cs hat eine Aussage Export, so dass ich es abholen kann bis MEF (nicht sicher, ob dies relevant ist, aber dachte, es erwähnenswert). Der Namespace in * .cs ist CompanyName.DataShaper.Plugin. * Bericht. Aufgrund des Projektnamen und Speicherort der Dateien, änderte ich das Standard-Namespace für jedes Projekt CompanyName.DataShaper.Plugin zu sein. * Bericht (es war nur Plugin. * Bericht vor meinem Wechsel).
Jetzt für das Problem .. innerhalb von * .cs ich einen Resourcemanager bin instanziieren. Das sieht dann so ...
_resourceManager =
new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
Assembly.GetExecutingAssembly());
in meiner resx Designer-Datei habe ich die folgende ...
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
resourceMan = temp;
}
return resourceMan;
}
Mein Aufruf an den Ressourcenmanager sieht wie folgt aus ...
string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);
wo _currentCultureInfo ist ein ein korrektes Cultureinfo-Objekt.
Ich habe 4 verschiedene resx Dateien in meinem Localization Ordner für jedes Projekt (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx, **** Report.de-de.resx).
Wenn ich den Anruf an den Ressourcenmanager machen, habe ich immer den Eintrag aus der .resx ... nie eine der anderen Sprachdateien, unabhängig von der Cultureinfo-Objekt ich in den Anruf übergeben. Was habe ich vermasselt?
-> Schnell Update auf meine ursprüngliche Frage, aber dies scheint MEF zusammenzuhängen. Ich instanziiert meine Klasse auf die altmodische Weise (neu * Bericht ()) und die Lokalisierung callte und es funktioniert gut
Lösung
OK, dachte ich, dieses aus .. Ich bin die RESX-Datei bekommen, weil sie wirklich in die Hauptbaugruppe eingebettet ist. Die anderen Dateien werden für jede Sprache in getrennten dlls gebaut zu werden, muß ich sie dann in demselben Ordner kopieren, dass ich mein Aggregat Container baue aus, dann meine Ressource-Manager alle Sprachen sehen.