WinForms アプリケーションでのローカリゼーションにサテライト アセンブリを使用しようとしています。ディレクトリ構造は次のとおりです。
- 置き場
- プログラム.exe
- で
- Program.resources.dll
Program.exe では、このコードは次のMain
メソッドで実行されます。
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
Application.Run(new Form());
FUSLOGVW.exe の出力を確認しました。
*** アセンブリ バインダー ログ エントリ (2012 年 5 月 30 日 @ 5:19:37 PM) *** 操作に失敗しました。 バインド結果: hr = 0x80070002。システムは、指定されたファイルを見つけることができません。 アセンブリ マネージャーの読み込み元: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 実行可能ファイル D:\tmp\bin\Program.exe の下で実行 --- 詳細なエラー ログが続きます。 === プレバインド状態情報 === ログ: ユーザー = paulius_l ログ: DisplayName = Program.resources、バージョン = 1.0.0.0、カルチャ = de、PublicKeyToken = ... (完全指定) ログ: Appbase = file:///D:/tmp/bin/ ログ: 初期 PrivatePath = NULL ログ: 動的ベース = NULL ログ: キャッシュ ベース = NULL ログ: AppName = Program.exe アセンブリの呼び出し: Program、Version=1.0.0.0、Culture=neutral、PublicKeyToken=.... === LOG: ネイティブ イメージ Program.resources、Version=1.0.0.0、Culture=de、PublicKeyToken=.... のバインドを開始します。 WRN: 一致するネイティブ イメージが見つかりません。 ログ: D:\tmp\bin\de\Program.resources.dll から読み込まれた IL アセンブリ。
これは問題ないように見えますが、文字列はローカライズされません。Program.exe のデフォルトの文字列が引き続き使用されます。
文字列を取得するには、.NET から Visual Studio で生成されRes
たクラスを使用しRes.resx
ます。
ここで何が欠けていますか?
編集:私よりもよく理解している人のために、FUSLOGVWの完全な出力を追加しました。