Sdílet prostřednictvím


Postupy: Ladění aplikace SharePoint s použitím technologie IntelliTrace

Pomocí IntelliTrace lze snadněji ladit aplikace, včetně těch, které zahrnout webové stránky jako řešení SharePoint.Tradiční ladící programy poskytují pouze snímek stavu v okamžiku, kdy aktuální aplikace.Můžete však použít IntelliTrace zkontrolovat a dokonce přejít, minulé události, k nimž došlo v aplikaci a kontext, ve kterém došlo k události.

Tento návod ukazuje, jak použít k ladění projektu SharePoint v IntelliTrace Visual Studio.Tento projekt zahrnuje funkce přijímače, který při aktivaci funkce přidá úkol v seznamu úkolů a oznámení do seznamu oznámení.Po deaktivaci funkce úkol je označen jako dokončený a druhé oznámení je přidán do seznamu oznámení.Postup však obsahuje logickou chybu, která zabraňuje správnému spuštění projektu.Pomocí IntelliTrace bude vyhledejte a opravte chyby.

Tento návod ilustruje následující úkoly:

  • Vytvoření funkce a příjemce události funkce.

  • Reakce na události funkce pomocí kódu.

  • Seznamy úkolů a oznámení odkazování pomocí kódu.

  • Hledání a manipulaci s prvky seznamu pomocí kódu.

  • Vyhledejte a opravte chyby kódu pomocí IntelliTrace.

  • [!POZNÁMKA]

    Počítač se může lišit od pokyny v tomto tématu názvy nebo umístění pro některé prvky uživatelského rozhraní.Tyto prvky lišit v závislosti na nastavení a vaše verze Visual Studio.Další informace naleznete v tématu Nastavení aplikace Visual Studio.

Požadavky

Chcete-li dokončit tento návod, potřebujete následující komponenty:

Vytváření příjemce funkce

Nejprve vytvořte prázdný projekt SharePoint s přijímačem funkce.

K vytvoření příjemce funkce

  1. Start Visual Studio pomocí Spustit jako správce možnost.

  2. Na panelu nabídek zvolte soubor, Nový, projektu.

    Zobrazí se dialogové okno Nový projekt.

  3. V horní části dialogového okna zvolte 3.5 rozhraní.NET Framework v seznamu verze rozhraní.NET Framework.

  4. Pod jazyk, který chcete použít, rozbalte SharePoint uzel a pak zvolte 2010 uzlu.

  5. V šablony podokně zvolte Projektu služby SharePoint 2010 šablony, změnit název projektu IntelliTraceTesta pak zvolte OK tlačítko.

    SharePoint Průvodce vlastním nastavením se zobrazí, můžete zadat web služby SharePoint pro úroveň důvěryhodnosti řešení a projektu.

  6. Zvolte nasadit jako řešení farmy přepínač a potom zvolte Dokončit tlačítko.

    IntelliTrace funguje pouze na řešení farmy.

  7. V Průzkumníku, otevřete místní nabídku pro funkce uzel a pak zvolte Přidat funkci.

    Zobrazí se Feature1.Feature.

  8. Otevření místní nabídky z Feature1.feature a pak zvolte Přidat příjemce události přidat modul kódu funkce.

Přidání kódu příjemce funkce

Dále přidejte kód v příjemce funkce dvě metody: FeatureActivated a FeatureDeactivating.Tyto metody se aktivují vždy, když je aktivován nebo deaktivován ve službě SharePoint, respektive funkce.

