NETCF开发之使用资源文件

1.1.1    使用资源文件

在基于.NET Compact Framework的应用程序中,可以使用资源文件将资源嵌入到程序集。使用资源文件的一个主要好处是可以将应用程序或类库DLL文件中的所有特定于语言和区域设置的元素(如标题和用户消息等)从应用程序代码中分离出来。为此,开发人员需要为所支持的每种语言创建单独的资源文件。资源文件实际是一个基于XML数据格式的文本文件,其扩展名为.resx。清单25-3显示了从资源文件中节选的一部分内容。

 

清单25-3:资源文件中的部分内容

<root>

        <data name="MainFormCaption">

                <value>CRM System</value>

        </data>

        <data name="UserWelcome">

                <value>Hi, How are you!</value>

        </data>

        <data name="ErrorMessage1">

                <value>Oh no, Something went wrong!</value>

        </data>

</root>

 

 

 

 

 

 

此时扩展名为.resx的资源文件使用起来仍然不够方便,为此Visual Studio 2005支持使用基于.NET Compact Framework的资源文件生成器(ResGen.exe)将资源文件编译成二进制的映像文件。编译后的资源文件通常具有.resources扩展名。例如,开发人员可以创建一个名为Demo.resx的资源文件,然后在.NET Framework SDKSDK命令提示下执行以下命令,将该资源文件编译成名为Demo.resources的二进制映像文件:

 

resgen Demo.resx Demo.resources

 

将基于文本的.resx文件编译成二进制.resource文件后,为了能够在代码中直接引用该资源文件中的资源,还必须将该映像文件进一步编译为能够直接通过代码引用的.NET程序集。为此Visual Studio 2005支持使用一个名为程序集链接器 (AL.exe) .NET工具来完成映像文件到.NET程序集的编译。例如,要将之前生成的Demo.resources映像文件编译为.NET程序集,可在.NET Framework SDKSDK命令提示下执行以下指令:

 

al /t:library /out:Demo.resources.dll /link:Demo.resources

 

上述命令执行成功后,将在映像文件所在目录下生成一个程序集DLL文件。将资源文件最终编译为.NET程序集后,便可以通过System.Resources命名空间中的ResourceManager类访问资源文件中定义的资源。下面演示使用ResourceManager类访问字符串资源的简单示例代码:

 

Dim asm As Assembly = Assembly.Load("Demo.resources")

Dim rm As New System.Resources.ResourceManager("Demo", asm)

Dim caption As String = rm.GetString("WelcomeCaption")

 

 

在上面这个示例中,使用ResourceManager类实例的GetString访问获取字符串资源。对于资源文件中定义的图像和其它类型的文件资源,还可以使用GetObject方法获取资源数据流,然后将数据流转换成可正常编程访问的实例对象。

除了使用ResourceManager类访问资源之外,还可以通过ResGen.exe生成一个强类型资源类,将可访问资源以类成员属性的形式对外公开。例如,要将之前创建的Demo.resx资源文件生成Visual Basic .NET可访问的强类型资源类,可在调用ResGen.exe命令时将/str参数和"vb"值添加到命令行:

 

resgen Demo.resx Demo.resources /str:vb

 

该命令行指令将生成一个名为Demo.vbVisual Basic类定义的源文件。该源文件包含一个名为Demo的类。在该类中,存在通过ResourceManager实现强类型化属性的代码,如以下代码框所示,在生成的Demo类中定义了一个字符串类型的WelcomeCaption属性:

 

Friend Class Demo

……

'''<summary>

'''  查找类似 You are Welcome! 的本地化字符串。

'''</summary>

Shared ReadOnly Property WelcomeCaption() As String

Get

Return ResourceManager.GetString("WelcomeCaption", resourceCulture)

End Get

End Property

End Class

 

以上简要介绍了如何将资源文件编译为程序集,以及如何使用 ResourceManager 类和强类型资源类来访问这些资源文件。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值