正确的使用资源文件
2007年06月19日 | 11:43 上午分类:未分类 |
有时需要在项目中将一些资源嵌入到程序集中然后进行调用。
在vs中可以使用ResourceWriter类来创建一个resources资源文件
如:


using …(ResourceWriter rw = new ResourceWriter("test.resources")) 

…{
rw.AddResource("Name", "aaaa");
rw.AddResource("Age", "20");
rw.AddResource("Logo", System.Drawing.Image.FromFile(@"C:\null.jpg"));
rw.Generate();
rw.Close();
}编译,执行.exe即可生成 test.resources资源文件,下面要做的就是将该文件复制到项目中。
注意的时:该文件属性中的“生成操作项”要选为“嵌入的资源”才行

生成资源文件比较简单,但调用时如果不注意的话,就会失败,就会抛出下面的错误:

但是实际上资源文件已经嵌入了。

using …System;
using System.Collections.Generic;
using System.Text;
using System.Resources;
using System.IO;
using System.Drawing.Imaging;
using System.Reflection;
namespace ConsoleApplication1 
…{
class Program 
…{
static void Main(string[] args) 
…{
Console.ReadLine();
using (ResourceWriter rw = new ResourceWriter("test.resources")) 
…{
rw.AddResource("Name", "aaaa");
rw.AddResource("Age", "20");
rw.AddResource("Logo", System.Drawing.Image.FromFile(@"C:\null.jpg"));
rw.Generate();
rw.Close();
}
Console.WriteLine("Create Done");
Console.ReadLine();
ResourceManager rm = new ResourceManager("ConsoleApplication1.test", Assembly.GetExecutingAssembly());
System.Drawing.Image img1 = (System.Drawing.Image)rm.GetObject("Logo");
Console.WriteLine(img1.Size.Width);
Console.ReadLine();
}
}
}注意这里:
ResourceManager rm = new ResourceManager("ConsoleApplication1.test", Assembly.GetExecutingAssembly());
第一个参数"ConsoleApplication1.test"弄错时,就会出现上面提到的错误。正确的应该是:
程序集的NameSpace.资源文件的文件名
这样就不会出错了
转载时务必以超链接形式标明文章原始出处和作者信息。
看不懂…潜水…
[回复Ta]