是否有人将VSTA 2.0插件开发升级到VSTA 2012?如果是,
您能否就“如何向VSTA外接程序公开我的COM主机对象?”这一主题向我提供帮助。
我正在使用VSTA2012,VSTA2012 "MyVSTAHost“附带的示例应用程序不包括将主机对象公开给VSTA插件。
在vsta 2.0中,shapeappadvancedmfc涵盖了这一点,但我不能再在vsta 2012中使用主机模板提供程序和契约概念,因为vsta 2012不再支持它。
注意:在VSTA2.0中,我可以使用插件调用我的主机应用程序调度接口方法,但我知道如何在VSTA2012中这样做,我在VSTA2012中看不到对poxygen的支持,并且VSTA2012中不再支持一些运行时命名空间。
感谢并致以问候
纳亚兹
发布于 2014-08-22 04:27:21
使用Visual Studio程序包模板:
非托管VSPackages (包括由Visual Studio包模板生成的那些文件)使用ATL式.rgs文件来存储注册信息。.rgs文件格式是特定于ATL的,通常不能由安装编写工具按原样使用。必须单独维护VSPackage安装程序的注册信息。例如,开发人员可以使.reg格式的文件与.rgs文件更改保持同步。.reg文件可以与RegEdit合并以进行开发工作,也可以由安装程序使用。
有时,COM接口生成IUnknown对象,然后COM接口将其作为空**类型传递。这些接口特别重要,因为如果在IDL中将变量定义为out,则使用AddRef方法对IUnknown对象进行引用计数。如果没有正确处理对象,就会发生内存泄漏。
如果不显式释放由COM接口创建并在out变量中返回的IUnknown对象,则会导致内存泄漏。
处理此类对象的托管方法应将IntPtr视为指向IUnknown对象的指针,并调用GetObjectForIUnknown方法来获取该对象。然后,调用者应该将返回值转换为任何合适的类型。当不再需要该对象时,调用Release将其释放。
在Visual Studio 2015中它们消失了(没有“Tools”>“Add- In Manager”菜单)。因此,您必须将您的外接程序迁移到包中,这可能是一项相当艰巨的任务,具体取决于您的外接程序的大小和复杂性(只有当您仍然可以使用包中的自动化模型(EnvDTE)时才能得到缓解。
参考
https://stackoverflow.com/questions/23729512
复制相似问题