在发布版本中省略代码

时间:2017-06-28 07:06:18

标签: c# .net dll smartinspect

我在跟踪方法等的.net库中使用了smartinspect。但是对于发布配置,我想避免部署smartinspect以及跟踪代码中的所有内容的开销。有没有一种简单的方法来实现这一点,而不是每次调用方法时都使用编译器指令?

示例代码:

    public bool OpenDocument(string srcFile)
    {
        SiExportWordSession.EnterMethod(this, "OpenDocument");
        try
        {
            SiExportWordSession.LogString("srcFile", srcFile);

            try
            {
                _doc = new Document(srcFile);
                return true;
            }
            catch (Exception e)
            {
                SiExportWordSession.LogException(e);
                ErrorName = e.GetType().Name;
                ErrorMessage = e.Message;
                return false;
            }
        }
        finally
        {
            SiExportWordSession.LeaveMethod(this, "OpenDocument");
        }
    }

我的第一个想法是为smartinspect创建一个包装器,它可以调用smartinspect或不执行任何操作,具体取决于发行版配置。但这不会让我摆脱尝试最终的构造。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:5)

有一种方法,但它仍然需要您映射您正在使用的方法。

关键是要为您的方法添加Conditional属性,以指示它将运行的构建:

[Conditional("TRACE")]

当构建定义TRACE常量时,所有调用该方法的代码都将被编译到代码中。