发布版本 .dll 仍包含应通过预处理器指令删除的代码

问题描述

我有一个 c# .net 核心项目,它使用预处理器指令 (#if DEBUG) 在调试期间启用不安全的 SSL 连接。现在,当我发布构建整个项目并使用 dotpeek 打开生成的 dll 时,我仍然在那里找到被“#if DEBUG”包围的代码。我原以为在构建过程中会删除代码。我还检查了在 VS 的 BuildSettings 中,未选中 Release-Build-Configuration 的“定义调试”。我的想法是如何工作的吗?我可以在 .dll 中的哪个位置找到“DEBUG”的定义 - 在文件顶部或其他地方?

#if DEBUG
        disableSecureSSLConnections();
#endif

Release Build Configuration

解决方法

正如评论部分中提到的@canton7。实际问题是 .pdb 文件可用于反汇编程序。这导致 dotPeek 显示实际来源