【发布时间】:2021-06-25 11:16:13
【问题描述】:
我有一个带有本地化功能的 .net 核心 Web 应用程序。我有带有翻译的 .resx 文件。另外,我有一个 api,可以下载新版本的翻译。旧版本正在被新版本取代,但要更新应用程序中的资源,我需要重新编译它。这可以不重新编译吗?也许我需要重建资源 dll?
【问题讨论】:
-
这取决于网络版本和编译模式(16/32/64)。 Net dll 需要与用于编译的同一版本的 Net 才能在机器上运行。
-
您可以创建自己的资源提供程序并从数据库中加载它们。查看 nopcomerce 的源代码,它会详细地向您展示如何实现这一点。通过研究他们的方法,我能够做到这一点
-
如果您想直接使用 .resx 文件而不编译它们,您可以使用 this 库(免责声明:由我编写)。它有一个
ResXResourceManager类,可以用作普通的ResourceManager。HybridResourceManager支持使用 .resx 文件覆盖已编译的资源(如果存在),最后,DynamicResourceManager支持在您切换到尚未设置保存资源的语言时生成资源文件。 -
@GyörgyKőszeg 我将 HybridResourceManager 与 CompiledAndResX 一起使用,它编辑 resx 文件,但不是 dll。我仍然需要重新编译应用程序
-
HybridResourceManager可以从 .dll 中读取已编译的资源,并且可以读取和写入 .resx 文件。在CompiledAndResX模式下,首先访问 .resx 内容,因此您甚至可以通过部署相同语言的 .resx 文件来覆盖已编译的资源。所以它不编辑 dll。但它可以直接使用 resx 文件,因此您不需要将它们编译成卫星资源 dll 文件。这不是你要求的吗?使用 .resx 文件而不需要编译它们?
标签: c# .net .net-core dll resources