0

我正在尝试在 WinForms 应用程序中使用卫星程序集进行本地化。目录结构如下:

    • 程序.exe
      • 程序.resources.dll

在 Program.exe 中,此代码在Main方法中执行:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");

Application.Run(new Form());

我检查了 FUSLOGVW.exe 输出:

*** 装配活页夹日志条目(5/30/2012 @ 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,Version=1.0.0.0,Culture=de,PublicKeyToken=...
 (完全指定)
日志:Appbase = file:///D:/tmp/bin/
日志:初始 PrivatePath = NULL
日志:动态基础 = NULL
日志:缓存基础 = NULL
日志:AppName = Program.exe
调用程序集:程序,版本=1.0.0.0,文化=中性,PublicKeyToken=....
===
LOG: 开始绑定原生镜像 Program.resources, Version=1.0.0.0, Culture=de, PublicKeyToken=....
警告:未找到匹配的本机图像。
LOG:从 D:\tmp\bin\de\Program.resources.dll 加载的 IL 程序集。

这看起来不错,但是字符串并没有被本地化——仍然使用 Program.exe 中的默认字符串。

要获取字符串,我使用 Visual Studio 生成的Res类从Res.resx.

我在这里想念什么?

编辑:为那些比我更了解它的人添加了完整的 FUSLOGVW 输出。

4

2 回答 2

0

这是我在编写会在外部生成附属程序集的自动构建脚本时犯的巨大错误。问题是,在卫星程序集中生成类时,我错过了Res课程。难怪它不起作用。

经过长时间的努力,我今天早上发现了问题。

于 2012-05-31T07:22:54.763 回答
-1

我相信你的文化标识符在这条线上是错误的:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");

CultureInfo 的文化标识符采用“语言代码-国家代码”的形式。例如,“en-US”表示美国英语,“en-GB”表示英国/英国英语。

试试“de-DE”。

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.name%28v=vs.95%29.aspxhttp://msdn.microsoft.com/上有一些进一步的阅读en-us/goglobal/bb896001.aspx获取文化标识符列表。

于 2012-05-30T14:45:16.253 回答