WPF:无效的Resx文件。 ResX输入无效

时间:2016-09-23 22:07:16

标签: c# wpf resources

我有一个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中的一些答案,但我的读者和作者的价值标签似乎是有效的(不会被新行等分开)。

1 个答案:

答案 0 :(得分:1)

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

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

如果您在某处使用“全部替换”,您可能会意外地更改它。
或者你可以删除文件,如果你没有使用它。

此外,您始终可以使用this等在线工具来检查您的xml和架构是否有效。