例如,我运行了一些需要监视的 .net 应用程序,然后在 App1 中调用 MethodA,我的监视应用程序应该检测到这一点。我有很多正在运行的应用程序,这里提出的解决方案是重新编译所有这些应用程序,并在我们想要监控的所需方法中包含一个新行。我只想在绝对没有办法的情况下这样做。那么有人做过这样的事情吗?基本上,我需要创建一个新应用程序,当我单击它上的按钮时,它会告诉我:在 App1 中实时调用了 MethodA...
谢谢!
例如,我运行了一些需要监视的 .net 应用程序,然后在 App1 中调用 MethodA,我的监视应用程序应该检测到这一点。我有很多正在运行的应用程序,这里提出的解决方案是重新编译所有这些应用程序,并在我们想要监控的所需方法中包含一个新行。我只想在绝对没有办法的情况下这样做。那么有人做过这样的事情吗?基本上,我需要创建一个新应用程序,当我单击它上的按钮时,它会告诉我:在 App1 中实时调用了 MethodA...
谢谢!
有几种方法可以做到这一点。一种是使用 log4Net,通过调用 log4Net 的 write 方法“散布”您的方法。您可以选择各种日志记录附加程序(目的地),例如电子邮件或数据库,但一个鲜为人知的技巧是下载独立程序DebugView(SysInternals -> 现在是 Microsoft),它会侦听默认消息。
PostSharp交付方式,如何编辑已编译的 .net 代码。编辑是用编译(属性)或配置代码的 C# 代码编写的。Thay 有一种机制,可以记录(或填充或其他任何内容)方法/事件调用等等。
我想,这是你需要的工具。
System.Diagnostics.PerformanceCounter 是一个很好的起点。您可以创建可以在性能控制面板小程序中查看的新计数器。一开始它们有点令人困惑,但是当您意识到平均计数器需要两个组件来计算百分比时,它会变得容易得多。
我不知道 .NET 是否有匹配机制,但 Java 允许您指定代理 JAR 文件,即在加载每个类时通知/调用的类。然后,通过仪器/字节码操作,您可以拦截此类方法调用。也许您可以在 .NET 中以某种方式替换类加载器。没有把握。
反射是您在 .NET 中寻找的东西,但我不确定您想要做什么背后的实现细节。