【问题标题】:MVC App_GlobalResources, use local and publishMVC App_GlobalResources,使用本地并发布
【发布时间】:2016-10-07 22:27:52
【问题描述】:

我对 GlobalResources 有疑问

  1. 我创建 App_GlobalResources 文件夹
  2. 添加 User.resx
  3. 添加名称 =“名字”,值 =“名字”

默认我不能在我的 MVC 项目中使用这些资源。 我试过了:

  • App_GlobalResources.User.FirstName - 无效
  • Resources.User.FirstName - 它可以工作,但只有代码隐藏,当构建和启动应用程序(本地)时,显示错误:

Nie można pobrać właściwości “名称”,ponieważ lokalizacja nie powiodła się。 Typ „Resources.Users” nie jest publiczny lub nie zawiera publicznej, statycznej właściwości ciągu o nazwie „FirstName”。

它的翻译是:

由于位置失败,无法检索属性“名称”。类型“Resources.Users”不是公共的或不包含名为“FirstName”的公共静态属性。

然后我更改 User.resx 属性:

  • 构建操作:嵌入式资源
  • 复制到输出:目录不要复制
  • 自定义工具:PublicResourceProxyGenerator
  • 自定义工具命名空间:“空”

现在我不能使用 Resources.User.FirstName 我必须使用App_GlobalResources.User.FirstName

我很高兴它的工作。但昨天是我在测试服务器上的第一次发布,资源无法正常工作......

文件不复制到服务器...

我更改了 User.resx 属性

  • 构建操作:内容
  • 复制到输出:目录不要复制
  • 自定义工具:GlobalResourceProxyGenerator
  • 自定义工具命名空间:“空”

复制文件,但应用程序抛出了我在上面分享的相同的异常并且资源在本地机器中不起作用,有什么建议吗?

【问题讨论】:

  • 你通过问这个问题帮助了我,因为我尝试过并且不再知道默认的“属性”:D 并将设置恢复为默认设置对我有帮助

标签: c# asp.net-mvc app-globalresources


【解决方案1】:

感谢您的帮助

我做到了:

  1. 创建文件夹资源
  2. 将所有资源从 App_GlobalResources 移至新文件夹
  3. 更改所有文件属性:

构建操作:嵌入式资源

复制到输出:始终复制

自定义工具:PublicResXFileCodeGenerator

自定义工具命名空间:资源

此设置允许我将访问修饰符 resx 文件更改为公共。

现在项目在本地机器上工作。 发布期间的文件 resx 正在处理服务器。 服务器应用程序正在运行。

【讨论】:

  • 可以为新的 resx 文件创建模板吗? 是的,有一些解决方案可以简化任务。您可以创建新的 ItemTemplate 或操作现有的 ItemTemplate 来执行您需要的操作。
  • 如果您需要更多关于是否可以为新的 resx 文件创建模板? 添加包含上述描述的新问题并在那里提出您的问题。每个 stackoverflow 帖子(线程)都专用于一个问题。有关更多信息,请参阅One post with multiple questions or multiple posts? :)
  • 通常你也不需要发表结论。但是你对这篇文章的回答很好而且很有用,所以我投了赞成票。
  • 如果您提出新问题,请随时通知我 :)
【解决方案2】:

考虑以下有关资源的说明:

当您将资源文件添加到 ASP.NET 项目的 App_GlobalResources 特殊文件夹时,GlobalResourceProxyGenerator 自定义工具将用于您的资源,它将在 Resources 命名空间中生成 internalApp_GlobalResources 用于管理资源的程序集。

  • 这类资源是内部资源,不能更改其访问修饰符。
  • 它们不能用于数据注释属性,如[Display] 或验证属性。

  • 它们可以在视图中使用,也可以通过调用Resources.ResourceFile.ResourceProperty直接在代码中使用。

使用ResXFileCodeGenerator作为自定义工具的嵌入式资源,将在默认命名空间+文件夹层次结构的命名空间中生成一个公共资源文件。

  • 这些资源默认是公共的,但你可以使用设计器更改它们的访问修饰符。您还可以通过更改其Custom Tool Namespace 属性在自定义命名空间中生成它们。

  • 它们可用于数据注释属性,如[Display] 或验证属性。

  • 它们可以通过调用SomeNamespace.ResourceFile.ResourceProperty直接在视图或代码中使用。

【讨论】:

    【解决方案3】:

    打开资源文件,将访问修饰符更改为 public 并且不要将其设为嵌入式资源,因为这将生成另一个带有项目程序集名称和 .resources 后缀的程序集,这将使您难以部署后更改任何资源值,使其不嵌入并复制到输出目录,以便以后可以选择更改 resx 文件而无需部署 dll。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2021-09-08
      • 2011-05-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多