c# - 为什么我不能让 WinForms 应用程序注册 COM 互操作?
问题描述
我正在使用 Visual Studio 2015。我已经成功创建了一个类库并选择了:
Register form COM Interop
Make Assembly COM-visible
然后我设法使用安装项目将其部署到其他用户并且效果很好(尽管仍然不明白为什么 Intellisense 不适合它)
现在我正在尝试对 WinForms 应用程序做同样的事情,但是
Register form COM Interop
申请不可行,它是灰色的 - 应该是吗?如果是这样,为什么我不能为 COM Interop 注册一个应用程序,以便我可以在其他应用程序中操作它?(例如在 Excel VBA 中)
解决方案
要为 COM 互操作注册一个 .NET 程序集,该程序集必须是一个类库,旨在由应用程序共享。
另一方面,WinForms 应用程序作为独立程序运行,并不打算由其他应用程序共享。
在这种情况下,您可以创建一个类库项目,并在项目中创建一个 WinForms UserControlUserControl
,并通过使其 COM 可见来向其他应用程序公开。
这是一个老例子,奇怪的是在我的搜索中很难找到更多最近的例子。
推荐阅读
- ios - 在 SwiftUI 的导航栏中设置图像和标题
- reactjs - 反应材料表:如何覆盖材料表中的标题样式?
- javascript - 为什么我的 JQuery 脚本没有用正确的 iframe 替换数据属性?
- react-native - 世博会 addNotificationResponseReceivedListener 不起作用
- ios - 更新 Realm 的参数不起作用
- javascript - 时间流逝时降低分数
- javascript - 在反应js中保存价值
- flutter - 调用 pushReplacement 后 Flutter StreamProvider 未更新
- scala - 使用 scala 和 spark-sql 计算表统计信息
- c++ - 为什么在 C++ 中有不同的变量初始化方式?