2012-05-15 31 views
0

我自己回答,因为我在任何地方都找不到答案,这是我最喜欢的在线编程参考。希望它可以帮助别人。旧代码库中的新COM组件未公开新属性

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

  • 删除消耗组件的表单(先复制出代码)。这种形式的唯一控制是第三方组件。
  • 删除了参考旧的组件
  • 删除在解决方案目录的bin和OBJ文件夹,以便PIA的就当我加入了新的控制
  • 卸载旧的组件获得新创建的,安装了新的一个
  • 打开解决方案,添加对新组件的引用
  • 向应用程序添加了一个表单,将该组件拖放到表单上,并赋予其与旧控件相同的名称(以便应用程序的其余部分不会必须重构
  • 将表单代码粘贴回将

在这一点上,应用程序将编译和运行,但我无法得到智能检测新的属性,如果我把他们在的地方,反正应用程序将无法编译。我试过的任何东西都不会显示新的属性。

回答

1

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