我们都知道在发布模式下编译时,Debug.Assert
不会被编译到dll中。但由于某些原因,Debug.Assert
出现在我编写的组件的发行版本中。我怀疑我可能搞乱了我的csproject设置。
知道为什么Debug.Assert
出现在发布模式中?
注意2:我已经仔细检查了我的csproject,我发现在Release配置中,没有勾选定义DEBUG常量,表明对于这部分我的设置是正确的。
答案 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”包围的代码,看看是否编译好了吗?