共用方式為


HOW TO:建立 Web 效能測試結果檢視器的 Visual Studio 增益集

您可以使用下列命名空間來擴充 [Web 效能測試結果檢視器] 的 UI:

此外,您必須加入 LoadTestPackage DLL 的參考,這個檔案位於 %ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies 資料夾中。

  • 若要擴充 [Web 效能測試結果檢視器] 的 UI,您必須建立 Visual Studio 增益集和使用者控制項。下列程序將說明如何建立增益集、使用者控制項,以及如何實作必要的類別,以便擴充 [Web 效能測試結果檢視器] 的 UI。

需求

  • Visual Studio Ultimate

建立或開啟包含 ASP.NET Web 應用程式和 Web 效能測試和負載測試專案的方案。

若要準備擴充 Web 效能測試結果檢視器

建立 Visual Studio 增益集

增益集是編譯過的 DLL,可以在 Visual Studio 整合式開發環境 (IDE) 中執行。編譯有助於保護您的智慧財產並且改進效能。雖然您可以用手動方式建立增益集,但是使用 [增益集精靈] 要簡單許多。這個精靈會建立基本但實用的增益集,建立完成之後便可立即執行。當 [增益集精靈] 產生基本程式之後,您就可以加入程式碼並且進行自訂。

[增益集精靈] 可讓您提供增益集的顯示名稱和描述,這兩項資訊都會顯示在 [增益集管理員] 中。您可以選擇由精靈產生程式碼,將開啟增益集的命令加入至 [工具] 功能表,也可以選擇顯示增益集的自訂 [關於] 對話方塊。當精靈完成時,您就會擁有一個新專案,其中僅包含一個實作增益集的類別。該類別名為 Connect。

您將在本主題的結尾使用 [增益集管理員]。

如需詳細資訊,請參閱建立增益集和精靈

若要使用增益集精靈建立增益集

  1. 在 [方案總管] 中,以滑鼠右鍵按一下方案、選取 [加入],然後選取 [新增專案]。

    [新增專案] 對話方塊隨即出現。

  2. 展開 [已安裝的範本] 底下的 [其他專案類型],然後選取 [擴充性]。

  3. 在範本的清單中,選取 [Visual Studio 增益集]。

  4. 在 [名稱] 底下,輸入增益集的名稱。例如 WebPerfTestResultsViewerAddin。

  5. 選擇 [確定]。

    [Visual Studio 增益集精靈] 隨即啟動。

  6. 請選擇 [下一步]。

  7. 在 [選取程式語言] 頁面上,選取您要用來撰寫增益集的程式語言。

    注意事項注意事項

    本主題將針對範例程式碼使用 Visual C#。

  8. 在 [選擇主應用程式] 頁面上,選取 [Visual Studio] 和清除 [Visual Studio 巨集。]。

  9. 請選擇 [下一步]。

  10. 在 [輸入名稱和描述] 頁中,輸入增益集的名稱和描述。

    建立增益集之後,其名稱和描述會顯示在 [增益集管理員] 的 [可用的增益集] 清單中。您可以為增益集加入詳細的描述資料,讓使用者了解增益集的功能、運作方式等。

  11. 請選擇 [下一步]。

  12. 在 [選擇增益集選項] 頁面上,選取 [當主應用程式啟動時載入增益集]。

  13. 清除其餘核取方塊。

  14. 在 [[關於] 對話方塊資訊選擇] 頁面上,您可以指定是否要將增益集的相關資訊顯示在 [關於] 對話方塊中。如果您想要顯示這項資訊,請選取 [是,我希望增益集可以提供 [關於] 對話方塊資訊] 核取方塊。

    可加入至 Visual Studio [關於] 對話方塊的資訊包括版本號碼、支援詳細資料、授權資料等等。

  15. 請選擇 [下一步]。

  16. 您所選取的選項就會顯示在 [摘要] 頁面上,供您檢閱。如果您對設定覺得滿意,請按一下 [完成] 建立增益集。如果您想要變更某些設定,請按一下 [上一頁] 按鈕。

    此時,系統已建立新的方案和專案,而且新增益集的 Connect.cs 檔案會顯示在 [程式碼編輯器] 中。

    完成下列程序之後,您會將程式碼加入至 Connect.cs 檔案,以便建立這個 WebPerfTestResultsViewerAddin 專案所參考的使用者控制項。

