"未能找到任何适合于指定的区域性或非特定区域性的资源"错误的解决方法

Code

以上是MSDN上ResourceManager类的一个范例,ResourceManager枸造函数的第一个参数格式应该为“namespace+resource文件名”,如要获取项目webProject1上r的资源文件Resource1.resx,则第一个参数应为“webProject1.Resource1"。
然而我却死活出现以下错误:
未能找到任何适合于指定的区域性或非特定区域性的资源。请确保在编译时已将“WebSiteCSharp.Resource.resources”正确嵌入或链接到程序集“App_Web_qlcb8kez”,或者确保所有需要的附属程序集都可加载并已进行了完全签名。
经过排查发现使用“网站”的方式(而不是“项目”)在编译时会生成随机文件名的程序集(在以上错误信息中为“App_Web_qlcb8kez”),即是项目的namespace,每次编译后都不一样,所以在使用namespace作为ResourceManager枸造函数的参数时会导致运行时错误。
而在使用“项目”的方式时,因为namespace是固定不变的,所以不会出现以上问题:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.Resources;
using System.Globalization;

namespace WebApplication1
{
    
public partial class _Default : System.Web.UI.Page
    {
        
protected void Page_Load(object sender, EventArgs e)
        {
            ResourceManager rm 
= new ResourceManager("WebApplication1.Resource", System.Reflection.Assembly.GetExecutingAssembly());
            String myName 
= rm.GetString("MyName");
            Response.Write(myName);
        }
    }
}
以上代码运行正常!

Google了半天发现几乎所有的解决建议都放在ResourceManager类枸造函数语法上,折腾了半天才搞明白,把解决方法放上来,希望有用。
posted @ 2009-08-26 01:33  CyberSec  阅读(11160)  评论(2编辑  收藏  举报