无效的Resx文件.ResX输入无效

本文关键字:无效 输入 ResX Resx 文件 | 更新日期: 2023-09-27 18:08:38

我得到了一个运行良好的WPF项目,但过了一段时间我得到了非常尴尬的编译错误

Resx文件无效。ResX输入无效。无法为ResX阅读器和写入器类型名称找到有效的" reheader "标记。

我没有改变任何东西到我的resx文件。我甚至没有定义资源。

我的资源。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中看到了一些答案,但我的读者和作者的值标签似乎是有效的(不通过新行等分隔)

无效的Resx文件.ResX输入无效

将所有属性替换为名称例如:

<xsd:element name="root" msdata:IsDataSet="true"></xsd:element>

如果你在某个地方使用了"Replace all",你可能不小心改变了它。
如果你不使用这个文件,你也可以直接删除它。

此外,您还可以使用诸如此类的在线工具来检查xml和模式是否有效。