我想编写一个 Visual Studio 宏或类似的东西,它可以获取函数名称并插入错误报告部分的预设位置。看例子就更清楚了
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”,通过引用一个表来解决“混淆”日志问题。