更新:经过更多的挖掘,这似乎是静态方法和成员变量的问题。我在MSDN论坛上找到了this post,但没有答案。

我在同一解决方案中编写了带有混合模式dll的C#WinForms应用程序(.Net 2.0)。当我在调试时进入本机代码时,无法“观察”许多指针变量。这似乎是一种奇怪的行为,因为某些指针是可观察的(我想这是一个词:))

例如:

Connection* Connection::Instance()
{
    if (innerConnection == NULL)
    {
        innerConnection = new Connection();
    }

    return innerConnection;
}


在逐步执行此方法时,innerConnection对我不可用。在监视窗口中,此值是“错误:标识符'innerConnection'超出范围”。内部连接在此不应超出范围。

同样在此示例中,在“汽车”窗口中,“此”具有

C#项目被设置为启动项目,并且它引用了C ++ dll项目(全部在同一解决方案中)。我在C#项目中启用了本机调试,并在C ++ / CLI项目中将调试模式设置为Auto。我正在使用Visual Studio 2005

最佳答案

就我而言(本机EXE->混合DLL->托管程序集(所有Visual Studio 2008)),我不得不将可执行文件的调试模式设置为“混合”。使用默认的“自动”设置,我无法进入托管程序集。

08-19 16:49