DebuggerDisplay属性不起作用

时间:2009-02-26 10:54:17

标签: .net visual-studio debugging

这是一个针对.NET 2.0框架的C ++ / CLI WinForms项目。我正在使用Visual Studio 2008.如何让它工作?

编辑:代码段

[Serializable]
[DebuggerDisplayAttribute(L"ID={EmployeeID}")]
public ref class Employee
{
    [ReadOnly(true)]
    int nID;
    property int EmployeeID
    {
        int get()
        {
            return nID;
        }
    }
}

3 个答案:

答案 0 :(得分:0)

定义“不起作用”......它肯定适用于C#(我不知道C ++编辑器是否支持它 - 只需在C#中翻译以下哪些工作来查找; -p)

using System.Diagnostics;
[DebuggerDisplay("HiWorld={Bar}")]
class Foo
{
    public string Bar { get; set; }
    static void Main()
    {
        Foo foo = new Foo { Bar = "abc" };
        // breakpoint and hover shows: HiWorld="abc"
    }
}

我不再“做”C ++,但反射器说:

[DebuggerDisplay(S"HiWorld={Bar}")]
private __gc class Foo
{
    // Methods
    private: static void __gc* Main()
    {
        Foo __gc* <>g__initLocal0 = __gc new Foo();
        <>g__initLocal0->Bar = S"abc";
        Foo __gc* foo = <>g__initLocal0;
    }


    // Properties
    [CompilerGenerated]
    public: __property String __gc* get_Bar()
    {
        return this-><Bar>k__BackingField;
    }
    [CompilerGenerated]
    public: __property void __gc* set_Bar(String __gc* value)
    {
        this-><Bar>k__BackingField = value;
    }


    // Fields
    [CompilerGenerated]
    private: String __gc* <Bar>k__BackingField;
};

答案 1 :(得分:0)

我认为您的问题可能是您指定了宽字符串(L"ID={EmployeeID}")而不是CLR字符串(S"ID={EmployeeID}")。那么也许将L改为S并看看你如何去?

答案 2 :(得分:0)

大家一致认为C ++ IDE不支持它。