Listview .resources文件中序列化的类型与.resources文件所包含的类型不同

Listview .resources文件中序列化的类型与.resources文件所包含的类型不同,listview,.net-4.0,badimageformatexception,Listview,.net 4.0,Badimageformatexception,我们已将一个大型项目从.NET3.5升级到.NET4.0。除了从ListView加载资源的错误外,其他一切都正常。现在我们刚刚发布,这是一个非常好的拦截器 例如,这是微软的一个已知问题。这个问题有一个解决方案,但我们尝试了所有适用于.NETFramework4.0的service pack,但没有任何效果 我们尝试安装:KB2416472、KB2487367、KB2604121、KB2729449、KB2736428、, KB2737019、KB2742595、KB2840628、KB28583

我们已将一个大型项目从.NET3.5升级到.NET4.0。除了从ListView加载资源的错误外,其他一切都正常。现在我们刚刚发布,这是一个非常好的拦截器

例如,这是微软的一个已知问题。这个问题有一个解决方案,但我们尝试了所有适用于.NETFramework4.0的service pack,但没有任何效果

我们尝试安装:KB2416472、KB2487367、KB2604121、KB2729449、KB2736428、, KB2737019、KB2742595、KB2840628、KB2858302v2、KB2861188、KB2972106、KB2972215、, KB2978125、KB2979575v2、KB3023221、KB3032662、KB3037578、KB3048074、KB3072309、KB3074547——但没有成功

修复程序应位于4.0.30319.461(GDR)中的CLR中

我还尝试更改一个设计器位,以强制VisualStudio将其更改为.NET4格式。这没有帮助

解决此问题的唯一方法是安装.NET Framework 4.5.2。但我们不想放弃对WindowsXP的支持

另一种解决方案是将所有此类用户控件的Localizable属性切换为false。这对我来说似乎是一个很大的工作,我们希望保持本地化。够了吗?我们无法在合理的时间内在发布之前测试所有控件和场景

有什么真正的解决办法吗?有服务包吗

我不想相信.NETFramework4.0是不稳定的。此Winform控件是.NET中的一项基本功能

CLR Excepton: System.BadImageFormatException: The type serialized in the .resources file was not the same type that the .resources file said it contained. Expected 'System.Windows.Forms.ListViewItem' but read 'System.Windows.Forms.ListViewItem+ListViewSubItem'.
   at System.Resources.ResourceReader.TypeLimitingDeserializationBinder.BindToType(String assemblyName, String typeName)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Bind(String assemblyString, String typeString)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
   at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
   at System.Resources.ResourceReader._LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   at System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   at System.Resources.ResourceReader.LoadObject(Int32 pos)
   at System.Resources.ResourceReader.ResourceEnumerator.get_Entry()
   at System.Resources.ResourceReader.ResourceEnumerator.get_Current()
   at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
   at System.ComponentModel.ComponentResourceManager.FillResources(CultureInfo culture, ResourceSet& resourceSet)
   at System.ComponentModel.ComponentResourceManager.ApplyResources(Object value, String objectName, CultureInfo culture)

如果安装了Service Pack 3,则可以在WinXP上运行.NET 4.5- 有两个问题没有得到官方的支持,你的应用程序可能有缺陷 (更不用说SP3 it自失稳系统) 但你可以说你的应用程序支持Windows XP

现在,根据我所知和我所读到的,在您的标准(XP支持,将localizable设置为true)下,没有真正的解决方案

我的建议是放弃对过时操作系统的支持

我遇到了一个类似的问题,我在.NET4.5中开发了一个应用程序,为了使用XP支持构建该应用程序,我复制了该项目,并使用.NET3.5构建了它

对不起,我帮不了你 但也许这些信息会对你有所帮助

干杯,
德米特里这是一个非常模糊的问题。修补程序仍能正常工作的可能性微乎其微,.NET4.0自那时以来已经更新了很多次。同样非常奇怪的是,他们用CLR补丁做了这件事,这毫无意义。当您无法演示此问题时,您不太可能在这里获得帮助,因为调用堆栈无法解决此问题。仍然想要支持XP需要花钱,请打电话给Microsoft支持部门。尽管他们可能会告诉您有意安装旧版本的.NET,以便热修复程序仍然可以工作。别把这当成你的问题。