我想显示跟踪消息的行号。
示例跟踪: SomeMethodUsingPostSharpOnEntry(行:74):完成某事。
我不能使用stackframe / trace(运行时反射解决方案,并且不确定是否将分发pdb)。
已经查看了Microsoft选项(http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/6a7b021c-ec81-47c5-8f6a-2e280d548f3f)和基于pdb的解决方案(How can I include line numbers in a stack trace without a pdb?)。
有没有办法使用Postsharp或其他方式获取/制作LINE宏等效?
答案 0 :(得分:3)
现在不是很多的帮助,但C#5将通过“来电者信息属性”获得此帮助。有关详细信息,请阅读C#团队blog post about C# 5 and VS 11 beta,或查看有关这些属性的文档:
答案 1 :(得分:2)
PostSharp中有一个隐藏选项可以做到这一点。首先,您必须使用Message.Write的正确重载发出错误消息;接受例如MethodInfo的那个(或另一个MessageLocation)。
然后,您需要在Visual Studio选项/ PostSharp / Experimental中启用实验选项。
最后,重新启动Visual Studio。
这应该会导致PostSharp解析您作为参数传递的MethodInfo的位置。此功能依赖于Visual Studio,可能很慢,这就是为什么它是实验性的。