【发布时间】:2026-02-06 14:30:01
【问题描述】:
在 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。
【问题讨论】:
标签: c# .net com guid comvisible