C# 哪个.NET性能和/或内存分析器允许我分析DLL?

C# 哪个.NET性能和/或内存分析器允许我分析DLL?,c#,performance,profiling,memory-profiling,C#,Performance,Profiling,Memory Profiling,我为其他程序编写了许多基于.NET的插件,这些程序通常编译为DLL,由本机应用程序启动。我一直在使用Equalec的profiler,它工作得很好,但是现在我想要一些具有更多功能的东西,包括分析内存使用情况的能力 我试用了RedGate的Ant分析器,但据我所知,没有办法评测DLL。唯一的选择是配置EXE 所以,我的问题是,还有哪些分析工具可以让我分析单个库DLL而不是EXE。我假设这需要像Equalec一样将配置文件代码注入到库中?是的,确实是这样。DLL只是一个代码块,它与EXE中的代码合并

我为其他程序编写了许多基于.NET的插件,这些程序通常编译为DLL,由本机应用程序启动。我一直在使用Equalec的profiler,它工作得很好,但是现在我想要一些具有更多功能的东西,包括分析内存使用情况的能力

我试用了RedGate的Ant分析器,但据我所知,没有办法评测DLL。唯一的选择是配置EXE


所以,我的问题是,还有哪些分析工具可以让我分析单个库DLL而不是EXE。我假设这需要像Equalec一样将配置文件代码注入到库中?

是的,确实是这样。DLL只是一个代码块,它与EXE中的代码合并。DLL不能“拥有”任何内存,AppDomain可以。但是,您可以看到在来自DLL的代码中花费了多少时间

如果编写的测试程序本身不进行任何主要内存分配,但调用DLL中类的方法,则可以将内存使用情况归因于DLL,而不会出现问题。编写这样的测试程序并使其类似于在实际程序中使用DLL代码的方式并不容易。

而且两者都允许您仅分析DLL

您必须在“设置”对话框的“挂钩DLL”部分指定感兴趣(或不感兴趣)的DLL。然后启动应用程序-仅收集指定DLL中的数据


完全披露:我是创建这些工具的公司的软件工程师。

这可能不再适用于您,但我想我会在这里为子孙后代介绍,Redgate Ants profiler允许您使用自定义过滤器分析单个dll:

我们使用ANTS Profiler 3项目向导,以通常的方式设置“CoolApp”的性能评测。向导的最后一个屏幕是我们可以自定义项目以将分析限制为仅一个库的点。我们指定要使用自定义筛选器来限制要分析的应用程序区域

我们编辑自定义过滤器并指定我们只对分析特定名称空间感兴趣,如下所示。在本例中,我们设置了一个过滤器,该过滤器将使ANTS Profiler仅评测属于RedGate.Library1命名空间的方法。这正是我们想要的,我们现在已经准备好开始分析

现在,我们可以以通常的方式继续分析。但是,当我们通过拍摄快照或关闭应用程序获得性能评测结果时,它们将只包含关于RedGate.Library1.dll中方法的数据

包括来自网站的文本,以防链接失效