'System.Guid' 不是属性 class

'System.Guid' is not an attribute class

我正在使用 Visual Studio 2013 基于 .net 4.5 创建一个新的 dll 应用程序。 尝试在我的 class 上定义 Guid 属性时,如下所示:

[Guid("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]

编译器报错

'System.Guid' is not an attribute class.

知道缺少什么吗?

您必须添加对 System.Runtime.InteropServices 的引用,如下所示:

using System.Runtime.InteropServices;

或说出 class 的全名:

[System.Runtime.InteropServices.Guid("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]

或使用带后缀 Attribute 的 class 名称:

[GuidAttribute("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]

或使用带后缀 Attribute 的完整 class 名称:

[System.Runtime.InteropServices.GuidAttribute("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]

您可以在 MSDN article

上找到更多信息

您应该包含正确的命名空间或 using 语句。如果您不这样做,它将匹配 System.Guid (instead of System.Runtime.InteropServices.GuidAttribute,为方便起见,Attribute 部分被删除),这确实不是一个属性。这有点令人困惑,但确实如此...

此代码将带您到达那里:

[System.Runtime.InteropServices.Guid("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]