Debug.Assert出现在发布模式中

我们都知道在发布模式下编译时, Debug.Assert不会被编译到dll中。 但由于某些原因, Debug.Assert 确实出现在我编写的组件的发行版中。 我怀疑我可能搞乱了我的csproject设置。

知道为什么Debug.Assert出现在发布模式?

P / S:在问这个问题之前,我已经仔细检查以确保我确实在发布模式下编译。

注2:我已经仔细检查了我的csproject,我发现在Release配置中,未勾选Define DEBUG常量 ,表明对于这部分我的设置是正确的。

检查项目文件中的DefineConstants属性,它应该是:

  • DEBUG;TRACE for Debug configuration
  • 发行版配置的TRACE

检查代码中是否有#define DEBUG

我找到了答案; 这是因为在项目内部的cs文件的开头定义了一个#define DEBUG预处理器。 删除它解决了这个问题

请记住,“发布模式”只是一个名为 “发布”的构建配置。 这并不一定意味着正在使用的编译设置:完全可以创建一个名为“Release”的配置,它实际上使用调试设置编译所有内容。 或者,事实上,根本不编译任何东西!

其他答案提示了一些要看的地方 – 但基本上听起来你的项目或解决方案设置已重新配置“发布”版本以包含调试信息。

尚未提及的可能性:在VS中,如果您下拉构建配置combobox(通常选择“Debug”或“Release”)并选择“Configuration Manager”,您可以看到每个解决方案构建配置对每个项目。 您会注意到,例如,您可以在解决方案上配置“发布”版本,以便在调试模式下构建一些组件(如果您愿意)。

你检查过项目文件了吗? 定义常量不应包含DEBUG

  pdbonly true bin\Release\ TRACE prompt 4  

您是否使用任何类型的构建过程,例如Nant或MSBuild,甚至是Web部署项目?

此外,请确保在发布模式下,转到项目属性并检查“定义DEBUG常量”是否未选中。

作为madgnome和rdkleine所做的进一步说明,您是否还可以检查解决方案何时设置为以发布模式构建,您的项目也将设置为以发布模式构建。 在项目级别设置发布时,可以在调试模式下构建项目。

为此,右键单击解决方案中的VS解决方案资源管理器,然后选择配置管理器。 检查发布项目的“活动解决方案配置”是否为其配置发布,而不是调试。

如果这仍然没有消失,那么你可以添加一段被“#if DEBUG”包围的代码,看看是否编译好了吗?