Přidat kód příjemce funkce

  1. V horní části Feature1EventReceiver třída, přidejte následující kód k deklarování proměnných, které určují webu služby SharePoint a podřízeného webu:

    ' SharePoint site/subsite.
    Private siteUrl As String = "https://localhost"
    Private webUrl As String = "/"
    
    // SharePoint site/subsite.
    private string siteUrl = "https://localhost";
    private string webUrl = "/";
    
  2. Nahraďte metodu FeatureActivated následujícím kódem:

    Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the lists.
                    Dim announcementsList As SPList = web.Lists("Announcements")
                    Dim taskList As SPList = web.Lists("Tasks")
    
                    ' Add a new announcement to the Announcements list.
                    Dim listItem As SPListItem = announcementsList.Items.Add()
                    listItem("Title") = "Activated Feature: " & Convert.ToString(properties.Definition.DisplayName)
                    listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was activated on: " & DateTime.Now.ToString()
                    listItem.Update()
    
                    ' Add a to-do task to the Task list.
                    Dim newTask As SPListItem = taskList.Items.Add()
                    newTask("Title") = "Deactivate feature: " & Convert.ToString(properties.Definition.DisplayName)
                    newTask.Update()
                End Using
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    
    End Sub
    
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists.
                    SPList announcementsList = web.Lists["Announcements"];
                    SPList taskList = web.Lists["Tasks"];
    
                    // Add a new announcement to the Announcements list.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Activated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was activated on: " + DateTime.Now.ToString();
                    listItem.Update();
    
                    // Add a to-do task to the Task list.
                    SPListItem newTask = taskList.Items.Add();
                    newTask["Title"] = "Deactivate feature: " + properties.Definition.DisplayName;
                    newTask.Update();
                }
            }
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    
    }
    
  3. Nahraďte metodu FeatureDeactivating následujícím kódem:

    Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties)
        Try
            Using site As New SPSite(siteUrl)
                Using web As SPWeb = site.OpenWeb(webUrl)
                    ' Reference the lists
                    Dim taskList As SPList = web.Lists("Tasks")
                    Dim announcementsList As SPList = web.Lists("Announcements")
    
                    ' Add an announcement that the feature was deactivated.
                    Dim listItem As SPListItem = announcementsList.Items.Add()
                    listItem("Title") = "Deactivated Feature: " & Convert.ToString(properties.Definition.DisplayName)
                    listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was deactivated on: " & DateTime.Now.ToString()
                    listItem.Update()
    
                    ' Find the task the feature receiver added to the Task list when the
                    ' feature was activated.
                    Dim qry As New SPQuery()
                    qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactive</Value></Contains></Where>"
                    Dim taskItems As SPListItemCollection = taskList.GetItems(qry)
    
                    For Each taskItem As SPListItem In taskItems
                        ' Mark the task as complete.
                        taskItem("PercentComplete") = 1
                        taskItem("Status") = "Completed"
                        taskItem.Update()
                    Next
                End Using
    
            End Using
    
        Catch e As Exception
            Console.WriteLine("Error: " & e.ToString())
        End Try
    
    
    End Sub
    
    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        try
        {
            using (SPSite site = new SPSite(siteUrl))
            {
                using (SPWeb web = site.OpenWeb(webUrl))
                {
                    // Reference the lists
                    SPList taskList = web.Lists["Tasks"];
                    SPList announcementsList = web.Lists["Announcements"];
    
                    // Add an announcement that the feature was deactivated.
                    SPListItem listItem = announcementsList.Items.Add();
                    listItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName;
                    listItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString();
                    listItem.Update();
    
                    // Find the task the feature receiver added to the Task list when the
                    // feature was activated.
                    SPQuery qry = new SPQuery();
                    qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactive</Value></Contains></Where>";
                    SPListItemCollection taskItems = taskList.GetItems(qry);
    
                    foreach (SPListItem taskItem in taskItems)
                    {
                        // Mark the task as complete.
                        taskItem["PercentComplete"] = 1;
                        taskItem["Status"] = "Completed";
                        taskItem.Update();
                    }
                }
            }
    
        }
    
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.ToString());
        }
    }
    

Testování projektu

Nyní, že kód je přidán do příjemce funkce, spustíte aplikaci SharePoint k ověření, zda funguje správně.Například malé chyby součástí kódu.Po chybě dojde, použije ke sledování problému IntelliTrace.

Testování projektu

  1. Zvolte klávesu F5 spuštění projektu.

    Po nasazení funkce automaticky aktivuje, způsobuje její příjemce funkce přidat oznámení a úkol.

  2. Po spuštění služby SharePoint, Snadné podokně zvolte seznam odkaz a potom zvolte seznam oznámení a seznamu úkolů zobrazit jejich obsah.

    V seznamu oznámení nové oznámení s názvem aktivní funkce: IntelliTraceTest_Feature1 byl přidán nový úkol s názvem a deaktivovat funkci: IntelliTraceTest_Feature1 byl přidán do seznamu úkolů.Stav úkolu je "Nezahájeno."

  3. Deaktivovat funkci otevřením Akce webu nabídce volba Nastavení webua potom zvolíte Spravovat funkce webu odkaz pod Akce webu.Zvolte deaktivovat tlačítko vedle IntelliTraceTest Feature1a pak zvolte deaktivovat tuto funkci odkaz na stránce upozornění.

  4. V Snadné podokně zvolte úlohy odkaz.

    Úkolu Stav hodnota by nyní být "dokončení" a jeho Dokončeno % hodnota by měla být 100 %." Místo toho hodnoty jsou stále na jejich výchozí nastavení.Chyba v kódu brání aktualizaci úkolu.