建立增益集之後,您必須先將它登錄至 Visual Studio 中,才能在 [增益集管理員] 中啟動該增益集。使用具有 .addin 副檔名的 XML 檔,即可完成這項作業。

.addin 檔案會描述 Visual Studio 將增益集顯示在 [增益集管理員] 中所需的資訊。當 Visual Studio 啟動時,它會查看 .addin 檔案位置,以尋找可用的 .addin 檔案。如果找到檔案,就會讀取 XML 檔案,並將按一下以啟動增益集時所需的資訊提供給 [增益集管理員]。

使用 [增益集精靈] 建立增益集時,會自動建立 .addin 檔案。

如需詳細資訊,請參閱增益集登錄

Ff458704.collapse_all(zh-tw,VS.110).gif增益集檔案位置

[增益集精靈] 會自動建立兩個 .addin 檔案的複本,如下所述:

.Addin 檔案位置

.DLL 檔案位置

描述

根專案資料夾

\Documents\Visual Studio 11\Projects\MyAddin1\MyAddin1\

本機路徑 (MyAddin1.dll)

用來部署增益集專案。包含在專案中以便輕鬆編輯,而且具有 XCopy 部署方式的本機路徑。

增益集資料夾

\Documents\Visual Studio 11\Addins\

-或-

Shared Documents Location\Addins\

專案偵錯資料夾

(例如 \Documents\Visual Studio 11

Projects\MyAddin1\MyAddin1\bin\)

用來在偵錯環境中執行增益集。必須指向目前組建組態的輸出路徑。

建立 Windows Form 控制項程式庫專案

在上一個程序中建立的 Visual Studio 增益集會參考 Windows Form 控制項程式庫專案,以便建立 UserControl 類別的執行個體。

如需詳細資訊,請參閱Windows Form 控制項

