Debugging 如何在启动程序为.NET2时强制Visual Studio使用.NET4.x调试器 OK,下面是这样的场景:我正在开发C和C++中的COM组件。我最近将开发从VS2008中的.NET2升级到VS2010中的.NET4。测试涉及运行单独的应用程序。测试程序有一个“Go”按钮,用于加载COM组件并调用其功能。但是,测试程序在.NET2下运行

Debugging 如何在启动程序为.NET2时强制Visual Studio使用.NET4.x调试器 OK,下面是这样的场景:我正在开发C和C++中的COM组件。我最近将开发从VS2008中的.NET2升级到VS2010中的.NET4。测试涉及运行单独的应用程序。测试程序有一个“Go”按钮,用于加载COM组件并调用其功能。但是,测试程序在.NET2下运行,debugging,.net-4.0,visual-studio-2012,Debugging,.net 4.0,Visual Studio 2012,现在,由于升级到.NET4,我不能再简单地将测试程序的路径放在调试属性页的“启动外部程序”字段中,然后按Start。如果我这样做,没有为我的组件加载任何符号,它不会出现在模块列表中,并且无法调试。经过一番费解,我终于发现我现在需要先启动外部程序。然后打开“附加到进程”对话框。当我选择测试程序的进程时,“附加到:”框显示“自动:托管(V3.5、V3.0、v2.0)代码”。在连接之前,我必须按下选择按钮并特别选择“Managed v4.5,v4.0”。然后我按下测试程序上的Go按钮,一切正常 所以这

现在,由于升级到.NET4,我不能再简单地将测试程序的路径放在调试属性页的“启动外部程序”字段中,然后按Start。如果我这样做,没有为我的组件加载任何符号,它不会出现在模块列表中,并且无法调试。经过一番费解,我终于发现我现在需要先启动外部程序。然后打开“附加到进程”对话框。当我选择测试程序的进程时,“附加到:”框显示“自动:托管(V3.5、V3.0、v2.0)代码”。在连接之前,我必须按下选择按钮并特别选择“Managed v4.5,v4.0”。然后我按下测试程序上的Go按钮,一切正常


所以这里有一个问题:当我在VS中按start时,如何让Visual Studio在默认情况下启动.NET4.x调试器,这样我就不必每次都经历整个附加到进程的错误(这样那些在我之后的人就不会有同样的问题了)?

您可以强制测试程序在CLR v4上执行,方法是使用另一个框架目标或app.exe.config文件
元素重新构建它。在这种情况下,您并不是在真正测试COM互操作,CLR将检测到它正在与.NET类对话。谢谢。我无法重新生成测试程序,但app.exe.config技巧有效。我不知道你能做到。但是,这并不像µs在VS中的调试属性中添加某些内容那样方便,我认为这是非常可行的。这里的问题与此完全相同,感谢您节省了时间。这让我非常恼火,调试器一直默认为“Automatic:Managed(v3.5、v3.0、v2.0)”,即使我使用的是.NET4。微软怎么会把事情搞得这么糟。