从资源文件里加载文件(C#)

原创 2006年06月02日 14:05:00
从资源文件里加载文件(C#
 
创建日期:2006-6-1
适用于:.NET Framework,C#
作者:Dogvane
 
1.概述:
 
资源文件很早就有了,在。Net时代里这个东西也不算稀奇,在进行多国语言化的时候
通常把不同翻译的文字存放到资源包里。以前资源文件除了放字符串以外,还可以放文件。不过在C#的工程里面,资源管理面板是空的(vc++工程里资源面板可以使用),无法直接编辑资源属性,不过每个WinForm都会带一个.resx的文件,这个文件就是WinForm的资源文件。如果通过添加新项目的方法,给工程里添加资源文件的话,产生的也是.resx文件。估计.resx文件是.net给c#新设计的资源文件格式。.resx以XML格式保存,主要存放字符串。对于文件我还没有找到添加到.resx的方法,因此我们需要用其它方法把文件打包到资源文件里面。
 
2.资源文件打包
 
       。net除了.resx资源文件格式外,还有一个.resources的资源文件格式。它可以支持把文件的加载,需要做通常的做法如下:
     System.Resources.ResourceWriter rw = new ResourceWriter(@"../../abc.resources");
     rw.AddResource("abc", new byte[10000000]);
     rw.Generate();
     rw.Close();
创建一个ResourceWriter的对象用于写资源文件。文件的后缀名必须是.resources,不让其它的系统无法识别。然后是通过AddResource的方法写资源信息,这个信息可以是一个字符串,也可以是一个byte数组,甚至可以是一个对象(image)。添加好以后就是Generate和close了。这样运行程序后,资源文件就制作完成了。
如果不需要把这个资源文件打包到exe程序或者dll程序里面,可以使用System.Resources.ResourceReader读取资源文件信息。
 
3.获取资源文件
 
资源文件打包好以后,下一步是把资源文件集成到项目里。方法有两个,一个是用控制台的方式编译项目,通过加载资源文件的方式把资源加载到exe里,另外一个简单很多,就是把直接把资源文件加载到工程里,vs会根据后缀名识别出来加载的文件属于资源文件,在进行编译的时候会自动把这个文件打包到资源文件里。如果编译后发现资源文件没有加到exe文件,可以设置资源文件的属性,把Build Action的属性设置为Embedded Resource。
 
资源文件成功加到exe文件后,下一步就是在程序里读取资源文件。
     System.Resources.ResourceManager rm = new System.Resources.ResourceManager("Resunce.abc", this.GetType().Assembly);
     byte[] bit = rm.GetObject("abc") as byte[];
 
通常是创建一个ResourceManager的对象,第一个参数是资源的名字,这里要注意的是“Resunce”是编译的时候,组件(命名空间)名字,“abc”是资源文件的名字。如果前面不是通过VS的工程文件进行编译,而是通过控制台方式直接编译,那么资源的名字不需要带组件的名字,只是“abc”就可以了。原因吗,我估计可能是vs在进行编译的时候,带了某些参数(确定了组件名),所以在项目读取资源文件的时候需要带组件名。
 
4.资源文件打包工具
在资源文件里加载文件就两个操作,一个是创建资源文件,一个是读取资源文件。在创建资源文件的时候如果没有什么特殊要求,可以通过资源打包工具来创建。在SDK里面的例子程序有一个打包工具,对其进行编译就可以用了。编译地址:Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Samples/Tutorials/resourcesandlocalization/reseditor
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

scrapy-Twisted资源文件

在Python3,Windows环境下安装scrapy框架时候经常会出现Twisted缺少该模块,同时提示“error: Microsoft Visual C++ 14.0 is required”错...
  • sinat_32651363
  • sinat_32651363
  • 2018年02月05日 21:50
  • 8

C# 自身内嵌其他程序或者文件并调用

  • 2011年07月18日 22:36
  • 663KB
  • 下载

从资源文件里加载文件或读取资源(C#)

从资源文件里加载文件(C#) 用途:1.       在进行多国语言化的时候.( 通常把不同翻译的文字存放到资源包里.) 2.       将图片打包进DLL的时候(icon等,自定义控件..) 资源...
  • xochenlin
  • xochenlin
  • 2008年11月06日 20:29
  • 19620

从资源文件里加载文件(C#)

1.概述: 资源文件很早就有了,在。Net时代里这个东西也不算稀奇,在进行多国语言化的时候通常把不同翻译的文字存放到资源包里。以前资源文件除了放字符串以外,还可以放文件。不过在C#的工程里面,资源管理...
  • killer000777
  • killer000777
  • 2008年11月07日 13:16
  • 407

C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部

http://www.cnblogs.com/bitzhuwei/archive/2012/05/24/SmileWei_EmbeddedApp.html 大家可以到(https:/...
  • y13156556538
  • y13156556538
  • 2016年11月10日 14:49
  • 2712

C++ DLL总结—静动态调用、导出类

1、 DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链...
  • WaitForFree
  • WaitForFree
  • 2014年07月19日 11:03
  • 4344

C# 获取资源文件中的DLL,调用DLL中的方法

转自:http://blog.163.com/kunkun0921@126/blog/static/16920433220127193511096/ using System; usin...
  • threadroc
  • threadroc
  • 2014年08月25日 16:52
  • 1209

Wxwidget 动态加载资源文件

一.创建自己的资源文件 你可以从一个xml文件中加载对话框,frame窗口,菜单条,工具条等等。不用c++代码去实现,这符合代码界面和代码分离的原则。我们可以使用DialogBlocks,XRCed...
  • BXD1314
  • BXD1314
  • 2016年08月15日 16:14
  • 468

dll详解

only_over 级别: Vip Group精华: 0 发帖: 565威望: 534 点金钱: 5286 RMB贡献值: 192432 点曾获勋章: 0 个在线时间:321(小时)注册时间:200...
  • zgwangbo
  • zgwangbo
  • 2006年01月13日 09:51
  • 5485

vc加载动态链接库

1.概论   先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无...
  • piaopiaopiaopiaopiao
  • piaopiaopiaopiaopiao
  • 2014年06月26日 11:22
  • 1483
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从资源文件里加载文件(C#)
举报原因:
原因补充:

(最多只允许输入30个字)