加载含PowerPacks项的旧WindowsForms窗体时出现程序集加载错误求助
这个问题我之前处理过,核心原因是PowerPacks的Shape控件系列依赖旧版本的Visual Studio Shell组件,而DataRepeater模块没有这个依赖,所以才会出现部分控件正常、部分报错的情况。给你几个可行的解决思路:
检查并添加Microsoft.VisualStudio.Shell.9.0引用
右键项目→管理NuGet程序包,搜索Microsoft.VisualStudio.Shell.9.0并安装对应版本。如果NuGet搜不到,就手动添加:右键项目→添加→引用→浏览,定位到Visual Studio安装目录下的Common7\IDE\PublicAssemblies文件夹,找到Microsoft.VisualStudio.Shell.9.0.dll添加进去。修正项目的PowerPacks引用配置
直接打开项目的.csproj文件,查找包含Microsoft.VisualBasic.PowerPacks.Vs的引用节点,检查是否附带了对Microsoft.VisualStudio.Shell.9.0的错误版本依赖。如果有,删除多余的依赖项,重新通过NuGet安装PowerPacks 12.0.0版本,确保引用配置干净。另外要确认项目的目标.NET Framework版本和原项目一致,旧项目大概率用的是.NET Framework 3.5或更低版本,切换到对应版本后重试。替换Shape控件(终极方案)
如果上述方法都无效,考虑用WinForms原生控件替代Shape系列:比如用Panel控件模拟Rectangle Shape,设置边框和填充色就能实现类似效果;如果是更复杂的图形,直接在窗体的Paint事件里用GDI+绘制。这样能彻底摆脱对旧Shell组件的依赖,也避免后续版本兼容问题。
内容的提问来源于stack exchange,提问作者Livio

