c# - .Net Core Resources 给出 null 而不是字符串
问题描述
我正在尝试在我的 .Net Core控制台应用程序中使用资源 (.resx),但由于某种原因,我无法从资源中获取字符串,而是总是得到空值。这是重现该问题的示例代码:
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Resources.Message);
}
}
}
这是Resources.resx
文件内容:
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<data name="Message">
<value>Hello world!</value>
</data>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
我正在使用 Mac 和 dotnet core 2.2.100(似乎是最新版本)。添加 Microsoft.Extensions.Localization 没有帮助。
解决方案
您的字符串在 xml 中的错误位置定义:
<root>
...
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Message" xml:space="preserve">
<value>Hello World!</value>
</data>
</root>
推荐阅读
- ms-access - DoCmd.Close acForm,“名称”,acSavePrompt 不起作用
- excel - 无法创建 ComObject“Excel.Application”
- javascript - 如何开始使用 React 进行函数式编程?
- java - 如何在 avro 模式中创建包含字符串数组的对象?
- tensorflow - 在密集层之前连接一个输入。[带有 TF 后端的 Keras]
- mysql - 提高 SQL 查询性能
- javascript - 如何测试 Yup.array 中值的唯一性?
- mongodb - 同时查询多个属性,得到一个整体平均值和一个数组
- c# - 是否可以在没有主键的表上将 Entity Framework Core 与现有数据库一起使用?
- sql-server - SQL Server 错误:从字符串转换日期和/或时间时转换失败