无效的Resx文件。无法加载类型错误为什么?我的代码出现设计器错误:ComponentI'mwillingtodefineapropertylistfor:usingSystem.Collections.Generic;使用System.ComponentModel;使用System.Windows.Forms;命名空间TestProjectForProperty.Test{publicclassMyTreeView:TreeView{privateList_descriptorsAvailable=newList();[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]publicListDescriptorsAvailable{get{return_descriptorsAvailable;}设置{_descriptorsAvailable=值;}}}ty}描述符本身:usingSystem.PropertPropert;可序列化]publicclassTypeDescriptorBase{publicstringName{get;放;}publicoverridestringToString(){returnName;如果我尝试在表单上使用该组件并将任何项目放入DescriptorsAvailable属性,我会收到以下错误错误1??无效的Resx文件。无法加载类型System.Collections.Generic.List`1[[TestProjectForProperty.Test.TypeDescriptorBase,TestProjectForProperty,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]],mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089对于.RESX文件。确保您已将必要的引用添加到您的项目中。line134,position5....visualstudio2010ProjectsTestProjectForPropertyTestProjectForPropertyForm1.resx1345TestProjectForProperty在resx文件中,出现这个错误时,里面有一个data字段,里面有base64编码的内容。我一直在寻找答案,但我得到的最好结果是重新启动一切,但对我没有帮助,你们有什么建议吗?我正在使用.net4客户端和visualstudio2010将MyTreeView和TypeDescriptorBase类放入另一个项目并从GUI项目引用它将解决问题。我不确定为什么会出现问题-我猜这与序列化过程为DescriptorsAvailable属性生成base64字符串的方式有关。也许其他人可以给我们一些见解。根据我的经验,这是由于引用库的版本更改或包含您在用户控件中定义的属性的支持类型的库本身的更改。解决方案是“强制”visualstudio设计器重新初始化类型的设计器代码,而不期望从控件的.resx文件中检索它的“jarred”版本。1)删除控件的.resx文件中有问题的数据部分。这将是与包含节点的用户控件关联的.resx文件的xml中的一个部分:-name属性将设置为您在添加的此类型的属性中命名对象的任何内容。/data>部分包含一个base64编码的字符串,它是该类型所源自的库的名称和版本的编码形式。这就是问题所在,因为它现在包含您不再引用的库的编码版本和/或版本号以包含该类型。删除整个/data>部分,从开始到结束标记,保存更改并关闭文件。现在“神器”不见了。2)现在找到控件在设计器文件中实例化类型的位置;这是visualstudio为您生成的初始化代码,它是“预制件”,它期望从定义它的.resx文件中包含的base64编码字符串加载类型。该行如下所示:this.myCtrlFoo.MyPropertyFroo=((MyNamespaceFoo.MyTypeFoo)(resources.GetObject("myCtrlFoo.MyPropertyFroo")));...现在只需替换??resources.GetObjec调用即可实例化一个新的适当类型的示例,如下所示:this.myCtrlFoo.MyPropertyFroo=((MyNamespaceFoo.MyTypeFoo)(newMyNamespaceFoo.MyTypeFoo()));...现在保存对文件的更改,关闭它,重建,现在一切都应该构建并运行良好。我正在为此苦苦挣扎;我有三个用户控件,它们都公开相同的非设计器属性,但由于某种原因,对三个中的两个的任何更改都会立即导致下一个构建失败并出现相同的问题。这是在VS2015中。我必须添加以下内容resx文件中扩展属性的两个属性,此后没有发生任何事情。它对我有用,因为他们不与设计师合作。[Browsable(false)][DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]对我来说,当我使用自定义类作为用户控件的属性时会发生此错误。当我从属性切换到传统的获取和设置方法时,错误消失了。我猜这是因为属性已经在设计时编译,所以当你构建整个项目时,自定义类的新版本被编译,与一个控件分开,引用被破坏。对我来说,使用自定义类清单,我所要做的就是从这种基于属性的方法:publicInventoryResources{get;set;}切换到这种基于方法的方法:privateInventoryresources;publicInventorygetResources(){返回资源;}publicvoidsetResources(InventorynewResources){resources=newResources;我希望这对某人有帮助,因为我花了好几个小时才弄明白。以上就是C#学习教程:无效的Resx文件。无法加载类型错误为什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