Ladění projektu

Vyhledejte a opravte problém v kódu pomocí IntelliTrace.

Ladění projektu

  1. V Visual Studiov FeatureDeactivating metoda, vyhledejte SPQuery qry = new SPQuery(); řádku v jazyce Visual C# nebo Dim qry As New SPQuery() řádku v jazyce Visual Basic.Zvolte Vložit zarážku na tomto řádku klávesu F9.

    Protože dojde při deaktivaci funkce, je logické spuštění ladění tohoto řádku.

  2. Zvolte klávesu F5 znovu spusťte program a aktivovat a pak deaktivujte funkci opakováním kroků v "Testování projektu" dříve v tomto tématu.

    Když je zarážce přístupů v FeatureDeactivating, se zobrazí okno IntelliTrace a uvádí všechny kroky, které doposud přijatých aplikace.

  3. V IntelliTrace podokně, v Live události kategorie, zvolte lokální odkaz.

  4. Zvolte klávesu F11 pro krok na další řádek kódu.

    Pokaždé, když zvolíte F11 klíč jiného "ladicího programu:" řádek je přidán do aplikace IntelliTrace Historie ladění.

  5. Zvolte klávesu F11 pro krok na další řádek kódu.

  6. V lokální podokně rozbalte qry název a Všimněte si, že dotaz hodnota se zobrazí červeně.

    Tento rozdíl znamená, že dotaz pro vyhledání úkolu nesprávně hledá "Deactive" místo "Deactivate" Tato chyba znamená, že úkol je nikdy nalezen v dotazu seznamu úkolů.

  7. Zvolte klávesu F11 pro krok na další řádek kódu.

  8. V lokální podokně rozbalte taskItems název a Všimněte si, že počet je hodnota nula (0).

    Tato hodnota označuje, že kolekce taskItems neobsahuje qry položek.

  9. Zvolte klávesu F5, pokračujte.

  10. Po dokončení programu zvolte Zrušit všechny odkaz v okně IntelliTrace.

    Je nutné provést tento krok IntelliTrace data uložit.

    Volání informace pro aplikaci, můžete zobrazit na panelu nástrojů Intellitrace volba Otevřít nastavení IntelliTrace odkaz a poté v Možnosti dialogové okno Výběr IntelliTrace události a informace o volání přepínač.

  11. Na panelu nástrojů IntelliTrace vybrat Uložit aktuální relaci IntelliTrace tlačítko Uložit data ladění.

    Soubor bude mít příponu .iTrace.

  12. Na Visual Studio nabídky panelu, zvolte ladění, Zastavit ladění.

  13. Otevřete soubor .iTrace.

    Tento krok otevře stránku Souhrn IntelliTrace, poskytující informace o ladění výjimky data seznamu vláken, které jsou používány v programu.

  14. Rozbalte Seznam vláken, zvolte Hlavní vláknoa pak zvolte Spuštění ladění tlačítko.

    Tento krok spustí relaci ladění v Visual Studio .iTrace daty.Chcete-li zobrazit další podrobnosti o události v okně IntelliTrace, zvolte událost.

  15. Zvolte lokální propojit Debugger: krok pro SPListItemCollection taskItems = taskList.GetItems(qry);.

    Zobrazí se okno Locals.

  16. V okně místních položek rozbalte seznam proměnných, vyhledejte qry.Querya ověřte, že dotaz pro vyhledání úkolu nesprávně hledá "Deactive" místo "Deactivate"

Opakované projektu

Nyní, identifikování problému pomocí IntelliTrace chybu a pak opětovně projektu.

Znovu testovat projektu

  1. Zavřít relaci ladění aplikace Visual Studio a znovu IntelliTraceTest projektu, pokud již není otevřen.

  2. V řetězci dotazu kódu (qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactive</Value></Contains></Where>"), změňte hodnotu z Deactive na Deactivate.

  3. Zvolte klávesu F5 znovu spusťte projekt.

  4. Otevřete seznam úkolů a ověřte, zda deaktivovat úkol Stav nyní správně nastavena na hodnotu "Dokončeno" a jeho Dokončeno % hodnota je 100 %.

Viz také

Koncepty

Zobrazení a ladění kódu pro SharePoint

Ladění aplikace pomocí zaznamenávání provádění kódu s použitím technologie IntelliTrace

Další zdroje

Názorný postup: Ověřte kód služby SharePoint pomocí zkoušky jednotky