我正在使用Visual Studio 2008開發版的分析器。要執行「有針對性的分析」,我可以隨時通過「標記」手動設置分析器篩選器,以便隨時連接到我當前運行的測試代碼。但我想以編程方式插入標記。我想給我的測試代碼添加一個調用,指令或指令,這些代碼在執行時告訴分析器「這是一個名爲」BeginWork「的」標記「,」這是一個名爲'EndWork'的'標記'「。以編程方式插入分析標記
有沒有辦法做到這一點?如果不是,Visual Studio 2010是否具備這種能力?
我正在使用Visual Studio 2008開發版的分析器。要執行「有針對性的分析」,我可以隨時通過「標記」手動設置分析器篩選器,以便隨時連接到我當前運行的測試代碼。但我想以編程方式插入標記。我想給我的測試代碼添加一個調用,指令或指令,這些代碼在執行時告訴分析器「這是一個名爲」BeginWork「的」標記「,」這是一個名爲'EndWork'的'標記'「。以編程方式插入分析標記
有沒有辦法做到這一點?如果不是,Visual Studio 2010是否具備這種能力?
您可以使用Profiler API以編程方式插入標記。請參閱MSDN上的DataCollection.CommentMarkProfile方法文檔。
您只需從'Program Files [x86] \ Microsoft Visual Studio 9.0 \ Team Tools \ Performance Tools'中添加對Microsoft.VisualStudio.Profiler.dll的引用即可使用託管API。
您的測試代碼可能看起來是這樣的:
MarkOperationResult result;
result = DataCollection.CommentMarkProfile(markID1, "BeginWork");
// Validate result...
SomeOperation();
result = DataCollection.CommentMarkProfile(markID2, "EndWork");
// Validate result...
任何想法,如果有一個Silverlight的等價物? – 2011-01-13 17:10:19
另一個選擇可能是使用的PerformanceCounter的 - 創建自己的一個編程和更新。您可以使用Creating a PerfMon counter to record an average per call (C#)中的示例作爲參考。
我認爲值得一提的是,我發現VS2008探查器在處理非託管代碼時非常可怕。因人而異。我們使用AQTime自己,但我並不完全滿意。 – 2010-11-30 00:25:27