MVC App_GlobalResources,使用本地和发布

MVC App_GlobalResources, use local and publish

我对 GlobalResources 有疑问

  1. 我创建App_GlobalResources个文件夹
  2. 添加User.resx
  3. 添加名称 = "FirstName",值 = "First name"

默认 我无法在我的 MVC 项目中使用此资源。 我试过了:

Nie można pobrać właściwości „Name”, 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”.

它的翻译是:

Unable to retrieve the properties "Name" as the location failed. Type "Resources.Users" is not a public or does not contain a public static property within named "FirstName."

然后我更改 User.resx 属性:

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

我很高兴它成功了。但是昨天是我第一次在测试服务器上发布,资源无法使用...

文件没有复制到服务器...

我更改 User.resx 属性

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

考虑这些关于资源的注释:

当您将资源文件添加到 ASP.NET 项目的 App_GlobalResources 特殊文件夹时,GlobalResourceProxyGenerator 自定义工具将用于您的资源,它会生成一个 internal class in Resources namespace in App_GlobalResources assembly 用于管理资源。

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

  • 它们可以通过调用Resources.ResourceFile.ResourceProperty.

  • 直接在视图或代码中使用

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

  • 这类资源默认是public,但您可以使用设计器更改它们的访问修饰符。您还可以通过更改 Custom Tool Namespace 属性.

  • 在自定义命名空间中生成它们
  • 它们可用于数据注释属性,如 [Display] 或验证属性。

  • 它们可以通过调用SomeNamespace.ResourceFile.ResourceProperty.

  • 直接在视图或代码中使用

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

感谢帮助

我做到了:

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

构建操作:嵌入式资源

复制到输出:总是复制

自定义工具:PublicResXFileCodeGenerator

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

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

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