荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Mic (酷鱼), 信区: DotNET
标  题: Re: 嵌入资源文件的问题
发信站: 荔园晨风BBS站 (Thu Aug 15 20:36:05 2002), 站内信件

回复人: xinsb([微软]小楼一夜听春雨)
您可以通过使用resourcer这个资源管理工具来生成resource文件,然后在程序中
读取。

假设resource文件名为sound.resources,其中包含一个name为“Chimes",type为
System.Byte[]的wav文件。已经添加到project中。

具体的代码如下:

Assembly thisAssembly = Assembly.GetAssembly(Type.GetType("resSound.
Form1"));

ResourceManager rm= new ResourceManager("resSound.sound",thisAssembly);


System.Byte[] sound;
sound=(System.Byte[])rm.GetObject("Chimes");
//

另补充几点说明:
1。必须加入using System.Reflection;否则Assembly不可用。
2。resSound为你应用程序的名字空间,使用时必须换成你自己的。
3。resSound.sound 中的sound为你的资源文件的名称,使用时也必须换成你自己
的。
4。必须把你的资源文件添加入你的项目中。
5。还有最关键的一点,一定使用:
Assembly thisAssembly = Assembly.GetAssembly(Type.GetType("resSound.
Form1"));
这个我可是吃过亏的,因为我查很多资料都不是这样写的,我估计你也不是这样写
,而是写成
ResourceManager rm = new ResourceManager("sound", Assembly.
GetExecutingAssembly());这样的方式,这样写也没错,但你用Studio来编译就找
不到资源文件了,我也不知为什么,但同样的程序,你使用csc /res:sound.
resources 来编译的话,则完全没错,也可以得到正确结果。我估计那些资料可能
都是针对SDK来的,不是STUDIO的。
最后希望大家都能用好资源文件。

【 在 Mic (酷鱼) 的大作中提到: 】
: 我在使用资源文件做全球化时遇到这样的问题:
: 如果用csc命令行编译可以?: (MyWebControls是资源文件名)将资源文件编译进dll。
: 但如果使用vs.net环境编译,把MyWebControls.resources生成操作设为“嵌入的
: 资源”还是不行,编译后使用时会出现这样的错误:
: -----
:  未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源
: 。请确保已将“MyWebControls.resources”正确嵌入或链接到程序集“
: MyWebControls”。
: baseName: MyWebControls locationInfo: <null>  resource file name:
: MyWebControls.resources  assembly: MyWebControls, Version=1.0.952.
: 36340,
:  Culture=neutral, PublicKeyToken=null
: -----
: 用命令行编译就没问题。
: 不知这是怎么回事?


--


※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.217]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店