0

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

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

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

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

4

1 回答 1

1

当我们部署应用程序时,我们将组件的 PIA 安装到 GAC。好吧,在我的 PC 上运行了应用程序的安装程序后,我在 GAC 中有一份 PIA 的副本,这就是 Visual Studio 在编译时使用的那个。在将其从 GAC 中删除并重新创建 PIA 后,新属性开始显示。

于 2012-05-15T14:31:49.517 回答