
我在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)在定制的基类库中不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)