ResourceManager正しいresxファイルを選択しない
-
02-10-2019 - |
質問
私は正しいリソースファイルエントリを取得する問題を抱えており、いくつかのヘルプが必要です...これが私のシナリオです
この形式に従う大規模なレポートソリューションの一部である一連のプロジェクトがあります
プラグイン。****レポート
- 参照(フォルダー)
- DataAccessLayer(フォルダー)
- データセット(フォルダー)
- Datawrappers(フォルダー)
ローカリゼーション(フォルダー)
*.cs
ここで *私が生成するレポートの名前は
*.csにはエクスポートステートメントがあるため、MEFを使用してピックアップできます(これが関連するかどうかはわかりませんが、言及する価値があると考えました)。 *.csの名前空間はcompanyname.datashaper.plugin。 *レポートです。プロジェクト名とファイルの場所により、各プロジェクトのデフォルトの名前空間をCompanyName.datashaper.plugin。*レポート(それは単なるプラグインでした。*変更前のレポート)。
今、問題のために.. *.csの内部は、リソースマネージャーをインスタンス化しています。それはこのように見えます...
_resourceManager =
new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
Assembly.GetExecutingAssembly());
私のresxデザイナーファイルの中には、次のことがあります...
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;
}
リソースマネージャーへの私の電話はこのように見えます...
string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);
_currentcultureinfoは、cultureinfoオブジェクトです。
各プロジェクトのローカリゼーションフォルダーに4つの異なるRESXファイルがあります(**** Report.Resx、**** Report.fr-Ca.Resx、**** Report.en-Gb.Resx、*** *Report.de-de.resx)。
リソースマネージャーに電話をかけるとき、私は常に.resxからエントリを取得します... CultureInfoオブジェクトに関係なく、他の言語ファイルはありません。私は何を台無しにしましたか?
- >私の元の質問のクイックアップデートですが、これはMEF関連のように見えます。私はクラスを昔ながらの方法(new *Report())にインスタンスし、ローカリゼーションを呼び出しましたが、それは正常に動作します
解決
わかりました、私はこれを理解しました..私はそれが本当にメインアセンブリに埋め込まれているので、.resxファイルを取得しています。他のファイルは各言語の個別のDLLに組み込まれています。その後、集計コンテナを構築するのと同じフォルダーにコピーする必要があります。リソースマネージャーはすべての言語を表示します。