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

Ada*_*Fox 11 .net resourcemanager

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

ResourceManager rm = new ResourceManager( "Project.Resource", Assembly.GetExecutingAssembly() );
Run Code Online (Sandbox Code Playgroud)

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

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

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

我收到一条错误消息:

找不到适合指定文化或中性文化的资源.确保在编译时将"Project.Resource.resources"正确嵌入或链接到程序集"Project"中,或者所有所需的附属程序集都是可加载和完全签名的.

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

dii*_*eep 14

要将.resx加载到ResourceManager,您需要指定名称空间

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly());
Run Code Online (Sandbox Code Playgroud)

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

var rm = ResxName.ResourceManager;
Run Code Online (Sandbox Code Playgroud)


Lan*_*eyo 5

按字符串读取资源的方法非常简单:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey")
Run Code Online (Sandbox Code Playgroud)

对于无法使用“点符号”的键读取资源(例如,当资源键保留在数据库中时),这是一种干净而优雅的解决方案。


Gan*_* R. 3

我认为您使用 ResourceManager 的方式是错误的。请参阅此帖子

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