C# 旧代码库中的新COM组件不公开新属性

C# 旧代码库中的新COM组件不公开新属性,c#,vb.net,visual-studio,com-interop,gac,C#,Vb.net,Visual Studio,Com Interop,Gac,我自己回答这个问题,因为我在任何地方都找不到答案,这是我最喜欢的在线编程参考。希望它能帮助别人 我维护一个使用第三方COM组件的WinForms应用程序。我们最近升级到了该组件的新版本,其中包含一些附加属性/功能(所有旧属性都完好无损),但我无法让Visual Studio检测新属性。它的行为非常类似于挂起对组件旧版本的引用。以下是我尝试清除它的步骤: 删除了使用组件的表单(首先复制代码)。此表单上的唯一控件是第三方组件 删除了对旧组件的引用 删除了解决方案目录中的bin和obj文件夹,以便在

我自己回答这个问题,因为我在任何地方都找不到答案,这是我最喜欢的在线编程参考。希望它能帮助别人

我维护一个使用第三方COM组件的WinForms应用程序。我们最近升级到了该组件的新版本,其中包含一些附加属性/功能(所有旧属性都完好无损),但我无法让Visual Studio检测新属性。它的行为非常类似于挂起对组件旧版本的引用。以下是我尝试清除它的步骤:

  • 删除了使用组件的表单(首先复制代码)。此表单上的唯一控件是第三方组件
  • 删除了对旧组件的引用
  • 删除了解决方案目录中的bin和obj文件夹,以便在添加新控件时新创建PIA
  • 卸载旧组件,安装新组件
  • 打开解决方案,添加对新组件的引用
  • 在应用程序中添加一个表单,将组件放到表单上,并给它起与旧控件相同的名称(这样应用程序的其余部分就不必重构了)
  • 将表单代码粘贴回原位

此时,应用程序将编译并运行,但我无法让Intellisense检测到新属性,如果我将它们放在适当的位置,应用程序将不会编译。我尝试的任何操作都无法显示新属性。

当我们部署应用程序时,我们将组件的PIA安装到GAC。嗯,已经运行了我的电脑上的应用程序安装程序在某个时刻我在GAC中有一份PIA的副本,这是Visual Studio编译时使用的。从GAC中删除它并重新创建PIA后,新属性开始显示