ResourceManager尝试加载.resources而不是.resx文件

时间:2009-09-22 15:59:37

标签: .net resourcemanager

我正在尝试使用以下内容在.net网站中加载resx文件:

ResourceManager rm = new ResourceManager( "Project.Resource", Assembly.GetExecutingAssembly() );

Resource.resx文件位于App_LocalResources文件夹中,并设置为嵌入在构建中的程序集中。

当我尝试使用以下方法访问resx文件时:

rm.GetString( "key" );rm.GetString( "key", culture );

我收到错误消息:

  

无法找到任何资源   适合指定的文化   或中性文化。确保   “Project.Resource.resources”是   正确嵌入或链接到   汇编“项目”在编译时,或   所有卫星组件   必需的是可加载的和完全的   签名。

注意.resources ......关于这里发生了什么的任何想法?

4 个答案:

答案 0 :(得分:14)

要将.resx加载到ResourceManager,您需要指定namespace

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly());

或者,如果将Managed Resource Editor中的Access Modifier设置为Internal或Public,则可以免费获得ResourceManager,之后VS将生成ResxName.Designer.cs

var rm = ResxName.ResourceManager;

答案 1 :(得分:3)

我认为你使用ResourceManager的方式是错误的。 请参阅此post

另请注意,当您打开Visual Studio命令提示符时,&运行resgen.exe,它说它用于将资源文件从一种格式转换为另一种格式(即resx到资源)。 我想,您需要将文件转换为resx&的资源。然后使用resourceManager加载它。

答案 2 :(得分:3)

我不确定您使用的是哪个版本的.NET Framework。

尝试改变将ResourceManager带入生活的方式。

ResourceManager rm = 
     new ResourceManager("Project.Resource", 
                         System.Reflection.Assembly.Load("App_LocalResources"));

它应该有用。

这也作为具体资源管理器的自动生成的.designer.cs类的静态属性公开。

答案 3 :(得分:0)

明确添加.resx扩展名。

如果适合您的项目,您还可以使用自动生成的类并使用其属性。