.net – Win32控制台应用程序与CLR控制台应用程序

我正在开发一个C程序,我不打算使用.NET库或工具进行开发或部署,这意味着我可以使用Visual Studio Win32控制台应用程序创建它。但是,我听说在Visual Studio下使用CLR应用程序时的调试功能更加强大。所以我有几个问题:

>将CLR应用程序与Win32应用程序相比,即使您不使用任何.NET库或其他资源,也可以为开发过程添加功能,这是否真的是真的?
>如果是这样,我仍然可以开发/编译项目作为CLR项目,以利用这些项目,即使我将使用STL等开发纯C项目,也没有利用任何.NET功能。或者这样一个项目是否需要根本的区别,这将使它回归不平凡,意味着我应该坚持使用Win32控制台应用程序?

最佳答案
底线回答,如果您从不打算在应用程序中使用CLR或任何.Net对象,只需使用正常的Win32 C库。做任何事情会导致你痛苦的路上。

现在,为了回答关于调试的原始问题,与CLR调试相比,调试正常的C应用程序有一定的优势。从Visual Studio 2005开始,C#和VB.Net开始着重于在本地/汽车/手表窗口中显示变量更有价值。它主要是通过引入.Net属性,如DebuggerDisplay,DebuggerTypeProxy和可视化框架。

如果您不使用任何.Net类型,您将无法获得这些好处。

C表达式求值器不会利用这些任何一个。它有自己的定制类型显示的方法。但它并不像属性样式那么有特色(或潜在的危险),因为它不允许代码在debugee进程中运行。

这不是说调试C提供了糟糕的体验。它只是不同,许多STL容器类型有更好的显示。

调试CLR应用程序也有一定的不利因素。例如,调试优化的代码有时候是不可能的,因为JITer会隐藏局部变量,参数,通常是“this”。调试一个类似构造的C应用程序也可能令人沮丧,但是您可以随时抓取寄存器并将其清除,看看发生了什么。对CLR应用程序做同样的事情至多是困难的。

转载注明原文:.net – Win32控制台应用程序与CLR控制台应用程序 - 代码日志