从 .resx 为 .NET Core 3.1 应用程序生成资源 dll

Posted

技术标签:

【中文标题】从 .resx 为 .NET Core 3.1 应用程序生成资源 dll【英文标题】:Generate resource dll from .resx for .NET Core 3.1 applications 【发布时间】:2020-03-23 11:10:01 【问题描述】:

这是我在这里的第一篇文章,所以我希望我做对了。

我正在为一家使用 c# 和 VS 2019 在 Windows 中开发 .NET Core 应用程序的公司工作。我使用的 .NET Core 版本是 3.1。 Visual Studio 已更新至最新版本 (14.5)。

我们已经编写了所有的 UI,我们想知道是否有任何方法可以从 resx 文件生成相关的本地化 DLL。

这对欧洲的翻译人员来说很有用,可以本地化应用程序并在应用程序内部测试结果。

我几天来一直在寻找一种方法来做到这一点(从 resx 生成 dll),但无法正确找到从 VS 生成的 resx 文件中成功生成此 dll 的方法。 到目前为止我尝试了什么:

    使用带有多个参数及其组合的 Resgen 和 al.exe。我得到的结果是 dll 已生成但未从应用程序加载 使用 csc.exe 输入要翻译的 resx 文件。结果我得到了一个未从应用程序加载的 dll 尝试不同版本的 dotnet SDK,从 SDK 文件夹中调用“dotnet csc.dll”,但无法生成从应用程序加载的有效 dll

我现在的问题是,有没有办法不从 VS 内部生成一个临时 dll,可以从翻译机加载以测试应用程序,或者,唯一的方法是从他那里获得 resx 文件,然后从开发人员那里生成机器 dll 并返回给翻译器以便进行正确测试? 如果没有,有没有办法从 VS 社区生成 resx 构建的 dll,而无需所有源代码(正如您可以想象的那样,我们不想重新分发我们的源代码)? 关于我们如何解决这个问题的任何其他想法?

我们想到的另一个想法是创建一个单独的资源项目,并将其分发给我们的翻译。如果这里没有其他有用的想法,我想我会在下午尝试这条路。

提前感谢您对此帖子的任何回复。

【问题讨论】:

【参考方案1】:

你可以使用两种方法

1) RegGen + 汇编链接器

使用 ResGen.exe 将本地化的 .resx 文件编译成 .resources 然后使用AL.exe链接卫星程序集文件

2) 使用 Visual Studio。

只需将本地化的 .resx 文件添加到您的 csproj 文件中。下次构建时,Visual Studio 也会构建附属程序集。

在创建卫星之前,您需要拥有本地化的 .resx 文件。使用本地化工具来创建它们。例如Soluling。

【讨论】:

以上是关于从 .resx 为 .NET Core 3.1 应用程序生成资源 dll的主要内容,如果未能解决你的问题,请参考以下文章

如何在 javascript 文件中使用 resx 文件。 .net 核心 3.1 mvc

从 Body 迁移 .NET Core 2.2 到 3.1 集成测试始终为空

从.NET Core 3.1(Docker)迁移后,.NET 6 应用程序日志为 JSON 格式 [重复]

为啥我的 ASP.NET Core 3.1 控制器会自动为从视图返回的 EF Core 模型分配 ID?

从 .net core 2.2 移动到 3.1 后无法上传文件

NET Core 3.1 MVC 授权/身份验证,带有在单独的 Net Core 3.1 Web Api 中从外部获取的令牌 (JWT)