Debug.Assert出现在发布模式中

时间:2010-06-11 09:05:20

标签: c# visual-studio-2008

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

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

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

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

6 个答案:

答案 0 :(得分:28)

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

  • <DefineConstants>DEBUG;TRACE</DefineConstants>用于调试配置
  • <DefineConstants>TRACE</DefineConstants> 发布配置

检查代码中是否有#define DEBUG

答案 1 :(得分:14)

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

答案 2 :(得分:11)

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

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

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

答案 3 :(得分:4)

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

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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

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

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