gpt4 book ai didi

c# - 使用 ComVisible(false) 时指定 Guid 有什么意义吗?

转载 作者:IT王子 更新时间:2023-10-29 04:00:12 26 4
gpt4 key购买 nike

当您在 Visual Studio 中创建新的 C# 项目时,生成的 AssemblyInfo.cs 文件包含一个指定程序集 GUID 的属性。属性上方的注释指出“如果此项目向 COM 公开”则使用它。

我的程序集都不包含需要对 COM 可见的类型,因此我用 [assembly: ComVisible(false)] 标记了我的程序集。那么指定 GUID 有什么意义吗?

我的感觉是答案是否定的——那么为什么默认的 AssemblyInfo.cs 文件同时包含 [assembly: ComVisible(false)][assembly: Guid("...")]?


编辑:

总结响应:

在它们之间,答案解释了当且仅当使用 COM 互操作时才需要指定 GUID。因此,在我的情况下,GUID 不是必需的。

sharptooth 进一步解释说 [assembly: ComVisible(false)] 并不意味着不使用 COM 互操作,因为可以为个别类型覆盖 ComVisible。正是出于这个原因,默认的 AssembyInfo.cs 包含 [assembly: ComVisible(false)] 和一个 GUID。

最佳答案

同时拥有 [assembly: ComVisible(false)][assembly: Guid("...")] 非常有意义 in certain cases .您从一个空程序集开始,可能希望将其中的某些内容公开给 COM。因此,您将程序集标记为非 ComVisible,然后将要公开的实体标记为 ComVisible。这就是 GUID 默认存在的原因。

无论如何,如果您真的不想将程序集中的任何内容暴露给 COM,请在项目设置中取消选中“为 COM 互操作注册”选项。

关于c# - 使用 ComVisible(false) 时指定 Guid 有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com