none
Designer debuggen RRS feed

  • Frage

  • Hallo NG,

    ich möchte in einer Report-Api im vorhandenen Source Code eigene Anpassungen vornehmen,
    die sich natürlich auf das Layout auswirken sollen, auch zur Entwurfszeit.

    Wie kann ich nun aber den Designer Code zur Entwurfszeit debuggen?

    Gruß Klaus

    Dienstag, 3. April 2018 08:39

Antworten

  • Hi Klaus,
    meine Erfahrung ist, dass der Designer mit den eigenen Controls Probleme hat, wenn die Instanziierung der Controls weitere Aktivitäten auslöst/aufruft, die in der Entwicklungsumgebung nicht funktionieren. Das kann beispielsweise der Zugriff auf Ressourcen sein, die zur Entwurfszeit nicht erreichbar sind (z.B. Dateien, Datenbanken usw.). Solche Aufrufe kann man mit einer Abfrage IsInDesignMode abfangen und ggf. unterdrücken.

    Einzelne eigene Steuerelemente lassen sich gut testen, wenn man zusätzlich eine separate Anwendung schreibt und darin die eigenen Steuerelemente per eigenen Code lädt. Wenn dann alle anderen Fenster geschlossen sind und diese separate Anwendung gestartet wird, dann kann man direkt debuggen.

    Mit einer zweiten Instanz zu debuggen ist recht aufwändig. Am einfachsten ist es, zuerst in der ersten Instanz die Projektmappe zu laden, alle Fenster zu schließen, Clean ausführen, Rebuild ausführen. Dann die zweite Instanz starten, die Projektmappe laden, Haltepunkte an den gewünschten Stellen setzen (nur Code-Dateien öffnen!), den Debugger an die Instanz hängen. Dann in der ersten Instanz das gewünschte Fenster öffnen (wo der Designer Fehler bringt), in der zweiten Instanz prüfen, ob der Haltepunkt auch aktiviert wurde (voll gekennzeichnet = dll durch Debugger überwacht). Und, wenn Du den Haltepunkt richtig ausgewählt hast, dann hält der Debugger auch dort an. Wenn er nicht angehalten hat und in der ersten Instanz Fehler kommen, dann hast Du die Haltepunkte falsch gesetzt und es kann etwas im Studio abgestürzt sein und Dir bleibt nur übrig, alle Visual Studio Instanzen zu schließen und von vorn mit den richtigen Haltepunkten zu beginnen.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 3. April 2018 13:22

Alle Antworten

  • Hi Klaus,
    du kannst eine zweite Instanz des Visual Studios starten, dort das gleiche Projekt laden und dann den Debugger an die zweite Instanz des Visual Studios hängen, wo dann Haltepunkte gesetzt werden können.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 3. April 2018 08:47
  • Hallo Peter,

    danke für die schnelle Antwort.
    Ja das Prinzip habe ich verstanden, wie bei der Erstellung eines eigenen Controls.

    Aber in diesem speziellen Fall währe ich für eine ausführliche Anwendungshilfe dankbar.
    Also, meine Projektmappe besteht aus 6 einzelnen Projekten, wovon 5 zu der Erstellung einzelnen Dll's führen.
    Das 6. Projekt ist als Startprojekt definiert und enthält den Report, dessen Funktionalität ich ja anpassen möchte.

    Wie genau soll ich nun vorgehen? Im VS bleiben, eine zweite Instanz öffnen und die obige Projektmappe erneut laden? Und dann Haltepunkte in der neuen Mappe oder in der ersten Mappe markieren? Oder eine neue Projektmappe anlegen in der nur das Teilprojekt Designer der ersten Mappe eingebungen ist oder, oder oder?

    Gruß Klaus

    Dienstag, 3. April 2018 11:06
  • Hi Klaus,
    meine Erfahrung ist, dass der Designer mit den eigenen Controls Probleme hat, wenn die Instanziierung der Controls weitere Aktivitäten auslöst/aufruft, die in der Entwicklungsumgebung nicht funktionieren. Das kann beispielsweise der Zugriff auf Ressourcen sein, die zur Entwurfszeit nicht erreichbar sind (z.B. Dateien, Datenbanken usw.). Solche Aufrufe kann man mit einer Abfrage IsInDesignMode abfangen und ggf. unterdrücken.

    Einzelne eigene Steuerelemente lassen sich gut testen, wenn man zusätzlich eine separate Anwendung schreibt und darin die eigenen Steuerelemente per eigenen Code lädt. Wenn dann alle anderen Fenster geschlossen sind und diese separate Anwendung gestartet wird, dann kann man direkt debuggen.

    Mit einer zweiten Instanz zu debuggen ist recht aufwändig. Am einfachsten ist es, zuerst in der ersten Instanz die Projektmappe zu laden, alle Fenster zu schließen, Clean ausführen, Rebuild ausführen. Dann die zweite Instanz starten, die Projektmappe laden, Haltepunkte an den gewünschten Stellen setzen (nur Code-Dateien öffnen!), den Debugger an die Instanz hängen. Dann in der ersten Instanz das gewünschte Fenster öffnen (wo der Designer Fehler bringt), in der zweiten Instanz prüfen, ob der Haltepunkt auch aktiviert wurde (voll gekennzeichnet = dll durch Debugger überwacht). Und, wenn Du den Haltepunkt richtig ausgewählt hast, dann hält der Debugger auch dort an. Wenn er nicht angehalten hat und in der ersten Instanz Fehler kommen, dann hast Du die Haltepunkte falsch gesetzt und es kann etwas im Studio abgestürzt sein und Dir bleibt nur übrig, alle Visual Studio Instanzen zu schließen und von vorn mit den richtigen Haltepunkten zu beginnen.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 3. April 2018 13:22
  • Hallo Peter,

    zunächst Dank für deine Mühe und die Ausführungen. Ich werde mich intensiv damit auseinandersetzen und mich auf jedem Fall noch mal melden!

    Gruß Klaus

    Dienstag, 3. April 2018 14:34
  • Hallo Peter,

    es hat alles geklappt, hier noch einmal deinen Rat für Dummy's, wie ich einer bin, übersetzt:

    Um mit einer zweiten Instanz zu debuggen bin ich deinem Rat folgend, wie folgt vorgegangen:
    1. Zuerst in der ersten Instanz die Projektmappe laden,
    2. Alle Fenster schließen.
    3. Alle Haltepunkte löschen.
    4. Clean ausführen (Erstellen, Projektmappe bereinigen).
    5. Rebuild ausführen (Projektmappe neu erstellen).
    6. Das Projekt in dem die Haltepunkte gesetzt werden sollen auswählen,
    7 Die Source Datei öffnen, und die gewünschten Haltepunkte setzen.
    8. In dem entsprechenden Projekt mit der rechten Maustaste, Debuggen, die neue Instanz starten.
    9. In der zweiten Instanz die Projektmappe laden.
    10.  Dort den Designer öffnen und editieren.
    Wenn die Haltepunkte richtig ausgewählt sind, dann hält der Debugger auch dort an.

    Nochmal herzlichen Dank!

    Gruß Klaus

    Mittwoch, 4. April 2018 09:21