创建资源文件
ConsoleApplication1.cs
-----------------
static void Main(string[] args)
{
ResourceWriter rw = new ResourceWriter("my.simple.resources");
rw.AddResource("1","a string from resources");
rw.AddResource("2","string No.2");
rw.Close();
}
运行后,将资源文件my.simple.resources考到use/bin/debug/下面使用资源文件
ConsoleApplicatino2.cs
-------------------------------------
static void Main(string[] args)
{
ResourceReader rr = new ResourceReader("my.simple.resources");
IDictionaryEnumerator de = rr.GetEnumerator();
while( de.MoveNext())
{
Console.WriteLine(de.Value);
}
rr.Close(); //可以正常输出希望得到的字符串 ResourceManager rm = new ResourceManager("my.simple", Assembly.GetExecutingAssembly());
Console.WriteLine(rm.GetString("1"));//出现错误
Console.WriteLine(rm.GetString("2"));
}利用resourseReader方法可以读出资源文件里的字符串,可见资源创建是没有问题的,可是为什么用resourceManager的方法读取的时候会出现“未处理的“System.Resources.MissingManifestResourceException”类型的异常出现在 mscorlib.dll 中。其他信息: 未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源。请确保已将“my.simple.resources”正确嵌入或链接到程序集“ConsoleApplication2”。
baseName: my.simple locationInfo: <null> resource file name: my.simple.resources assembly: ConsoleApplication2, Version=1.0.1677.29919, Culture=neutral, PublicKeyToken=null
”的错误呢?
ConsoleApplication1.cs
-----------------
static void Main(string[] args)
{
ResourceWriter rw = new ResourceWriter("my.simple.resources");
rw.AddResource("1","a string from resources");
rw.AddResource("2","string No.2");
rw.Close();
}
运行后,将资源文件my.simple.resources考到use/bin/debug/下面使用资源文件
ConsoleApplicatino2.cs
-------------------------------------
static void Main(string[] args)
{
ResourceReader rr = new ResourceReader("my.simple.resources");
IDictionaryEnumerator de = rr.GetEnumerator();
while( de.MoveNext())
{
Console.WriteLine(de.Value);
}
rr.Close(); //可以正常输出希望得到的字符串 ResourceManager rm = new ResourceManager("my.simple", Assembly.GetExecutingAssembly());
Console.WriteLine(rm.GetString("1"));//出现错误
Console.WriteLine(rm.GetString("2"));
}利用resourseReader方法可以读出资源文件里的字符串,可见资源创建是没有问题的,可是为什么用resourceManager的方法读取的时候会出现“未处理的“System.Resources.MissingManifestResourceException”类型的异常出现在 mscorlib.dll 中。其他信息: 未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源。请确保已将“my.simple.resources”正确嵌入或链接到程序集“ConsoleApplication2”。
baseName: my.simple locationInfo: <null> resource file name: my.simple.resources assembly: ConsoleApplication2, Version=1.0.1677.29919, Culture=neutral, PublicKeyToken=null
”的错误呢?
这句意思是访问当前代码正从中运行的程序集(就是你生成的可执行程序)中包含的my.simple.resources资源,但是你并没有把这个资源打包进这个程序集,当然会报告找不到了
al的命令行提示看不懂。
ResourceManager rm = new ResourceManager("class1.my.simple", Assembly.GetExecutingAssembly());即加上程序集的名称,资源文件在程序集中的名称可以用ildasm.exe查看
---------------------
//程序集名称对像
System.Reflection.AssemblyName an = System.Reflection.Assembly.GetExecutingAssembly().GetName();
//程序集名称
string strName = an.Name;
//资源文件名称
string strRsName = strName + ".my.simple";
System.Resources.ResourceManager rm = new System.Resources.ResourceManager(strRsName,System.Reflection.Assembly.GetExecutingAssembly());
原来嵌入程序集的资源名称会多个前缀,受到!已经验证可行。谢谢NoReady的悉心讲解~ 和codeangel的关注圆满结帖!