C# WinForm 自定义类型转换器重新编译后修改属性提示 InstanceDescriptor 错误的解决方案

当我们编写自定义的类型转换器比如从 TypeConverter、ExpandableObjectConverter 等继承,首次编译后,修改属性值是正常的,当再次编译后,再次修改属性则会提示如下错误:

属性“属性名”的代码生成失败。错误是: “类型转换器类名”无法将“属性名”转换为“System.ComponentModel.Design.Serialization.InstanceDescriptor”

image

主要原因为类型转换器是直接进入 CLR 的类型信息缓存并不经过项目实现的类型解析服务系统。这意味着 CLR 将从程序集返回类型之前已加载,重新编译后不会再次加载,导致在设计器修改属性后提示转换将失败;我们可以通过每次编译前修改版本号强制 CLR 失效,使其重新加载新的类型转换器。

修改版本号的文章请参考:VS 在编译和发布时自动修改版本号(DotNet Framework)

原文地址:https://www.cnblogs.com/darkpet/p/18694422

posted @   DarkPet  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示