質問

私は正しいリソースファイルエントリを取得する問題を抱えており、いくつかのヘルプが必要です...これが私のシナリオです

この形式に従う大規模なレポートソリューションの一部である一連のプロジェクトがあります

プラグイン。****レポート

  • 参照(フォルダー)
  • 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に組み込まれています。その後、集計コンテナを構築するのと同じフォルダーにコピーする必要があります。リソースマネージャーはすべての言語を表示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top