能否为Adobe Illustrator COM库增强IntelliSense显示成员摘要?
为COM互操作程序集添加XML文档以增强IntelliSense
可以通过XML文档文件为COM互操作程序集增强IntelliSense,但需要修正几个关键问题才能生效:
1. 修复XML文档的语法错误
你提供的XML文件中存在多余的</member>标签(在ActiveDocument成员之后),这会导致XML解析失败,Visual Studio无法加载该文档。删除多余的标签即可。
2. 适配COM接口的继承结构
从反编译代码可知,Illustrator.Application接口仅继承自_Application,并未直接定义成员——所有属性和方法实际都在_Application基接口中。因此XML文档需要针对基接口的成员编写路径:
- 类型成员路径:
T:Illustrator._Application(而非T:Illustrator.Application,后者仅作为CoClass入口) - 属性成员路径:
P:Illustrator._Application.ActiveDocument(而非P:Illustrator.Application.ActiveDocument)
3. 确保XML文件的放置位置正确
XML文档必须与**项目引用的Interop.Illustrator.dll**在同一目录(而非仅输出目录)。Visual Studio设计时的IntelliSense会读取引用路径下的XML,而非编译输出目录。可以:
- 将
Interop.Illustrator.xml复制到COM引用生成Interop.dll的目录(通常是项目obj子目录或引用指定的本地路径) - 在项目中添加XML文件,设置其“复制到输出目录”属性为“始终复制”
修正后的XML示例
<?xml version="1.0" encoding="utf-8" ?> <doc> <assembly> <name>Interop.Illustrator</name> </assembly> <members> <member name="T:Illustrator.Application"> <summary> Adobe® Illustrator®应用程序对象,可通过预定义的全局app对象引用,包含所有其他Illustrator对象。 </summary> </member> <member name="T:Illustrator._Application"> <summary> Illustrator应用程序核心接口,定义所有应用级操作与属性。 </summary> </member> <member name="P:Illustrator._Application.ActiveDocument"> <summary> Illustrator中当前激活的(最前端)文档。 </summary> </member> </members> </doc>
额外说明
- 修改XML后,重启Visual Studio或清理并重建项目,触发IntelliSense重新加载文档。
- 调试时显示
{System._ComObject}是正常行为,这是.NET对COM对象的包装表现,不影响设计时的IntelliSense提示。
内容的提问来源于stack exchange,提问作者CalvinDale
相关产品推荐
相关产品推荐

