添加 .resx 文件时,在使用 WPF .NET Core 3.0 编译时出现编译错误。

5
以下工作正常: 已测试并与专业版和社区版兼容的VS Studio 2019。
  • 创建新的APF应用程序(.NET Framework)
  • 打开属性文件夹
  • 将Resources.resx更改为public
  • 创建一个新的资源文件(Resources.de.resx)
  • 建立

如预期编译成功。

以下不起作用:
  • 创建新的APF应用程序(.NET Core)
  • 创建一个资源文件夹
  • 创建一个新的资源文件(Resources.resx)
  • 更改它为public
  • 创建一个新的资源文件(Resources.de.resx)
  • 建立

在使用VS 2019专业版和社区版测试了3台不同的计算机上。

编译错误:

错误信息:Custom tool PublicResXFileCodeGenerator无法为输入文件 'Resources\Resources.de.resx' 生成输出,但没有记录特定错误。 WpfApp4 C:...\source\repos\WpfApp4\WpfApp4\Resources\Resources.de.resx 1

错误信息:MSB3086任务无法使用SdkToolsPath“”或注册表键“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.7.2\WinSDK-NetFx40Tools-x86”找到“al.exe”。确保设置了SdkToolsPath并且该工具存在于SdkToolsPath下的正确处理器特定位置,并且已安装Microsoft Windows SDK WpfApp4 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 3639

编辑:还在微软创建了一个问题单。

https://developercommunity.visualstudio.com/content/problem/771961/compile-error-with-wpf-net-core-30-when-adding-res.html


个人而言,我使用资源字典进行本地化,并推荐这种方法。在WPF中已经有一段时间没有使用过resx文件了。如果您添加了microsoft.windows.compatibility nuget包,它是否可以工作?如果不行,请查看此处的步骤:https://learn.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework - Andy
我并没有固定于任何特定的本地化方法。如果有更好的方法,我会采用它。对我来说,resx文件似乎只是标准而已。我也在研究Mozilla的Fluent,但很难找到文档和示例。 - Klamsi
我多次使用的方法是以英语为基础的基本rd。每个条目都有一个x:key的字符串。将具有匹配键的语言资源字典合并在一起。对于引用这些键的文本块等,使用dynamicresource。通常非英语是子集,因为超级用户都是英语读者,所以他们的维护屏幕可以使用英语进行标记。这种方法也符合品牌定位。 - Andy
2个回答

4

1
在使用全球化的asp.net core 3.1网站项目中,我在使用现有资源文件时遇到了这个问题。为了解决这个问题:
  1. 创建一个新的Resource.resx。(使用Add> New Item...> Resource File.resx)。
  2. 将第一个文件的所有内容复制到新文件中(复制所有三列)。
  3. 删除旧文件。
  4. 将新文件重命名为预期名称。
对于我来说有效,希望对你也有效。

1
不要忘记将 resx 文件的访问修饰符更改为“public”。 - DerSkythe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接