c# - 在构建发布 exe 之前是否需要删除断点?

标签 c# .net visual-studio

我主要在带有断点的 Debug模式下测试 Visual Studio C# 程序。有时我需要构建发布版本 .exe 来运行一些测试,然后返回到 Debug模式进行测试。

在构建发布版本之前,我不会删除我的断点。是否有任何理由删除断点?有什么东西会转移到发布的 exe 中吗?我没有看到任何东西,但我只是想确定一下。

谢谢!

最佳答案

回到美好的过去,你可以在 exe 和 dll 文件的二进制代码中有一个 INT 3 机器指令,它是断点的汇编定义并且会(并且仍然会)导致进入调试器。没有 .NET 编译器/链接器会这样做。实际上,它不能——因为托管 exe 文件包含即时编译的 IL。
在 .NET 中,尤其是在 Microsoft 环境中,断点是 IDE 的一项功能,与 运行时,永远不会以二进制形式结束。

可以在此处找到有关托管断点机制的古老但详尽的文章:https://blogs.msdn.microsoft.com/jmstall/2004/12/28/how-do-managed-breakpoints-work/

断点存储在 VS 解决方案的配置文件中只是为了方便(因此开发人员不会在 Visual Studio session 之间丢失断点)。

相比之下,如果使用或配置不当,Debug.Assert 调用可能会对发布版本造成危害。

关于c# - 在构建发布 exe 之前是否需要删除断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763742/

相关文章:

c# - EF 6 CodeFirst 添加迁移脚手架并生成不存在的更改

c# - 需要合并 Dll 并创建单个程序集

c# - 可以通过 "Add Service Reference"添加 RESTful WCF 服务吗?

javascript - 在 Visual Studio 2010 中运行 javascript 函数时出现无效 ID 错误

c# - Lucene 和正斜杠

c# - 无法读取配置部分 'assemblies',因为它缺少部分声明

c# - ASP.NET MVC $.post 调用返回字符串...需要有关 jqGrid 格式的帮助

java - Math.Tan() near -Pi/2 在 .NET 中错误,在 Java 中正确?

c# - 清除控制台缓冲区

asp.net - 带有Linux Docker自动生成的 “Service '的ASP.NET无法构建:COPY失败:stat/var/lib/docker/tmp/docker-builder”