我有一个WPF项目,运行正常,但一段时间后我得到了非常尴尬的编译器错误
无效的Resx文件。 ResX输入无效。找不到ResX读取器和写入器类型名称的有效“resheader”标签。
我没有更改任何内容到我的resx文件。我甚至没有定义资源。
我的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 Header="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element Header="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element Header="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute Header="Header" type="xsd:string" />
<xsd:attribute Header="type" type="xsd:string" />
<xsd:attribute Header="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element Header="assembly">
<xsd:complexType>
<xsd:attribute Header="alias" type="xsd:string" />
<xsd:attribute Header="Header" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element Header="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element Header="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element Header="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute Header="Header" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute Header="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute Header="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element Header="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element Header="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute Header="Header" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader Header="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader Header="version">
<value>2.0</value>
</resheader>
<resheader Header="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader Header="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
我已经看过SO中的一些答案,但我的读者和作者的价值标签似乎是有效的(不会被新行等分开)。
答案 0 :(得分:1)
将所有标头属性替换为名称,例如:
<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>
如果您在某处使用“全部替换”,您可能会意外地更改它。
或者你可以删除文件,如果你没有使用它。
此外,您始终可以使用this等在线工具来检查您的xml和架构是否有效。