编译器错误 C3451

更新:2007 年 11 月

错误消息

“attribute”: 不能将非托管属性应用于“type”

不能将 C++ 属性应用于 CLR 类型。有关更多信息,请参见 C++ Attributes Reference

有关更多信息,请参见 User-Defined Attributes

为 Visual C++ 2005 完成的编译器一致性工作可导致产生此错误:使用 CLR 编程的用户定义的属性上不再允许有 uuid (C++ Attributes)属性。而应使用 GuidAttribute

有关更多信息,请参见 Visual C++ 2005 编译器中的重大更改

示例

下面的示例生成 C3451。

// C3451.cpp
// compile with: /clr /c
using namespace System;
[ attribute(AttributeTargets::All) ]
public ref struct MyAttr {};

[ MyAttr, helpstring("test") ]   // C3451
// try the following line instead
// [ MyAttr ]
public ref struct ABC {};