【问题标题】:ResourceManager trying to load .resources not .resx fileResourceManager 试图加载 .resources 而不是 .resx 文件
【发布时间】:2010-11-30 11:10:11
【问题描述】:

我正在尝试使用以下方法在我的 .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”原为 正确嵌入或链接到 在编译时组装“项目”,或 所有的卫星组件 required 是可加载且完全的 签名。

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

【问题讨论】:

  • 不是还创建了设计器文件吗?

标签: .net resourcemanager


【解决方案1】:

显式添加 .resx 扩展名。

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

【讨论】:

  • 如果我将 .resx 添加到“Project.Resource”我会得到同样的错误,但文件 Project.Resource.resx.resources
  • 抱歉,我错过了您的 .resx 在 App_LocalResources 中。我的帖子都不适用...
【解决方案2】:

我认为您使用 ResourceManager 的方式是错误的。 看到这个post

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

【讨论】:

  • 感谢您让我走上正轨...我不应该使用 ResourceManager 我最终在我的页面中使用了 语法
【解决方案3】:

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

尝试改变让 ResourceManager 栩栩如生的方式。

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

它应该可以工作。

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

【讨论】:

    【解决方案4】:

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

    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为通过Designer代码访问资源的方法
    【解决方案5】:

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

    ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey")
    

    在不能使用“点符号”的情况下(例如,当资源键被持久化在数据库中时),它是一种简洁而优雅的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      相关资源
      最近更新 更多