1

我在 .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,要么什么都不做,具体取决于发布配置。但这不会让我摆脱 try finally 构造。有没有更好的方法来解决这个问题?

4

1 回答 1

5

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

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

[Conditional("TRACE")]

调用该方法的所有代码只会在构建定义TRACE常量时编译到代码中。

于 2017-06-28T07:09:33.627 回答