我在 VS 2010 C# 中创建了一个 Windows 应用程序。它是一个网络爬虫应用程序并使用 N 层应用程序结构(一个 Windows 应用程序和许多类库 项目)。上周我在所有项目中实现了一个日志系统,用于创建日志文本 解决性能问题。但是现在我想在 Release模式下禁用这个日志功能。
我用谷歌搜索并从 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; }
}
}
我在我的基类库中创建了这个类。获取此类以供所有引用 项目。我在我的 Windows 应用程序中调用此方法。喜欢
if (new Sun.lib.ModeDetector().IsDebug)
MessageBox.Show("Debug Mode");
else
MessageBox.Show("Release Mode");
并将我的项目构建配置更改为“发布”。但此代码始终显示“ Debug模式”消息。但是当我在我的 Windows 应用程序中创建这个类时它工作正常。但是我太担心在每个项目中创建这个类。
请告诉我确定项目是工作调试还是 Release模式的最佳实践是什么。我如何在整个项目中使用此类。
编辑:
我在类库项目的Debug bug文件夹中引用类库。
我的类库和 win 表单应用程序位于相同的解决方案上。
最佳答案
DEBUG
标志是按库设置的,而不是按解决方案设置的。您需要在解决方案中使用的每个库中设置(或删除)该标志。
关于c# - #if (DEBUG) 在定制的基类库中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18248408/