随着Visual Studio.NET的发布,资源文件格式从传统的.rc文件转变为基于XML的.resX文件,这种转变使得资源管理更加灵活和强大。但与此同时,也带来了一些不便,比如无法直接修改嵌入的资源,或者不方便地向程序集中添加与设计器无关的资源。为了解决这些问题,微软提供了一个简单的资源编辑器示例应用程序,但这个工具只支持嵌入二进制数据,并不便于资源的更新。
为了提高资源管理的效率,Resource Editor.NET工具应运而生。它能够生成.resources或.resX文件,并保存一个.resourcesConfig文件来记录添加的资源文件的位置。目前,该工具支持位图、图标和字符串资源。在可用性测试和语言适应过程中,它节省了大量的时间。
Resource Editor.NET允许通过使用System.Resources命名空间中的类,将位图、图标和资源字符串添加到程序集中。当添加一个命名资源时,对象的完整路径信息会被保留,并保存到一个与.resources或.resX文件同名的.resourcesConfig XML文件中。然后,可以将这两个文件添加到项目中。
<?xml version="1.0"?>
<Resources Extension=".resources">
<Resource Name="ButtonEnglishNormal" Type="System.Drawing.Bitmap" FileName="C:\CodeSubmissions\ResourceEditor.NET\images\bt-english.bmp" Value="" />
<Resource Name="ButtonEnglishDisabled" Type="System.Drawing.Bitmap" FileName="C:\CodeSubmissions\ResourceEditor.NET\images\bt-english-na.bmp" Value="" />
...
</Resources>
可以自由地重命名资源或更改指定的文件。当点击保存时,XML文件和选定的.NET资源二进制格式文件将被生成。也可以重新打开文件,以便在下一次构建过程中包含对现有位置指定的位图或图标文件的任何修改。只需要将生成的.resources或.resX文件添加到想要嵌入资源的程序集中。
虽然这不是使用这个工具的目的,但可以使用它来刷新与Visual Studio.NET中内置的表单设计器关联的位图或图标。这需要一个额外的步骤。首先,打开表单设计器创建的默认.resX文件,以获取资源名称到编辑器中。然后,通过编辑器重新关联原始文件与表单设计器分配的资源名称。保存结果文件以覆盖原始.resX文件。
不幸的是,如果之后使用表单设计器添加或删除位图或图标,需要重复这个过程以包含这些更改。然而,可以使用文本编辑器操作.resourcesConfigXML文件来解决这个问题。
Resource Editor .NET有两种模式。第一种是标准UI模式,可以打开应用程序到一个空的资源集或使用现有的.resourcesConfig文件作为其第一个参数。第二种是添加命令行开关/Refresh,这将抑制GUI但会重新生成与.resourcesConfig文件关联的.resources或.resX文件。使用这个工具的最简单方法是将其添加为Visual Studio .NET的外部工具。然后,当在项目资源管理器中选择.resourcesConfig文件时,可以从Visual Studio环境中刷新或编辑资源。
可以在任何文本编辑器中直接编辑.resourcesConfigXML文件,然后使用Resource Editor .NET应用更改。在全局重命名或复制和重命名资源以加快进程时广泛使用这种方法。实际上,除非正在添加一两个资源,否则很少再打开GUI了。
可以使用.NET Framework System.Drawing.Bitmap类支持的任何图形图像文件格式,并不局限于位图。然而,只测试了JPEG和BMP。
提供了C#源代码,但这不是使用这个工具所必需的。然而,它确实使用了PropertyGrid控件,并展示了实现自定义属性编辑器的一种方式,用于捕获和保存文件的文件名。或者,可能想要自己添加一些额外的功能。
可以使用文本编辑器对XML文件进行小的修改,并使用它来轻松管理创建本地化应用程序时的文化特定资源,例如从..\en更改为..\es,以向应用程序添加英语和西班牙语文化。
由于一些内部资源文件名的怪癖,用于ResourceManager类的内部资源文件名结果是Filename.Resources.AssemblyName,以从添加到程序集中的资源文件中提取资源。