.net中使用资源文件
- .net 支持三种文件类型的resource:.txt .resx .resources system.resources 名字空间支持三种资源文件:
- 当你把resx文件通过vs加入到.net工程中后,之后编译时,它会被转化为resources文件并embed到assembly中。
- System.resources.resourceManager负责读取.net assembly中嵌入的resources文件中的资源信息。
- 三种文件类型,必须要转为resources文件,才能被resourcemanager读取(显然的)。ResGen.exe来干这事情。
- c++/CLI, vb.net, c#,大家都可以用resx文件是自然的。只不过在Vs里添加resx文件时,c#工程要支持的更完备些:直接替你封装好了对resourcemanager的使用。
- 推荐工具
resgen.exe:sdk 中的工具,专门用来做资源文件类型之间的转换。支持 .txt <-> .resx <-> .resources 之间的转换。
resourcer:专门用来创建资源文件,简单易用,支持 .resx 和 .resources 文件格式。(http://www.aisto.com/roeder/dotnet)
.net reflector:用来浏览 assembly。如果你不确定一个资源文件的完整名时能用这个工具在 assembly 中查看。(http://www.aisto.com/roeder/dotnet)
.txt 文件,只能有字符串资源。因为不能被嵌入到 assembly 中,所以非常容易暴露,被客户修改。最大缺点是仅支持字符串资源,所以不推荐使用。
.resx 文件,由 xml 组成,能加入所有资源,包括二进制。同样不能被嵌入到 assembly 中。在 system.resources 名字空间中有专用读写的类。vs.net 创建这种文件然后将其转成 .resources 文件并根据设置将其嵌入到 assembly 中。
.resources 文件,pe 格式,能加入所有资源。唯一能被嵌入到 assembly 的文件,在 system.resources 名字空间中有专用读写的类。
参考:http://www.sudu.cn/info/html/edu/20071226/23599.html