2011-09-11 51 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()來輕鬆改變此行爲(例如,包括命令文本)。

欲瞭解更多信息檢查:

相關問題