C# WinForm 自定义类型转换器重新编译后修改属性提示 InstanceDescriptor 错误的解决方案
当我们编写自定义的类型转换器比如从 TypeConverter、ExpandableObjectConverter 等继承,首次编译后,修改属性值是正常的,当再次编译后,再次修改属性则会提示如下错误:
属性“属性名”的代码生成失败。错误是: “类型转换器类名”无法将“属性名”转换为“System.ComponentModel.Design.Serialization.InstanceDescriptor”
主要原因为类型转换器是直接进入 CLR 的类型信息缓存并不经过项目实现的类型解析服务系统。这意味着 CLR 将从程序集返回类型之前已加载,重新编译后不会再次加载,导致在设计器修改属性后提示转换将失败;我们可以通过每次编译前修改版本号强制 CLR 失效,使其重新加载新的类型转换器。
修改版本号的文章请参考:VS 在编译和发布时自动修改版本号(DotNet Framework)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)