2011-12-05 55 views
4

我得到我的.resx文件一个奇怪的错误:C#的resx文件错误

“。无效的ResX文件的ResX输入无效找不到有效‘为的ResX读者resheader’标签和作家类型名称。C:\ Documents and Settings \ Users \ My Documents \ Visual Studio 2010 \ Projects \ dock \ WinForms \ Dock \ strings.resx“

我所做的是将现有VS 2010解决方案中的一些文件替换为一些较旧的从VS 2008的解决方案,大部分文件工作正常,但我得到这个错误,我不知道如何解决它。如果它有所作为,here是该文件的源代码。

我正在使用NET WinForms 4.0,如果这很重要。

回答

8
<resheader name="resmimetype"> 
    <value> 
     text/microsoft-resx 
    </value> 
    </resheader> 

额外的空白被添加了某种方式。你将需要删除它,所以它看起来是这样的:

<resheader name="resmimetype"> 
    <value>text/microsoft-resx</value> 
    </resheader> 

还必须在程序集引用更新的版本号从2.0.0.0 4.0.0.0到。复制像这样的.resx文件是另一个惹麻烦的好方法。当设计器生成的代码尝试在.resx文件中使用缺少的值时,您会很容易地获得Darn的白色屏幕。

+0

我不知道空白可能会导致这种情况。无论如何,你的方法似乎已经奏效,所以谢谢。 – david

3

好吧所以我为了解决你的问题所做的只是前将这些行添加到您的文件/根:

<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.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    </resheader> 
    <resheader name="writer"> 
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 
    </resheader> 

我创建了一个新的解决方案VS2010,增加了新的.resx文件的常用方法并查看了生成的文件的结构。我发现这些行,显然,VS需要为了适当地编译你的文件。

希望我帮助:)

编辑:

哎呀我的坏,我没有注意到在文件中存在的标签。无论如何,它仍然可以解决你的问题,你可以删除旧的标签,并保留这些。

0

在我的情况下,我从某处下载了控件。所有源文件都在一个文件夹中,并且resx文件位于App_LocalResources子文件夹中。我其实并不关心resx文件中的任何部分,我认为它主要是自动生成的空白标签。所以我刚刚删除了resx文件。删除resx文件后,控件编译成功。