#if(DEBUG)在定制的基类库中不起作用

#if(DEBUG)在定制的基类库中不起作用,第1张

概述#if(DEBUG)在定制的基类库中不起作用

我在VS 2010 C#中创build一个windows应用程序。 这是一个networking爬虫应用程序,并使用N层应用程序结构(一个windows应用程序和该项目中的许多类库)。 上周,我在所有项目中实现了一个日志系统来创build日志文本,以解决性能问题。 但是现在我想在释放模式中禁用这个日志function。

我Google了,并从CodeProject得到一个例子。 请参阅下面的代码。

public class ModeDetector { public virtual bool IsDeBUG { get { bool isDeBUG = false; #if (DEBUG) isDeBUG = true; #else isDeBUG = false; #endif return isDeBUG; } } public bool IsRelease { get { return !IsDeBUG; } } }

我在我的基类库中创build了这个类。 为所有参考项目获得这个类。 我在windows应用程序中调用这个方法。 喜欢

if (new Sun.lib.ModeDetector().IsDeBUG) MessageBox.Show("DeBUG Mode"); else MessageBox.Show("Release Mode");

并将我的项目构buildconfiguration更改为“发布”。 但是这段代码总是显示“deBUGging模式”消息。 但是,当我在我的windows应用程序中创build这个类是正常的。 但是我太担心在每个项目中创build这个类。

PowerShell中的echo和Write-Host有什么区别?

获取命令行解释器

如何在不安装MS Office并且不使用Interop库的情况下读取服务器中的MS Office文件?

我怎样才能得到用户最近和/或经常打开的文件列表?

是否有可能等到其他线程处理过程input消息?

请告诉我什么是确定一个(或多个)项目的最佳实践是工作deBUGging或发布模式。 我如何在整个项目中使用这个类?

编辑:

我在类库项目的DeBUG BUG文件夹中引用类库。

我的类库和胜利forms的应用程序都躺在同样的解决scheme。

尝试声明并行任务时出错

在屏幕上自动点击鼠标

支持阿拉伯字符从右到左

64位版本的windows SDK中的Fxcop在哪里?

进程名称总是exe的名称?

DEBUG标志是为每个库设置的,而不是每个解决方案。 您需要在解决方案中使用的每个库中设置(或删除)该标志。

最有可能的是,您尝试重新创建类似于DeBUG.XXXX方法中使用的条件属性。 如果没有定义给定的符号, 条件属性允许方法调用无 *** 作。

即查看DeBUG.Write方法,该方法在调试版本(在定义DEBUG时)中进行跟踪,并且在版本中没有 *** 作:

[ConditionalAttribute("DEBUG")] public static voID Write(Object value)

请注意,您将无法实现所需的虚拟功能,因为具有条件属性的方法将根据条件符号被调用,而方法内部的代码不会改变。

#if改变什么代码将被编译。 编译的DLL将只有一个分支(匹配条件)。

您需要在发行版和调试版本中引用匹配的库。 如果您对所有项目使用单一解决方案,将自动进行设置,如果您有单独的解决方案,我相信您需要手动编辑“.csproj”文件,以根据定义包含不同版本的库。

谢谢marcus 。 我按照你的指示,并重写我的代码。

– #if(DEBUG)

MessageBox.Show("DeBUG Mode");

– #else

MessageBox.Show("Release Mode");

– #万一

请注意请删除“ – ”。

再次感谢。

总结

以上是内存溢出为你收集整理的#if(DEBUG)在定制的基类库中不起作用全部内容,希望文章能够帮你解决#if(DEBUG)在定制的基类库中不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1279007.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存