カルチャニュートラルなXAMLファイル、一部のカルチャニュートラルアイコン、ローカライズされた文字列を含むローカライズされたプログラムで、すべて見つけることができますか?どのような手配をしても、自分のリソースタイプの1つにアクセスできないことがわかります。C#.NetでXAMLリソースとRESXリソースの両方をフェッチするときのメインアセンブリと衛星アセンブリの問題
私がいる問題は、次のとおりです。
MainWindow.xamlファイルは常にEN-USのサテライトアセンブリに構築します。 UltimateResourceFallbackLocationがMainAssemblyに設定されている場合、WindowのBAMLは検出されず、InitializeComponent()呼び出しで例外が発生します。ですから、私はUltimateResourceFallbackLocationを "Satellite"に設定することを余儀なくされています。
Resources.resxファイルに含まれるカルチャーニュートラルアイコンリソースは、常にメインEXEアセンブリに組み込まれ、UltimateResourceFallbackLocationがSatelliteに設定されている場合は見つかりません。これは、MainWindow.xamlファイルの要件と完全に互換性がないように見えます。
UICultureとNeutralResourcesLanguageを完全に削除すると、XAMLとRESXの両方のデータをMainAssemblyに強制的に組み込むと、カルチャ固有の文字列は機能しません。
問題は何ですか:私は間違っていますか?どのようにしてこれらの3つのタイプのリソースにすべてアクセスできるようにプロジェクトを構築するのですか?
編集(作業溶液が、それは間違っているようだ):
私は重複リソースの名前を変更し、それを完全に複製することにより、サテライトアセンブリに構築するために、私の文化ニュートラルRESXファイル、Resources.resxを得るために管理しています.en-US.resxを設定し、Resources.resxをBuild Action:Noneに設定します(Resources.resxはResources.Designer.csファイルの生成にのみ使用されますが、メインEXEアセンブリにデータを挿入しません)。
私のカルチャーニュートラルなリソースはすべてen-USアセンブリに入っているので、このプログラムは3つすべてのケース(ローカライズされた文字列、resxのローカライズされていないデータ、XAMLの非ローカライズデータ)で動作するようになりました。これを達成するための.resxファイルはかなりばかげているようです。
これは愚かですか?これを行うよりスマートな方法はありますか?
あなたは私に同様の問題の解決策を見つけるのを助けてくれました:http://www.mathewweaver.com/2013/11/internalgetsatelliteassembly-finding.html – mweaver
喜んで助けてください:) – chridam