VS2008 的本地窗口中出现奇怪的结果
static void Main(string[] args)
{
List<string> myList = new List<string>() { "A", "B" };
string myString = "abc";
int myInt = 42;
System.Xml.Linq.XElement root = new System.Xml.Linq.XElement("abc");
Console.WriteLine(myList.First()); //breakpoint on this line
Console.WriteLine(myString);
Console.WriteLine(myInt);
Console.WriteLine(root);
}
当我在旧的开发环境(vs2008、XP、32 位)上运行上述代码时,我看到:
args {string[0]} string[]
+ myList Count = 2 System.Collections.Generic.List<string>
myString "abc" string
myInt 42 int
+ root <abc /> System.Xml.Linq.XElement
当我在新的开发环境(vs2008、Windows7、64 位)上运行它时,我看到:
args {Length=0} array<System::String^> ^
+ myList 0x000000000254bb60 System::Collections::Generic::List<System::String^>^
myString "abc" System::String^
myInt 42 int
+ root 0x000000000254be60 { emptySequence=<undefined value> name=0x000000000254bd88 lastAttr=<undefined value> } System::Xml::Linq::XElement^
+ <>g__initLocal0 0x000000000254bb60 System::Collections::Generic::List<System::String^>^
在我看来我的新环境的 Locals 窗口正在对我说 C++。
如何更改本地窗口行为?
static void Main(string[] args)
{
List<string> myList = new List<string>() { "A", "B" };
string myString = "abc";
int myInt = 42;
System.Xml.Linq.XElement root = new System.Xml.Linq.XElement("abc");
Console.WriteLine(myList.First()); //breakpoint on this line
Console.WriteLine(myString);
Console.WriteLine(myInt);
Console.WriteLine(root);
}
When I run the above code on my old dev environment (vs2008, XP, 32-bit), I see:
args {string[0]} string[]
+ myList Count = 2 System.Collections.Generic.List<string>
myString "abc" string
myInt 42 int
+ root <abc /> System.Xml.Linq.XElement
When I run it on my new dev environment (vs2008, Windows7, 64-bit), I see:
args {Length=0} array<System::String^> ^
+ myList 0x000000000254bb60 System::Collections::Generic::List<System::String^>^
myString "abc" System::String^
myInt 42 int
+ root 0x000000000254be60 { emptySequence=<undefined value> name=0x000000000254bd88 lastAttr=<undefined value> } System::Xml::Linq::XElement^
+ <>g__initLocal0 0x000000000254bb60 System::Collections::Generic::List<System::String^>^
It seems to me that my new environment's Locals window is speaking C++ to me.
How can I change the Locals window behavior?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来调试器正在将您的 PDB 解释为 C++/CLI 而不是 C# 代码。我认为会发生这种情况的唯一原因是您的安装损坏。特别是围绕表达式求值器选择的注册表不正确。我认为此时您必须修复安装。
此外,您可能需要删除以下注册表项
It looks like the debugger is interpreting your PDB as being C++/CLI instead of C# code. The only reason I can think that would happen is if your install is broken. In particular the registry surrounding the expression evaluator choice is incorrect. I think at this point you're stuck with repairing the install.
Additionally you'll probably want to delete the following registry key
我通过取消选中“以兼容模式运行此程序”选项解决了我的问题。
I resolved my issue by unchecking the option to "Run this program in compatibility mode".