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

标签 c# .net windows winforms .net-assembly

我在 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/

相关文章:

c# - 如何将 Gtk.Frame 的标签设为粗体?

c# - 字符串解析技术

python - 如何在 python 中将 SHGetFileInfo 与 SHGFI_PIDL 一起使用

javascript - 如何限制Web应用程序中的Windows快捷键

c++ - 好的免费 FTP 客户端库(用于 Windows C++ 商业应用程序)?

c# - 尝试获取结果列表时等待/异步错误

c# - 由于空引用,订阅的事件未触发

c# - 从 Windows Phone 8 共享

.net - MVVM Light 的 SimpleIoC 背后是什么

c# - SoundPlayer 不播放任何捆绑的 Windows 声音 PCM wav 文件