C# 在.NET中调试与发布
从我的开始,是否有一个全面的文档列出了C#应用程序(尤其是web应用程序)中调试和发布模式之间的所有可用差异C# 在.NET中调试与发布,c#,.net,asp.net,C#,.net,Asp.net,从我的开始,是否有一个全面的文档列出了C#应用程序(尤其是web应用程序)中调试和发布模式之间的所有可用差异 有什么区别?我不知道有一个简明的文档,但是: 调试。写调用在发行版中被剥离 在发行版中,由于优化,您的调用堆栈可能看起来有点“奇怪”,如 在调试模式下,使用GDI+绘图的速度要慢得多。发布版本: 是相当快的(最重要的)优化 无法调试(一步一步) 并且不包括用“debug”指令编写的代码 请参阅。“调试”和“发布”只是Visual Studio定义的预定义项目配置的名称。 要查看差异,请
有什么区别?我不知道有一个简明的文档,但是:
- 调试。写调用在发行版中被剥离
- 在发行版中,由于优化,您的调用堆栈可能看起来有点“奇怪”,如
要查看差异,请查看Visual Studio中项目属性中的“生成”选项卡
<system.web>
<compilation debug="true">
VS2005的差异包括:
- 调试配置中定义的调试常量
- 优化版本配置中启用的代码
- 在项目属性/生成中更改调试和发布配置的生成设置
- 通过右键单击解决方案资源管理器中的解决方案并选择Configuration Manager,创建您自己的自定义配置
我认为DEBUG常量的行为相当清楚(可以在#if预处理器指令或ConditionalAttribute中引用)。但我不知道有任何关于启用了哪些优化的全面文档-事实上,我怀疑微软会想在不通知的情况下免费增强他们的优化器如果您使用任何ASP.NET Ajax控件,一个主要的性能方面是:在运行时从JavaScript库中删除调试信息我在复杂的页面上看到了重大的性能改进。基于此设置,其他基于web的资源可以缓存,也可以不缓存 另外,请记住,web应用程序中的调试/发布由
web.config
文件决定,而不是由Visual Studio中的设置决定
<system.web>
<compilation debug="true">
更多信息:
另一个很大的区别是GC行为有些不同,JIT编译器将根据需要插入对GC.KeepAlive()的调用,以支持调试会话。当我将可执行文件分发到另一台计算机时,收到一条错误消息,指示系统缺少MSVCP110D.dll 堆栈溢出问题中说明了此问题的解决方案 在XXXXD.dll中,D表示dll文件是dll文件的调试版本。但是MS VisualC++可重分发包只包含DLL文件的发布版本。
<强>这意味着如果你需要发布一个你开发的程序需要在发布模式下构建它。你还需要在目标机上安装MS VisualC++ +可重新分发(正确版本)。
因此,我认为这是调试模式和发布模式之间的一个关键区别。您还可以管理希望仅在调试中或仅在带有预处理器标记的发布中运行的部分代码:
#if DEBUG
// Some code running only in debug
#endif
或
调试和发布只是为不同的解决方案配置添加标签。如果需要,您可以添加其他人。如果您希望从configuration manager添加更多配置—— 主要差异-
这个答案是正确的,但很肤浅,我想知道更多关于代码行为的细节,比如使用代码优化和使用调试常量。代码的行为方式有很多不同,您可以查看我前面的问题作为示例抱歉,如果这没有帮助的话。我建议你修改你的问题以便得到更好的答案。我认为调试常量的行为相当清楚(可以在#if预处理器指令或ConditionalAttribute中引用)(contd…)。。。(继续超过300c极限)。但我不知道有什么合作伙伴