- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在使用 NetOffice 创建一个 Outlook 插件。
在插件入口点它有这样的东西:[GuidAttribute("d7066ab2-ac03-431a-bea5-b70d3efab2a5"), ProgId("OutlookPlugin"), ComVisible(true)]
现在我明白了ComVisible
bit 将库设置为 ComVisible。我认为这是为了我可以通过程序集信息 -> 使程序集 COM-Visible 使单个类 ComVisible 而不是整个库。
但我不明白 GuidAttribute
和 ProgId
用于?
最佳答案
COM 的一个重要特性是应用程序可以要求创建类对象,COM 会挑选出实现它的可执行文件并为您加载它。这需要一个很好的方法来识别组件。
你会说:“好吧,没问题,只是给它一个名字”。问题是,人们不太擅长取好名字。有一大群人叫“汉斯”,我知道至少还有一个人跟我的名字一样。住在某个地方是荷兰,不知道他是谁。
这是一个问题,与人名不同,组件名冲突是致命的。您将加载完全错误的组件,并且您的程序将崩溃。因此 COM 设计者决定唯一好的解决方案是全局唯一 ID,这个数字保证在整个已知宇宙中都是唯一的,甚至更远。一个 GUID。
COM 应用程序使用该编号来请求创建对象。底层api函数为CoCreateInstance ,第一个参数是 CLSID,它是标识类的 guid。
然而,人们不太擅长记住很长的数字。所以有一种识别组件的备用方法,它特别用于脚本语言。那种以可靠的方式获取该 guid 值的运行时环境并不那么容易。所以仍然有一个名字附加到号码上。它是 ProgId。您将它传递给一个通常名为 CreateObject() 的辅助函数。它多出了一步,它使用了 CLSIDFromProgID()帮助函数将名称映射到数字,然后调用 CoCreateInstance。不用说,这有时会并且确实会出错。
关于.net - GuidAttribute & ProgId,它们有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354477/
所以我正在使用 NetOffice 创建一个 Outlook 插件。 在插件入口点它有这样的东西: [GuidAttribute("d7066ab2-ac03-431a-bea5-b70d3efab2
我有一个基于数据库表创建许多类的 t4 模板。这些类需要向 COM 公开,因此使用 GuidAttribute 属性声明它们。 每当我编译项目,说要测试一些东西并在测试环境中注册它时,都会为每个类定义
向 C# 类添加 GUID 有什么值(value)?查看使用此链接的示例:https://msdn.microsoft.com/en-us/library/system.runtime.interop
我使用 .NET Core RC2 编写了一个库,现在我将其更新到 RTM。除了一个问题之外,迁移过程中没有出现任何问题。由于某种原因,Visual Studio(以及 dotnet 实用程序)引发有
我想弄清楚为什么要将此属性添加到类中。当我搜索时,Google 只会显示与 COM 相关的 Material ;但应用程序不通过 COM 执行任何操作。 checkin 注释没有提供任何启发(它指的是
我是一名优秀的程序员,十分优秀!