2

我对 GlobalResources 有疑问

  1. 我创建 App_GlobalResources 文件夹
  2. 添加用户.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
  • 自定义工具命名空间:“空”

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

4

3 回答 3

4

感谢帮助

我做了:

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

构建操作:嵌入式资源

复制到输出:始终复制

自定义工具:PublicResXFileCodeGenerator

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

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

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

于 2016-10-08T22:16:37.603 回答
1

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

当您将资源文件添加到App_GlobalResourcesASP.NET 项目的特殊文件夹时,GlobalResourceProxyGenerator自定义工具将用于您的资源,它会在程序集的命名空间中生成一个internal类来管理资源。ResourcesApp_GlobalResources

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

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

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

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

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

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

于 2016-10-07T23:13:32.267 回答
-1

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

于 2016-10-08T08:14:25.623 回答