RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
为.Net程序集添加资源
  • 作者:xiaoxiao
  • 发表时间:2020-12-23 10:57
  • 来源:未知

在.Net结构中,程序集Assembly(也称着程序集或托管Dll)是自我描述的安装单元,它可以只包括一个PE(可移植可执行)格式的Dll或exe文件,也可以由多个文件组成,例如资源(位图、JPEG文件、字符串表等)、Dll和exe等。 其中,资源是一个范围广泛的概念,可以由多种元素组成,包括与用户交互的界面元素(如位图、图标或光标)、应用程序所需数据的自定义文件以及安装 API 使用的版本文件、菜单和对话框等都可以作为资源。 资源是可以重用的,在必要的时候也能对资源进行编辑修改,当我们这样做时,最好能将这些资源文件独立出来,以类似.Net模块的方式来构建程序集资源,使资源文件独立于源代码。这样,不但可以在不同的程序集中自由引用这些资源,还可以使非专业编程人员很容易地修改资源(当然,通过程序员,或者简单的批处理文件就可以把他们重新编译为新的资源文件),这种独立地对资源文件进行的修改不会引发对引用它的程序集的影响。同时,使用资源文件还有助于把应用程序本地化为不同的语言。辅助程序集正是因为只包含资源而不包含程序代码才广泛用于应用程序的本地化编程。 .Net结构对资源文件提供了大量支持。使用Visual Studio.Net集成开发环境IDE很容易创建资源文件,把资源添加到工程中的方法和添加窗体、类库一样简单,唯一不同的是你需要设置资源的“BuildAction”属性为“Embedded Resource”,此后,就可以使用这些资源。 创建资源 从上面可以知道,字符串表是极常见的一种资源。要创建这类资源文件,有以下两种方式: 1)、使用.Net命令行工具ResGen创建。首先创建包含资源内容的文本文件,这可以使用一般的文本编辑软件如记事本、EditPlus等。该文本文件由所需要的“键值对”组成,键的名称可以在程序中引用,设置键名后把字符串值赋予该键即可完成文件的创建。作为示例,以下语句段产生这样的资源,按下面的格式保存为userinfo.txt文件:

Username="Songh"; Sex="Boy"; Birthday="1973-01-15"; Salary="5000RMB";
然后,把文本文件转换为资源文件,这仍然通过ResGen工具来实现。执行以下语句:ResGen userinfo.txt,就将生成资源文件userinfo.resources。另外,ResGen还可以创建基于XML格式的.resX资源文件,执行以下命令ResGen userinfo.resources userinfo.resx 就将生成Xml格式的资源userinfo.resx。不过,ResGen工具不支持图象资源的操作,下面的方法就不具有这样的限制。 2)、使用ResourceWriter类 为易于创建资源文件,.Net结构提供了ResourceWriter类以支持图象等各种资源类型的创建。ResourceWriter类包含的方法能以系统默认的格式将资源写入输出文件或输出流。与方法1)不同的是,这里统一在一个过程中完成。 要创建一个资源文件,请调用ResourceWriter类的构造函数初始化类实例并至少提供流名或文件名。资源的实际内容通过调用AddResource方法来完成,AddResource方法将资源指定为名称和值对。资源的实际写入需要调用Generate方法来实现,不过,在调用Close方法关闭该ResourceWriter时将隐式调用Generate方法。 ResourceWriter.AddResource()方法向要写入资源的列表中添加资源。在创建ResourceWriter类实例后,该方法可以添加至多2GB的资源,下面的重载方法之一用于向资源列表中添加string资源: