我有一个项目,其中一个界面标有ComVisible(true)。如果我构建项目,我会收到警告MSB3214:“”不包含任何可以为COM Interop注册的类型。
但是,如果我创建一个空类,给它一个默认构造函数并用ComVisible(true)标记它,我不会收到警告MSB3214。我看到注册的类,但我没有看到我的注册表中的界面。
我错过了什么?
答案 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将在下一个可用 发布该产品。
(我们假设他的意思是 修复 错误将在下一个版本中提供)
我找不到任何有关错误修复的证据。