2011-09-11 49 views
19

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

另外好奇的是,mvc mini profiler是否在每个网页的左侧放置了实际的配置文件统计信息,或者只是手动完成自定义javascript代码?

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

回答

11

核心计时对象(MiniProfiler)应该可以正常工作,应该像配置连接钩子一样;但是你需要;

  • 添加自己的UI来显示结果
  • 定义自己的范围/寿命(网页很容易 - 只需在HTTP请求)
  • 提供自己的存储钩(有扩展API为此,使用默认IIRC HTTP的上下文中)
  • 手动通过周围探查,或定义一个明智的方式来查找当前探查实例

我知道有些人使用了它的部分为WPF等,所以它可以使用 - 但海事组织它可能是有道理的,只选择有意义的位,并使用它们来编写一个自定义库,添加一些真棒。

+1

@马克......你有没有在生产环境中运行的这个任意截图?您是否使用MiniProfiler的最新版本来维护它? –

+0

@RichardB我主要关注网络。我在控制台中没有任何特定的示例场景。 –

20

是的,你可以!我创建了一个NuGet包,使它更容易运行。

退房MiniProfiler.Windows: http://nootn.github.com/MiniProfiler.Windows/

也为如何设计一个良好的控制台应用程序进行性能分析的详细文章: http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html

+2

嘿,你的nuget包装效果很好。一件小事:我必须使用程序集重定向,因为它似乎取决于比最新版本更早的MiniProfiler版本。考虑更新您的nuspec以依赖最新版本。感谢您的努力:) –

+2

它似乎不符合版本3.1.1.140。任何计划解决它? – Darek

+2

@PaulSuart我正在面对来自程序集'MiniProfiler.Windows,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null'类型为'MiniProfiler.Windows.ConsoleProfilingProvider'的方法'Start'中的followint错误没有实现。 “(System.TypeLoadException)\t从程序集'MiniProfiler.Windows,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null'类型为'MiniProfiler.Windows.ConsoleProfilingProvider'的异常消息=”方法'开始''没有实现。' 如何更新nuspec?我的解决方案文件夹中没有.nuspec文件。 MiniProfiler版本是3.1.1.140 –

0

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在2017年8月2日上午8点44分36秒
   有趣子程序= 309.2ms
>第一步= 204.8ms
> > ACCESSDB = 103.8ms(SQL =在2 CMDS 56.2ms)
>第二步= 100.9ms

正如你可以看到输出包括自定义定时的简短摘要(SQL在这种情况下)。您可以通过提供您自己的版本RenderPlainText()来轻松改变此行为(例如,包括命令文本)。

欲了解更多信息检查:

相关问题