我可以在控制台应用程序中使用MVC Mini Profiler吗?

22

如何在C#控制台应用程序中使用mvc-mini-profiler?

另外,我很好奇,mvc mini profiler是否将实际的分析统计数据放在每个网页的左侧,还是仅仅是手动添加的自定义JavaScript代码?

我下载并运行了mvc示例,但找不到将结果放入javascript弹出窗口的代码。

3个回答

20

2
嘿,你的NuGet包很好用。只有一点小问题:我不得不使用程序集重定向,因为它似乎依赖于比最新版本更早的MiniProfiler版本。考虑更新你的nuspec以依赖于最新版本。无论如何,感谢你的努力 :) - Paul Suart
2
它似乎与3.1.1.140版本不兼容。有计划修复吗? - Darek
2
@PaulSuart 我遇到了以下错误:`程序集“MiniProfiler.Windows,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”中类型“MiniProfiler.Windows.ConsoleProfilingProvider”的方法“Start”没有实现。”(System.TypeLoadException)异常消息=“程序集“MiniProfiler.Windows,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”中类型“MiniProfiler.Windows.ConsoleProfilingProvider”的方法“Start”没有实现。” 如何更新nuspec?我的解决方案文件夹中没有.nuspec文件。 MiniProfiler版本为3.1.1.140。 - Abdul Rauf

11
核心计时对象(MiniProfiler)应该能够正常工作,配置连接挂钩等也应该可以,但您需要:
  • 添加自己的UI以显示结果
  • 定义自己的范围/生命周期(对于Web来说很容易-只需使用http请求)
  • 提供自己的存储挂钩(有一个扩展API可用于此,默认情况下使用http-context)
  • 手动传递分析器,或者定义一种合理的方式来查找当前的分析器实例
我知道有些人已经在WPF等中使用它的部分功能,所以它可以使用-但在我看来,选择有意义的部分,并使用它们编写一个自定义库来添加一些功能可能是有意义的。

1
@Mark... 你有这个正在生产中运行的截图吗?你是否正在使用最新版本的MiniProfiler维护它? - Richard B
@RichardB 我的主要关注点是网络。我没有在控制台中具体的示例场景。 - Marc Gravell

3

MiniProfiler V4(目前为预发布版本)有一个名为RenderPlainText()的方法。您可以在控制台或多线程异步服务器应用程序中直接使用它,无需进行任何其他设置:

public void Foo()
{
    MiniProfiler.Start("Interesting subroutine");
    using (MiniProfiler.Current.Step("Step1"))
    {
        using (MiniProfiler.Current.Step(nameof(AccessDb)))
        {
            AccessDb();
        }
        Thread.Sleep(100);
    }
    using (MiniProfiler.Current.Step("Step2"))
    {
        Thread.Sleep(100);
    }
    MiniProfiler.Stop();
    Console.WriteLine(MiniProfiler.Current.RenderPlainText());
}

这段代码片段会产生以下输出:

PCName at 8/2/2017 8:44:36 AM
  有趣的子程序 = 309.2毫秒
> 步骤1 = 204.8毫秒
>> 访问Db = 103.8毫秒 (sql = 56.2毫秒 in 2 cmds)
> 步骤2 = 100.9毫秒

如您所见,输出包括自定义计时(在此情况下为sql)的简短摘要。您可以通过提供您自己的RenderPlainText()版本来轻松更改此行为(例如,包含命令文本)。
欲了解更多信息,请查看:

1
对我来说,MiniProfiler.Settings.ProfilerProvider = new SingletonProfilerProvider(); 就足够了。这一点在 GitHub 上的原始文档中缺失了 ConsoleApp 的用例说明。 - sll
@sll,您是否在默认提供程序方面遇到了某些问题? - Leonid Vasilev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接