使用COM可见接口注册Interop程序集的程序集仅会发出警告MSB3214

时间:2011-06-30 19:23:27

标签: c# com com-interop

我有一个项目,其中一个界面标有ComVisible(true)。如果我构建项目,我会收到警告MSB3214:“”不包含任何可以为COM Interop注册的类型。

但是,如果我创建一个空类,给它一个默认构造函数并用ComVisible(true)标记它,我不会收到警告MSB3214。我看到注册的类,但我没有看到我的注册表中的界面。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

这是设计,尽管Jays链接。 Regasm.exe只为实现接口的具体类编写注册表项。 ProgID和CLSID键。 COM确实有接口注册(HKCR \ Interfaces),但只有代理在那里注册。 .NET没有创建代理的机制。

仅使用 接口声明的程序集仅对创建类型库很有用,允许其他项目实现它们。创建类型库不是问题,请使用Tlbexp.exe

答案 1 :(得分:0)

看起来它可能是2008年7月报告的Visual Studio 2008错误:VS creates no type library for a project containing solely C# interfaces (MSB3214)

没有列出的解决方法。

在2009年9月的微软响应数据中,他们(大概)能够解决这个问题:

  

我们能够解决这个问题   bug将在下一个可用   发布该产品。

(我们假设他的意思是 修复 错误将在下一个版本中提供)

我找不到任何有关错误修复的证据。