【问题标题】:Edit ASP.NET MVC 3 resx files in deployment server without recompiling在部署服务器中编辑 ASP.NET MVC 3 resx 文件而不重新编译
【发布时间】:2012-07-18 14:42:49
【问题描述】:

这是我的第一个问题!

我有一个带有 Properties 文件夹的 ASP.NET MVC 3 项目,其中包含一些 .resx 文件,这些文件用于按语言 (en/es) 在我的视图中区分内容。 我正在使用 .Net 4 在 VS2010 中工作。

当我将应用程序部署到服务器时,我发现没有发布任何 resx 文件,而是有一些 .dll 文件。

我已将构建操作设置为 Embedded resource ,将 Do not copy 设置为输出目录,并将 PublicResXFileCodeGenerator 设置为 .resx 文件属性中的自定义工具。

我希望在服务器上拥有 .resx 文件,并且能够在不重新编译或重新部署的情况下对其进行编辑。视图应该使用这些更改。

我该怎么做?

感谢您的帮助!!

【问题讨论】:

  • 我将 resx 文件放入 Properties 文件夹。也许从 App_GlobalResources 文件夹中使用它们可以让我这样做?
  • 我尝试了该解决方案并且有效!
  • PublicResXFileCodeGenerator 似乎是 msdn.microsoft.com/en-us/library/… 的包装器,它将 resx 转换为类(dll)。你正在做的事情有必要吗?
  • 在找到解决方案之前,我已经尝试过 PublicResXFileCodeGenerator,但这不是我想要的。谢谢!

标签: asp.net-mvc-3 visual-studio-2010 deployment resx .net


【解决方案1】:

将 resx 文件放入您的 App_GlobalResources 并将“构建操作”更改为 Content 并将“复制到输出目录”更改为 false。 确保“自定义工具”设置为 GlobalResourceProxyGenerator

这应该使它们即使在运行时也可以更改。

您可以简单地使用 xpath 来查询它们,获取键、值和 cmets,然后使用 XDocument 随意编辑它们。

您还应该知道,这样的事情不适用于 Visual Studio 的发布,因为预编译的网站不允许 App_GlobalResources。

【讨论】:

  • 谢谢亚当。当我找到该解决方案时,我尝试并运行良好!
  • @Adam Tal,我已经按照上述步骤操作,它正在工作,但所有会话都被清除/应用程序池在运行时编辑字符串资源后被回收。你是怎么做到的?
  • @Pawan - 一旦检测到 App_GlobalResources 中的任何更改,应用程序池将回收 - 您不应该大量编辑 resx!如果您有这样的需求,您可以考虑使用基于数据库的解决方案
  • @AdamTal,感谢您的建议。我选择了基于数据库的解决方案。 :)
猜你喜欢
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多