我有一个 .NET 8.0、C# 12.0 控制台应用程序项目,其中包含对
Adobe Illustrator 2024 Type Library
的 COM 引用。对于此库公开的对象,成员和参数描述不会显示在 Intellisense 工具提示中。是否可以使用包含成员描述摘要的相应 XML 文件来扩充项目?
我与 ChatGPT 和 Gemini 进行了很长的对话,试图解决这个问题,两个 AI 都表明这确实是可能的。然而,到目前为止,还没有任何效果。因此,问题。这实际上可能吗?如果是这样,这将节省大量时间。
我创建了一个存根文档文件,
Interop.Illustrator.xml
,对应于放置在同一输出目录中的Interop.Illustrator.dll
,\bin\Debug\net8.0-windows\Interop.Illustrator.dll
。但智能感知并没有显示这些描述。例如,在设计时,将鼠标悬停在 Application
声明中的 Application app;
类型上会在工具提示中显示 interface Illustrator.Application
。它在运行时显示 {System._ComObject}
,同时暂停进行调试。
<?xml version="1.0" encoding="utf-8" ?>
<doc>
<assembly>
<name>Interop.Illustrator</name>
</assembly>
<members>
<member name="T:Illustrator.Application">
<summary>
The Adobe® Illustrator® application object, referenced using the pre-defined global app object, which contains all other Illustrator objects.
</summary>
</member>
<member name="P:Illustrator.Application.ActiveDocument">
<summary>
The active (frontmost) document in Illustrator.
</summary>
</member>
</member>
</members>
</doc>
汇编、Interop.Illustrator、
Application
反编译
using System.Runtime.InteropServices;
namespace Illustrator;
[ComImport]
[CoClass(typeof(ApplicationClass))]
[Guid("95CD20AA-AD72-11D3-B086-0010A4F5C335")]
public interface Application : _Application {
}
创建
Interop.Illustrator.xml
并将其复制到 \obj\Debug\<TargetFramework>\Interop.Illustrator.xml
文件夹(即,引用的类型库的 DLL Interop.Illustrator.dll
也被复制到其中)将使 Intellisense 在同一项目中工作。
这是文档片段:
<?xml version="1.0" encoding="utf-8" ?>
<doc>
<assembly>
<name>Interop.Illustrator</name>
</assembly>
<members>
<member name="T:Illustrator.Application">
<summary>
The Adobe® Illustrator® application object, referenced using the pre-defined global app object, which contains all other Illustrator objects.
</summary>
</member>
<member name="P:Illustrator._Application.ActiveDocument">
<summary>
The active (frontmost) document in Illustrator.
</summary>
</member>
<member name="P:Illustrator._Application.BrowserAvailable">
<summary>
If true, a web browser is available.
</summary>
</member>
</members>
</doc>
``