首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PreBuild期间插入函数名

在PreBuild期间插入函数名
EN

Stack Overflow用户
提问于 2008-10-30 17:11:04
回答 3查看 334关注 0票数 2

我想写一个Visual Studio宏或类似的东西,可以获取函数名并插入到错误报告部分的预设位置。如果你看下面的例子就会更清楚

代码语言:javascript
复制
Class SampleClass
{
    public void FunctionA()
    {
        try
        {
                //Do some work here
        }
        catch (Exception ex)
        {
                Logger.WriteLine(LogLevelEnum.Error, "SampleClass", "FunctionA Failed");
                Logger.WriteLine(LogLevelEnum.Error, "FunctionA", ex.ToString());
        }
        finally
        {
        }
    }
}

因此,我遵循了我的通用库中大多数关键函数的类似模式。我希望能够在预构建过程中将"FunctionA“插入日志记录部分,这样我就不必记住输入正确的名称,或者在复制和粘贴后忘记重命名。可以从工具栏手动调用,也可以通过快捷键调用。

那么,我应该从哪里开始呢?

注意:我被认为是.Net的中级水平,已经用C#和VB写了3年多,但我对宏是个新手,尽管我不介意学习。不要担心代码本身和异常,这只是一个例子。

编辑:感谢Ovidiu Pacurar和cfeduke。我在这里想要的是一种改变和遗忘的方式。即使没有抛出异常,PostSharp也会在这些函数中的每一个上产生开销。从堆栈跟踪中挖掘是可行的,但在某些情况下,我也希望只记录"FunctionA Failed“,而不会花费太多处理来获取堆栈跟踪。此外,如果库是模糊的,堆栈跟踪将是隐秘的。

实际上,这个功能还有另一个需求,我之前忘记提过了。当库准备好交付时,我想通过引用一个表,将所有的函数名改为函数代码,"FunctionA“可能是"0001",以解决”混淆“日志的问题。

EN

回答 3

Stack Overflow用户

发布于 2008-10-30 17:17:24

看一下System.Diagnostics.StackTrace,然后您可以只创建一个从堆栈获取函数的日志调用。

票数 1
EN

Stack Overflow用户

发布于 2008-10-30 17:27:51

我希望C#有__FILE____LINE__-like宏,但是它没有,但是你可以使用PostSharp编译后的process C#。这样做的好处是,不必调用堆栈跟踪的开销来在运行时获取方法名称。在异常处理过程中,性能开销可能不是您关心的问题,但在任何情况下,PostSharp都是另一个可以执行该工作的工具。

PostSharp的示例视频所做的事情与您正在尝试做的事情类似。看看PostSharp站点首页上的这段示例代码,让您耳目一新:

代码语言:javascript
复制
public  class SimplestTraceAttribute : OnMethodBoundaryAspect
{
  public override void OnEntry( MethodExecutionEventArgs eventArgs)
  {
    Trace.TraceInformation("Entering {0}.", eventArgs.Method);
    Trace.Indent();
  }
  public override void OnExit( MethodExecutionEventArgs eventArgs)
  {
    Trace.Unindent();
    Trace.TraceInformation("Leaving {0}.", eventArgs.Method);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2008-10-30 17:26:48

看看PostSharp吧。它允许你用非常简单的方法来做这件事。

还有一些带有日志记录的样本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/250973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档