若要建立要用於 Web 測試結果檢視器的控制項

  1. 在 [方案總管] 中,以滑鼠右鍵按一下方案、選取 [加入],然後選取 [新增專案]。

    [新增專案] 對話方塊隨即出現。

  2. 在 [已安裝的範本] 底下,展開 [Visual Basic] 或 [Visual C#],然後選取 [Windows]。

    注意事項注意事項

    本主題將針對範例程式碼使用 Visual C#。

  3. 在範本的清單中,選取 [Windows Form 控制項程式庫]。

  4. 在 [名稱] 底下,輸入增益集的名稱。例如 WebPerfTestResultsViewerControl。

  5. 選擇 [確定]。

    Windows Form 控制項程式庫專案 WebPerfTestResultsViewerControl 就會加入至 [方案總管],而且 UserControl1.cs 會以設計模式顯示。

  6. 從 [工具箱] 中,將 DataGridView 拖曳至 userControl1 的介面上。

  7. 按一下 DataGridView 右上角的動作標籤圖像 (智慧標籤圖像) 並遵循下列步驟進行:

    1. 選取 [停駐於父容器中]。

    2. 清除下列核取方塊:[啟用加入]、[啟用編輯]、[啟用刪除] 和 [啟用資料行重新調整順序]。

    3. 選取 [新增欄]。

      [加入資料行] 對話方塊隨即顯示。

    4. 在 [類型] 下拉式清單中,選取 [DataGridViewTextBoxColumn]。

    5. 清除 [上標題文字] 中的文字 "Column1"。

    6. 選擇 [加入]。

    7. 選取 [關閉]。

  8. 在 [屬性] 視窗中,將 DataGridView 的 [(名稱)] 屬性變更為 resultControlDataGridView。

  9. 以滑鼠右鍵按一下設計介面,然後選取 [檢視程式碼]。

    UserControl1.cs 檔案就會顯示在 [程式碼編輯器] 中。

  10. 將具現化 UserControl 類別的名稱從 UserContro1 變更為 resultControl:

    namespace WebPerfTestResultsViewerControl
    {
        public partial class resultControl : UserControl
        {
            public resultControl()
            {
                InitializeComponent();
            }
    

    在下一個程序中,您會將程式碼加入至 WebPerfTestResultsViewerAddin 專案的 Connect.cs 檔案,而這個檔案將會參考 resultControl 類別。

    您稍後會將其他程式碼加入至 Connect.cs 檔案。

將程式碼加入至 WebPerfTestResultsViewerAddin

若要將程式碼加入至 Visual Studio 增益集以擴充 Web 測試結果檢視器

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 WebPerfTestResultsViewerAddin 專案中的 [參考] 節點,然後選取 [加入參考]。

  2. 在 [加入參考] 對話方塊中,按一下 [.NET] 索引標籤。

  3. 向下捲動並選取 [Microsoft.VisualStudio.QualityTools.WebTestFramework] 和 [System.Windows.Forms]。

  4. 選擇 [確定]。

  5. 再次以滑鼠右鍵按一下 [參考] 節點,然後選取 [加入參考]。

  6. 在 [加入參考] 對話方塊中,按一下 [瀏覽] 索引標籤。

  7. 按一下 [查詢] 下拉式清單並巡覽至 %ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies,然後選取 Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll 檔案。

  8. 選擇 [確定]。

  9. 以滑鼠右鍵按一下 WebPerfTestResultsViewerAddin 專案節點,然後選取 [加入參考]。

  10. 在 [加入參考] 對話方塊中選取 [專案] 索引標籤。

  11. 在 [專案名稱] 底下,選取 [WebPerfTestResultsViewerControl] 專案,然後按一下 [確定]。

  12. 如果 Connect.cs 檔案仍未開啟,請在 [方案總管] 中,以滑鼠右鍵按一下 WebPerfTestResultsViewerAddin 專案中的 Connect.cs 檔案,然後選取 [檢視程式碼]。

  13. 在 Connect.cs 檔案中,加入下列 Using 陳述式:

    using System.IO;
    using System.Windows.Forms;
    using System.Collections.Generic;
    using Microsoft.VisualStudio.TestTools.LoadTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting;
    using WebPerfTestResultsViewerControl;
    
  14. 向下捲動至 Connect.cs 檔案的底部。您必須針對 UserControl 加入 GUID 清單,以防開啟多個 [Web 效能測試結果檢視器] 執行個體。您稍後將會加入使用這份清單的程式碼。

    第二份字串清單會用於您稍後編寫程式碼的 OnDiscconection 方法。

            private DTE2 _applicationObject;
            private AddIn _addInInstance;
    
            private Dictionary<Guid, List<UserControl>> m_controls = new Dictionary<Guid, List<UserControl>>();
            private List<string> temporaryFilePaths = new List<string>();
    
  15. Connect.cs 檔案會根據 IDTExtensibility2 類別具現化名為 Connect 的類別,而且也包括一些用於實作 Visual Studio 增益集的方法。其中一個方法是 OnConnection 方法,這個方法會接收載入增益集的通知。在 OnConnection 方法中,您將會使用 LoadTestPackageExt 類別來建立 [Web 效能測試結果檢視器] 的擴充性套件。將下列程式碼加入至 OnConnection 方法:

    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
                {
                _applicationObject = (DTE2)application;
                _addInInstance = (AddIn)addInInst;
    
                // Create a load test packge extensibility class.
                LoadTestPackageExt loadTestPackageExt = _applicationObject.GetObject("Microsoft.VisualStudio.TestTools.LoadTesting.LoadTestPackageExt") as LoadTestPackageExt;
    
                // Process open windows.
                foreach (WebTestResultViewer webTestResultViewer in loadTestPackageExt.WebTestResultViewerExt.ResultWindows)
                {
                    WindowCreated(webTestResultViewer);
                }
    
                // Create event handlers.
                loadTestPackageExt.WebTestResultViewerExt.WindowCreated += new EventHandler<WebTestResultViewerExt.WindowCreatedEventArgs>(WebTestResultViewerExt_WindowCreated);
                loadTestPackageExt.WebTestResultViewerExt.WindowClosed += new EventHandler<WebTestResultViewerExt.WindowClosedEventArgs>(WebTesResultViewer_WindowClosed);
                loadTestPackageExt.WebTestResultViewerExt.SelectionChanged += new EventHandler<WebTestResultViewerExt.SelectionChangedEventArgs>(WebTestResultViewer_SelectedChanged);
            }
    
  16. 將下列程式碼加入至 Connect 類別,以便針對您在 OnConnection 方法中加入的 loadTestPackageExt.WebTestResultViewerExt.WindowCreated 事件處理常式建立 WebTestResultViewerExt_WindowCreated 方法以及 WebTestResultViewerExt_WindowCreated 方法所呼叫的 WindowCreated 方法。

            void WebTestResultViewerExt_WindowCreated(object sender, WebTestResultViewerExt.WindowCreatedEventArgs e)
            {
                // New control added to new result viewer window.
                WindowCreated(e.WebTestResultViewer);
            }
    
    private void WindowCreated(WebTestResultViewer viewer)
            {
                // Instantiate an instance of the resultControl referenced in the WebPerfTestResultsViewerControl project.
                resultControl resultControl = new resultControl();
    
                // Add to the dictionary of open playback windows.
                System.Diagnostics.Debug.Assert(!m_controls.ContainsKey(viewer.TestResultId));
                List<UserControl> userControls = new List<UserControl>();
                userControls.Add(resultControl);
    
                // Add Guid to the m_control List to manage Result viewers and controls.
                m_controls.Add(viewer.TestResultId, userControls);
    
                // Add tabs to the playback control.
                resultControl.Dock = DockStyle.Fill;
                viewer.AddResultPage(new Guid(), "Sample", resultControl);
            }
    
  17. 將下列程式碼加入至 Connect 類別,以便針對您在 OnConnection 方法中加入的 loadTestPackageExt.WebTestResultViewerExt.SelectionChanged 事件處理常式建立 WebTestResultViewer_SelectedChanged 方法:

            void WebTestResultViewer_SelectedChanged(object sender, WebTestResultViewerExt.SelectionChangedEventArgs e)
            {
                foreach (UserControl userControl in m_controls[e.TestResultId])
                {
                    // Update the userControl in each result viewer.
                    resultControl resultControl = userControl as resultControl;
                    if (resultControl != null)
                        // Call the resultControl's Update method (This will be added in the next procedure).
                        resultControl.Update(e.WebTestRequestResult);
                }
            }
    
  18. 將下列程式碼加入至 Connect 類別,以便針對您在 OnConnection 方法中加入的 loadTestPackageExt.WebTestResultViewerExt.WindowClosed 事件處理常式建立 WebTesResultViewer_WindowClosed 方法:

            void WebTesResultViewer_WindowClosed(object sender, WebTestResultViewerExt.WindowClosedEventArgs e)
            {
                if (m_controls.ContainsKey(e.WebTestResultViewer.TestResultId))
                {
                    m_controls.Remove(e.WebTestResultViewer.TestResultId);
                }
            }
    

    現在 Visual Studio 增益集的程式碼已經完成,您必須將 Update 方法加入至 WebPerfTestResultsViewerControl 專案中的 resultControl。

將程式碼加入至 WebPerfTestResultsViewerControl

如需詳細資訊,請參閱Windows Form 控制項開發的基本概念

若要將程式碼加入至使用者控制項

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 WebPerfTestResultsViewerControl 專案節點,然後選取 [屬性]。

  2. 選取 [應用程式] 索引標籤、按一下 [目標 Framework] 下拉式清單、選取 [.NET Framework 4],然後關閉 [屬性]。

    這是支援擴充 [Web 效能測試結果檢視器] 所需之 DLL 參考的必要步驟。

  3. 在 [方案總管] 的 WebPerfTestResultsViewerControl 專案中,以滑鼠右鍵按一下 [參考] 節點,然後選取 [加入參考]。

  4. 在 [加入參考] 對話方塊中,按一下 [.NET] 索引標籤。

  5. 向下捲動並選取 [Microsoft.VisualStudio.QualityTools.WebTestFramework]。

  6. 選擇 [確定]。

  7. 在 UserControl1.cs 檔案中,加入下列 Using 陳述式:

    using Microsoft.VisualStudio.TestTools.WebTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
    
  8. 加入從 Connect.cs 檔案中 WebPerfTestResultsViewerAddin WebTestResultViewer_SelectedChanged 方法呼叫並傳遞 WebTestRequestResult 的 Update 方法。Update 方法會將 WebTestRequestResult 傳遞給它的各種屬性填入 DataGridView。

    public void Update(WebTestRequestResult WebTestResults)
            {
                // Clear the DataGridView when a request is selected.
                resultControlDataGridView.Rows.Clear();
                // Populate the DataGridControl with properties from the WebTestResults.
                this.resultControlDataGridView.Rows.Add("Request: " + WebTestResults.Request.Url.ToString());
                this.resultControlDataGridView.Rows.Add("Response: " + WebTestResults.Response.ResponseUri.ToString());
                foreach (RuleResult ruleResult in WebTestResults.ExtractionRuleResults)
                {
                    this.resultControlDataGridView.Rows.Add("Extraction rule results: " + ruleResult.Message.ToString());
                }
                foreach (RuleResult ruleResult in WebTestResults.ValidationRuleResults)
                {
                    this.resultControlDataGridView.Rows.Add("Validation rule results: " + ruleResult.Message.ToString());
                }
                foreach (WebTestError webTestError in WebTestResults.Errors)
                {
                    this.resultControlDataGridView.Rows.Add("Error: " + webTestError.ErrorType.ToString() + " " + webTestError.ErrorSubtype.ToString() + " " + webTestError.ExceptionText.ToString());
                }
            }
    

建置 WebPerfTestResultsViewerAddin 方案

若要建置方案

  • 在 [建置] 功能表上,選取 [建置方案]。

登錄 WebPerfTestResultsViewerAddin 增益集

若要使用增益集管理員來登錄增益集

  1. 在 [工具] 功能表上,選擇 [增益集管理員]。

  2. [增益集管理員] 對話方塊隨即顯示。

  3. 在 [可用的增益集] 資料行中,選取 WebPerfTestResultsViewerAddin 增益集的核取方塊,並且清除 [啟動] 和 [命令列] 資料行下方的核取方塊。

  4. 選擇 [確定]。

    如需詳細資訊,請參閱HOW TO:使用增益集管理員來控制增益集

使用已建置的 WebPerfTestResultsViewerAddin 增益集執行 Web 效能測試

若要執行 Web 測試結果檢視器的新 VS 增益集

  1. 執行 Web 效能測試,然後您將會看見 WebPerfTestResultsViewerAddin 增益集中名為 Sample 的新索引標籤顯示在 [Web 效能測試結果檢視器] 中。

  2. 按一下此索引標籤,以便查看呈現在 DataGridView 中的屬性。

安全性

為了改善安全性,防止惡意的增益集自動啟動,Visual Studio 在名為 [增益集/巨集安全性] 的 [工具選項] 頁面中提供了相關設定。

此外,這個選項頁面還可讓您指定 Visual Studio 搜尋 .AddIn 登錄檔案的資料夾。這樣做可讓您限制系統能讀取 .AddIn 登錄檔案的位置,藉以改善安全性。這有助於避免您不小心使用惡意 .AddIn 檔案。

增益集安全性設定

Add-in/Macros Security, Environment, Options Dialog Box中與增益集安全性相關的設定包括:

  • [允許載入增益集元件。]預設會選取。當您選取此選項時,就可以在 Visual Studio 中載入增益集。當您沒有選取此選項時,則禁止在 Visual Studio 中載入增益集。

  • [允許增益集元件從 URL 載入。]預設為未選取。當您選取此選項時,就可以從外部網站載入增益集。當您沒有選取此選項時,則禁止在 Visual Studio 中載入遠端增益集。如果增益集因為某種原因無法載入,那麼便無法從網路載入。這項設定只能控制增益集 DLL 的載入。.Addin 登錄檔案必須隨時位於本機系統中。

  • 如需詳細資訊,請參閱增益集安全性

請參閱

工作

HOW TO:使用增益集管理員來控制增益集

逐步解說:偵錯增益集專案

參考

UserControl

Microsoft.VisualStudio.TestTools.LoadTesting

Microsoft.VisualStudio.TestTools.WebTesting

Microsoft.VisualStudio.TestTools.WebTesting.Rules

UserControl

DataGrid

概念

增益集登錄

Automation 物件模型圖表

Windows Form 控制項中的事件

其他資源

建立和使用負載和 Web 效能測試的自訂外掛程式

Windows Form 控制項中的屬性

使用 .NET Framework 開發自訂的 Windows Form 控制項