演练:从附属程序集中加载资源

本演练演示如何使用 适用于 Visual Studio 的 WPF 设计器从附属程序集中加载资源字符串。 这简化了 WPF 应用程序的本地化。

在本演练中,您将执行下列任务:

  • 创建项目。

  • 启用附属程序集。

  • 创建和访问资源字符串。

完成本演练后,您将具有一个从附属程序集中检索字符串的简单应用程序。

提示

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置

系统必备

您需要以下组件来完成本演练:

  • Visual Studio 2010.

创建项目

第一步是为应用程序创建项目。

创建项目

  1. 使用 Visual Basic 或 Visual C# 新建一个名为 ResourceTest 的 WPF 应用程序项目。 有关更多信息,请参见如何:创建新的 WPF 应用程序项目

    MainWindow.xaml 将在 WPF 设计器中打开。

  2. Button 控件从工具箱中拖动到设计图面。

  3. 双击此按钮为按钮控件创建一个 Click 事件处理程序。

启用附属程序集

通过对 AssemblyInfo 和项目文件进行一些细小的更改来启用附属程序集。

启用附属程序集

  1. 在代码编辑器中打开 AssemblyInfo.cs 或 AssemblyInfo.vb。 若要在解决方案资源管理器中查看文件,可能需要单击**“显示所有文件”**。

  2. 取消对以下行的注释。

    //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
    
    '<Assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
    
  3. 保存解决方案。

  4. 在解决方案资源管理器中,右击 ResourceTest 项目,并选择**“卸载项目”**。

    Visual Studio 将卸载 ResourceTest 项目。

  5. 在解决方案资源管理器中,右击 ResourceTest 项目,并选择**“编辑 ResourceTest.csproj”“编辑 ResourceTest.vbproj”**。

    项目文件将在 XML 编辑器中打开。

  6. 在与其他 <PropertyGroup> 元素相同的级别插入以下 XML。

    <PropertyGroup>
        <UICulture>en-US</UICulture>
    </PropertyGroup>
    
  7. 保存并关闭文件。

  8. 在解决方案资源管理器中,右击 ResourceTest 项目,并选择**“重新加载项目”**。

  9. 在解决方案资源管理器中,将默认 RESX 文件的名称从 Resources.resx 改为 Resources.en-US.resx。

  10. 在“属性”窗口中,清除资源文件的**“自定义工具”**值。

在附属程序集中创建一个资源字符串

现在您将在资源文件中创建一个字符串。

在附属程序集中创建一个资源字符串

  1. 在解决方案资源管理器中,双击 Resources.zh-cn.resx。

    Resources.zh-cn.resx 将在资源设计器中打开。

  2. 将默认字符串的名称从**“String1”**改为 helloWorldString。

  3. 将**“helloWorldString”**的值改为 Hello world。

  4. 保存并关闭资源编辑器。

访问资源字符串

使用 ResourceManager 类,在附属程序集中访问该字符串。

访问资源字符串

  1. 在代码编辑器中打开 MainWindow.xaml.cs 或 MainWindow.xaml.vb。

  2. 在 MainWindow.xaml.cs 或 MainWindow.xaml.vb 的开头插入以下代码。

    using System.Reflection;
    using System.Resources;
    
    Imports System.Reflection
    Imports System.Resources
    
  3. 将下面的代码插入到 button1_Click 事件处理程序中。

    ResourceManager rm = new ResourceManager(
        "ResourceTest.Properties.Resources", 
         Assembly.GetExecutingAssembly());
    MessageBox.Show(rm.GetString("helloWorldString"));
    
    Dim rm As New ResourceManager( _
        "ResourceTest.Resources", _
        Assembly.GetExecutingAssembly())
    MessageBox.Show(rm.GetString("helloWorldString"))
    
  4. 按 F5 生成并运行该应用程序。

  5. 单击按钮查看从附属资源加载的字符串值。

  6. 打开 Debug/zh-cn 文件夹查看附属程序集,该程序集名为 ResourceTest.resources.dll。

请参见

参考

ResourceManager

其他资源

使用 WPF 设计器进行部署和本地化

编码和本地化