65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 ResX Builder 创建卫星程序集

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.10/5 (9投票s)

2010年11月14日

CPOL

3分钟阅读

viewsIcon

30913

downloadIcon

699

如何使用 ResX Builder 创建卫星程序集。

引言

Visual Studio 中的本地化功能非常出色,而且我发现它几乎适用于所有情况。但是,有一个问题可能会导致很多麻烦:当应用程序已经构建完成后,如何部署新的卫星程序集?对于许多小型项目来说,这并不是一个问题,开发人员只需部署一个新版本即可。然而,这并不总是容易的选择。如果能够创建一个卫星程序集并将其上传到应用程序,而无需重新构建,那该多好!当然可以!让我们开始了解如何操作...

传统方法:如果你有时间和精力去研究,你就会使用 resgen.exeal.exe 这两个包含在 Visual Studio 安装中的工具。Resgen.exe 会接收一个 RESX 文件并输出一个 .resources 文件。然后,你需要使用大量的不同(且棘手的)语法命令,最终编写出类似这样的内容

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\resgen.exe" 
    "HelloResX.ja-JP.resx" "ResXTest.HelloResX.ja-JP.resources"

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\al.exe" /t:lib 
   /out:"ja-JP\ResXTest.resources.dll" /culture:ja-JP 
   /embed:"ResXTest.HelloResX.ja-JP.resources"

看起来很简单,但我告诉你……有时它可能会导致严重的麻烦。好了,为了尽量减少麻烦,我编写了一个不错的 GUI 工具,希望对你们中的一些人有所帮助。让我们开始解释 ResXBuilder 吧...

使用 ResX Builder 简化流程

你只需要启动该工具,输入一些信息,然后单击“构建”,然后瞧;你的新卫星程序集就可以部署了。

Main.PNG

如上图所示,主区域是一个网格,基本上它的作用是编辑现有 .resx 文件的值。例如,假设你有一个名为 HelloResX.resx 的默认 .resx 文件;你需要告诉该工具在哪里找到模板文件(你的默认 .resx 文件),然后单击“加载”。这将把所有名称/值对带入一个可以编辑的网格中。翻译完成后,只需选择一种区域性,并指定资源命名空间和项目名称,然后单击“构建”。就是这样;你就可以部署了!

一个演示应用程序

在附带的源代码中,你将找到一个演示项目。在其中,你将看到以下简单的代码

static void Main(string[] args)
{
   List<string> cultures = new List<string>();
   cultures.Add("en-US");
   cultures.Add("zh-CHS");
   cultures.Add("ja-JP");
   cultures.Add("vi-VN");
   cultures.Add("ru-RU");

   cultures.ForEach(HiBye);
   Console.ReadLine();
}

private static void HiBye(string cultureCode)
{
   HelloResX.Culture = CultureInfo.GetCultureInfo(cultureCode);
   Console.WriteLine("Culture: {0}", cultureCode);
   Console.WriteLine("Hello: {0}", HelloResX.Hello);
   Console.WriteLine("Goodbye: {0}", HelloResX.Goodbye);
   Console.WriteLine();
}

基本上,我只有一个资源文件:HelloResX.resx,并且由于它是强类型的,我们可以直接调用其属性。默认情况下,它将使用当前区域性,但如果你像上面的代码中那样更改 Culture 属性,它将尝试从 bin 文件夹中找到所需的卫星程序集。我在上面的代码中所做的是为 5 种不同的区域性设置区域性 5 次,并将名称/值对写入控制台。当然,在实际应用程序中,你不知道要加载哪些区域性,你需要让用户从下拉菜单或其他方式中选择他们想要使用的区域性,然后从那里加载它。下面的图片显示了我在将卫星程序集添加到 bin 文件夹之前和之后的样子。

TestBefore.PNG

以前

TestAfter.PNG

操作后

结论

卫星程序集;非常有用……生成它们的命令行工具;很糟糕……处理此问题的 GUI 工具;使生成卫星程序集快速而容易。尽情享受吧!

© . All rights reserved.