我有一个.NET程序集,我向COM公开.该程序集有两个公共接口和一个公共类.当我构建程序集时,我收到此警告:
(assemblyName.dll)不包含可以为COM Interop注册的任何类型.
我的装配信息包括以下行.
[assembly: ComVisible(true)]
Run Code Online (Sandbox Code Playgroud)
大多数人在网上遇到这个问题,我发现,在他们的装配信息中用上面的行修复了它.这对我没有帮助.
我也尝试添加[ComVisible(true)]类和接口定义,它也没有帮助.
Joe*_*Joe 15
ComVisible类通常需要有一个公共默认构造函数.其成员通常也应仅引用ComVisible类型.
如果已在程序集级别指定了它,则无需在类上指定ComVisible(true).
但是,使用ComVisible类生成程序集的常用方法是:
在程序集级别指定ComVisible(false).因此,只有明确标记为ComVisible(true)的类才会暴露给COM.
定义一个显式的ComVisible接口:
例如
[
ComVisible(true),
GuidAttribute("..."),
Description("...")
]
public interface IMyComVisibleType
{
// members...
}
Run Code Online (Sandbox Code Playgroud)
例如
[
ComVisible(true),
GuidAttribute("..."),
ClassInterface(ClassInterfaceType.None)
]
public sealed class MyComVisibleType : IMyComVisibleType
{
// implementation ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,Guid和Description属性不是必需的,但可以帮助您更好地控制COM生成.
如果上述方法无效,请尝试发布一些示例代码,我相信有人可以提供帮助.
| 归档时间: |
|
| 查看次数: |
8778 次 |
| 最近记录: |