我正在尝试使用以下内容在.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 ......关于这里发生了什么的任何想法?
答案 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扩展名。
如果适合您的项目,您还可以使用自动生成的类并使用其属性。