使用资源文件要注意的一些地方
2006-01-11 16:05
411 查看
资源文件的使用真是挺繁的,但是会用了以后就很简单了。
到CSDN搜索一下,里面有一篇文章,介绍了资源文件的创建和使用,一开始没有弄清楚,
原来是这么回事。
首先,你必须把要使用的资源文件编译到资源文件中,这个资源文件是控制台应用程序产生的,不是添加的name.resx文件。
using System ;
using System.Drawing ;
using System.Resources ;
namespace Resources
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
ResourceWriter rw = new ResourceWriter ( "Image.resources" ) ;
Image canceloff = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\link.gif") ;
Image canceloff1 = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\haozhan.gif") ;
Image canceloff2 = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\ejobshow.gif") ;
rw.AddResource ( "link.gif" , canceloff ) ;
rw.AddResource ( "haozhan.gif" , canceloff1 ) ;
rw.AddResource ( "ejobshow.gif" , canceloff2 ) ;
rw.Generate ( ) ;
rw.Close ( ) ;
}
}
}
把上面的程序编译,执行exe文件后就得到了Image.resources文件,你可以打开看看,里面都是二进制代码。
把这个Image.resources添加到你要使用这些图片的工程中,确定加入以后文件Image.resources属性的“生成操作”是“嵌入的资源”,
然后就可以使用了,在需要使用的地方添加以下的代码:
ResourceManager rm=new ResourceManager("myWebControl.Image",Assembly.GetExecutingAssembly());
System.Drawing.Image img1=(System.Drawing.Image)rm.GetObject("link.gif");
注意:new ResourceManager的参数"myWebControl.Image" 有点麻烦:
myWebControl是你当前程序的命名空间(这里不是生成这个资源文件的命名空间,我没有注意,这里搞了好一会,没有理解好),Image是资源文件名,
特别要注意的是,一定要把命名空间写上,不然会有错误,这个也花了好长时间,因为msdn里面没有清楚讲解这个参数怎么写,一般都直接写个Image,所以有错误:
System.Resources.MissingManifestResourceException: 未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源。请确保已将“Image.resources”正确嵌入或链接到程序集“myWebControl”。 baseName: Image locationInfo: <null> resource file name: Image.resources assembly: myWebControl, Version=2.0.0.2, Culture=neutral, PublicKeyToken=null
你看这个错误提示:请确保已将“Image.resources”正确嵌入或链接到程序集“myWebControl”。
好象告诉你没有把“Image.resources”加入工程一样,但是你的确加了,根本不知道怎么回事,就是因为你没有写命名空间或者命名空间写错误了。
到CSDN搜索一下,里面有一篇文章,介绍了资源文件的创建和使用,一开始没有弄清楚,
原来是这么回事。
首先,你必须把要使用的资源文件编译到资源文件中,这个资源文件是控制台应用程序产生的,不是添加的name.resx文件。
using System ;
using System.Drawing ;
using System.Resources ;
namespace Resources
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
ResourceWriter rw = new ResourceWriter ( "Image.resources" ) ;
Image canceloff = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\link.gif") ;
Image canceloff1 = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\haozhan.gif") ;
Image canceloff2 = Image.FromFile (@"E:\源码\myWebControl\myWebControl\IMG\ejobshow.gif") ;
rw.AddResource ( "link.gif" , canceloff ) ;
rw.AddResource ( "haozhan.gif" , canceloff1 ) ;
rw.AddResource ( "ejobshow.gif" , canceloff2 ) ;
rw.Generate ( ) ;
rw.Close ( ) ;
}
}
}
把上面的程序编译,执行exe文件后就得到了Image.resources文件,你可以打开看看,里面都是二进制代码。
把这个Image.resources添加到你要使用这些图片的工程中,确定加入以后文件Image.resources属性的“生成操作”是“嵌入的资源”,
然后就可以使用了,在需要使用的地方添加以下的代码:
ResourceManager rm=new ResourceManager("myWebControl.Image",Assembly.GetExecutingAssembly());
System.Drawing.Image img1=(System.Drawing.Image)rm.GetObject("link.gif");
注意:new ResourceManager的参数"myWebControl.Image" 有点麻烦:
myWebControl是你当前程序的命名空间(这里不是生成这个资源文件的命名空间,我没有注意,这里搞了好一会,没有理解好),Image是资源文件名,
特别要注意的是,一定要把命名空间写上,不然会有错误,这个也花了好长时间,因为msdn里面没有清楚讲解这个参数怎么写,一般都直接写个Image,所以有错误:
System.Resources.MissingManifestResourceException: 未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源。请确保已将“Image.resources”正确嵌入或链接到程序集“myWebControl”。 baseName: Image locationInfo: <null> resource file name: Image.resources assembly: myWebControl, Version=2.0.0.2, Culture=neutral, PublicKeyToken=null
你看这个错误提示:请确保已将“Image.resources”正确嵌入或链接到程序集“myWebControl”。
好象告诉你没有把“Image.resources”加入工程一样,但是你的确加了,根本不知道怎么回事,就是因为你没有写命名空间或者命名空间写错误了。
相关文章推荐
- 使用资源文件应该注意的地方
- Thinkphp拖拽上传文件-使用webuploader插件(自己改动了一些地方)——分片上传
- (TIP)service使用process类调用bat文件时应该注意的一个地方
- JavaScript使用过程中需要注意的地方和一些基本语法
- 文件IO一些注意的地方
- Swift开发过程中常用到的一些使用技巧和注意的地方
- vim中编辑不同编码的文件时需要注意的一些地方
- 在VC中使用资源文件应该注意的问题
- php中使用include(require)嵌套包含文件时的一些注意问题
- 004,配置文件之使用rabbitmq-env.conf,rabbitmq.config在生产环境的应用和和一些注意的问题
- iOS 不使用nib文件需要注意的地方
- 关于SpringMVC上传文件的一些细节和需要注意的地方
- Thinkphp拖拽上传文件-使用webuploader插件(自己稍微改动了一些地方)——不切片上传
- Gallery使用 主要记录一些 注意的地方
- Mysql分区表使用的一些限制和需要注意的地方
- 利用配置文件使用一些可配置的资源
- 使用指针赋值一些需要注意的地方
- Mysql分区表使用的一些限制和需要注意的地方
- iOS中使用iCloud一些需要注意的地方(Xcode7.2)
- VS2015配置Entity Framework Power Tools Bate4,还有一些使用与注意的地方