Angepinnt VisualStudio-Fehler gegenprüfen und Meldung bei Microsoft mehr Gewicht verleihen

  • Allgemein

Es gibt 38 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    VisualStudio-Fehler gegenprüfen und Meldung bei Microsoft mehr Gewicht verleihen

    Hallo zusammen.

    Vielleicht wird's ja ein Sammelthread.
    Ich würd gern Fehler in Visual Studio hier von Euch gegenprüfen lassen. Und wenn Ihr die bestätigen könnt, wär's natürlich sinnvoll, wenn Ihr das dann bei Microsoft »upvoted«, damit es auch von denen wahrgenommen wird. Ich meld zwar immer mal wieder was, aber das geht denen am Oberarm vorbei, wenn nur ich es melde.

    Das Ganze soll aber kein Einzelding werden, sondern jeder darf gerne Fehler, die in Visual Studio aufgrund von Visual Studio (!) auftreten, hier posten und gegenchecken lassen. Wichtig ist natürlich, dass es reproduzierbar ist und dass ihr das dann bei Microsoft selber meldet. Dafür gibt's ja die VS-Funktion ein Problem melden. Auch Verbesserungsvorschläge sind sinnvoll, wenn es um fehlerhaftes oder sinnloses VS-Verhalten geht.
    Bitte auch immer die von Euch verwendete Visual Studio-Version hier vermerken, damit wir es auch richtig gegenprüfen können.
    --- Update am 19.02.2024: Gebt bitte auch an, wenn Ihr nicht das deutsche Sprachpaket, also eine deutsche Oberfläche verwendet. Wie in Post#34 zu sehen, kann auch das relevant sein! ---


    Ich mach mal den Anfang: ich nutze Version 17.5.0 Preview 2.0, habe folgenden Code

    VB.NET-Quellcode

    1. Dim Foo = False
    2. For i = 0 To 0
    3. If Foo Then Continue For
    4. Next

    wähle das Foo nach dem If und drücke Strg+R, Strg+M um den Ausdruck in eine Methode zu extrahieren (es ist Testcode zur Reproduktion des Fehlers, kein sinnvoller Code!). Es kommt die Meldung, dass nicht alle Pfade einen Rückgabewert haben.

    Das Problem: Egal, ob ich [ja] oder [nein] anklicke, es passiert nix.
    Wer das bestätigen kann, darf gerne voten: MS-Feedback-Link


    ##########

    Dann ist mir noch was aufgefallen:
    Wenn man einem Control einen ungültigen Namen im Designer verpasst, kommt ne Meldung:

    Aber egal, ob mal auf OK oder Abbrechen klickt, wird der Name zurückgesetzt. Also kein Funktionsunterschied. Es sollte ein Button entfernt werden oder bei einem Button sollte man die Möglichkeit haben, den fehlerhaften Namen zu korrigieren.
    Der MS-Feedback-Link, falls das bei Euch auch so ist und Ihr den Vorschlag sinnvoll findet.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Kein richtiger Fehler, wohl aber (nach meiner Meinung) ungewöhnlich.



    Die ersten 41187 Dateien werden recht schnell geprüft, dann kommt der vsjitdebugger.exe dran und dann steht das MS Tool (Windows-Tool zum Entfernen bösartiger Software) erstmal auf der Stelle. Ich bin mir nicht ganz sicher, aber die Wartezeit liegt irgendwo zwischen 5-10 Minuten bis <30 Minuten. Und das bei einer Datei die nur 307kb groß ist.
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:
    Habe die Datei im angegebenen Verzeichnis gefunden und das Verzeichnis mit dem Windows Defender prüfen lassen. 4000 Dateien in 12 Sekunden.
    Mit dem von Dir benutzten Tool haben 20000 Dateien ca. 60 Sekunden gedauert.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Setzt man im Code Anführungszeichen, z.B. beim Setzen eines String-Werts, werden seit einiger Zeit automatisch zwei davon gesetzt, sodass man gleich den puren Text schreiben kann, ohne sich um den korrekten Abschluss (= das 2. Anführungszeichen) kümmern zu müssen. Leider werden diese nervigerweise auch gesetzt, wenn man bereits einen Text hat:


    Klar, bei neuen Zeilen weiß man ja hoffentlich schon vorher, was man macht. Aber bei bestehenden Projekten passiert (mir) sowas immer wieder, dass es einfach nervt.

    MS zieht in Erwägung, es anzupassen - wenn das jetzige Verhalten genügend Leute nervt: VS-Report
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Es soll ja funktionieren - aber bitte richtig.

    ##########

    Nächstes Problem bei mir: Wenn ich mehrzeiligen Code per c&p einfüge, welche zu einem automatischen Namespace-Import führt (gutes Feature!), wird die Dokumentformatierung beseitigt, also Einzüge, Abstände zwischen den Methoden. Kann man zwar mit einem Rückgängig ungeschehen machen, ist aber auch nervig. Kann das jemand bestätigen?

    Der in ein WinForms-VB-Programm eingefügte C#(!)-Code ist aus stackoverflow:

    C#-Quellcode

    1. var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
    2. Screen.PrimaryScreen.Bounds.Height,
    3. PixelFormat.Format32bppArgb);


    ##########

    Update: spätestens beseitigt in Version 17.6.0 Preview 6.0
    Bilder
    • DocumentStructure.gif

      74,77 kB, 488×320, 132 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Vielleicht kann sich zu diesem Problem jemand mal die 2 Minuten Zeit nehmen und Rückmeldung geben:
    Ich schließe ein Projekt im Codeeditor und lade es neu. Ich wechsle zum Designer und die Toolbox ist leer. Ich muss erst zu einem anderen Fenster wechseln (z.B. wieder in ein Codeeditortab und danach zurück zum Designer), damit die Toolboxelemente angezeigt werden.
    Schließe ich hingegen das Programm, wenn das aktuelle Fenster der Designer ist, wird nach dem Wiederöffnen des Projekts im Designer sofort die volle Toolbox angezeigt.

    ##########

    VSReport-Link von mir und von einem anderen, bei dem schon mehr Votes sind, daher besser dort voten
    Bilder
    • EmptyToolBox.gif

      1,11 MB, 704×384, 136 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Und wieder was. Mal sehen, ob hier jemand Erbarmen mit mir hat und das gegenprüfen wird:
    Ich habe einen SplitContainer und füge einen Button in eines der Panels, mit Anchor Überall (Left, Right, Top, Bottom).
    Die SplitterDistance des SplitContainers setze ich auf den (wie ironisch) »Default«-Value 50.
    Ich schließe den Designer und öffne ihn wieder. Nun haben die Panels ihre Größe geändert und der Button hat daher eine andere Größe angenommen. In der FormX.Designer.vb wird dies aber nicht übernommen/angezeigt.
    Bilder
    • SplitContainer.gif

      86,4 kB, 272×280, 834 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Dass die ScrollPosition im SplitContainer falsch funktioniert, ist ja schon länger bekannt. Wer der Meinung ist, das sowas behoben werden sollte, darf gerne voten.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Vielleicht sollte ich den Thread umbenennen, da letzteres kein VS-Fehler, sondern ein .NET/-Frameworkfehler ist.
    Oder ich lass den ganzen Thread löschen, irgendwie hab ich das Gefühl, dass das Ganze eher zu einem Blog mutiert …

    PicBox-Images werden offensichtlich nicht automatisch disposed, das war das Ergebnis eines Threads von RodFromGermany
    hier die Meldung an Microsoft
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Positionszählung innerhalb einer RichTextBox mit Tabellen unvollständig

    Es sieht mir so aus, als wäre das ein Bug im Framework.
    Ein RichText mit Tabellen (Positionen einer Einkaufsliste) wird in einer RichTextBox gescannt.
    Gesucht werden dabei die x-Startpositionen aller Zeilen, um zusammengehörige Zeilen zu finden.
    Ich gehe die Zeilen der .Lines-Property einzeln durch und suche im RichText mit .Find() den Index der Position dieser Zeile.
    Bei kürzeren Texten mit wenig Tabellen funktioniert das i.a. problemlos. Bei 7-seitigen Text in den Projekt-Ressourcen kommt es reproduzierbar zu einer Exception:
    "Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen. Parametername: length",
    allerdings bei einer Position deutlich vor dem Textende.
    Um das Effekt zu veranschaulichen, gebe ich bei MouseMove über der linken RichTextBox GetCharIndexFromPosition() aus.
    Es ist zu erkennen, dass am Ende des Textes die Ausgabe stagniert, an dieser Stelle kommt im Programm bei RichTextBox.Find() die Exception.
    Projekt compilieren, starten, Button drücken und mit der Maus über die linke RTB streichen.
    In der rechten RTB werden die Exception-Message sowie Informationen zur letzten Scan-Position angezeigt.
    ====
    Als Arbeitsdrumherum hänge ich derzeit an den RichText einen Dödeltext an, und wenn ich den erkenne, breche ich den Scan ab.
    TestScanRtf.zip
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja, kann ich bestätigen. Liegt laut stackoverflow an der RTB-Version, die bei höheren Frameworks (über 4.0) eingesetzt wird. Bei 3.5 klappt die Beispiel-App.
    Man kann das Programm mit einer Kompatibilitätseinstellung zum Funktionieren bringen, indem man in der app.config Änderungen vornimmt - wie bei stackoverflow beschrieben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich hab mal beide Versionen verglichen, der Text entspricht einer Dokumentenseite.
    Die alte Version stellt bei meinem RichText keine Tabulatoren dar, weitere Unterschiede hab ich nicht gesucht:
    Neue Version:

    Alte Version:

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In .NET werden Klassennamen mit reservierten Begriffen in der FormX.Designer.VB bei Designer-Änderungen verschlimmbessert.
    Beispiel: Eine BindingSource bekommt über den Designer die Zuordnung zum Typ der eigenen Klasse [Event].

    VB.NET-Quellcode

    1. 'in FormX.Designer.VB
    2. BindingSource1.DataSource = GetType([Event])
    3. 'in einer anderen Datei
    4. Class [Event]
    5. '…
    6. End Class

    Ändert man was im Designer, wird aus dem GetType([Event]) ein GetType(Event) - und somit ein Syntaxfehler. Ist in .NET-Fx-Projekten nicht so, da läuft es.

    gemeldet bei Mikrosoft, dortige Zustimmung wie immer gewünscht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @loeffel: In einem Deiner Artikel schreibst Du

    Klaus Löffelmann schrieb:

    The old system didn’t have an easy way to interpret more recently introduced language features. Using Roslyn, we will have the option to introduce language features like NameOf to generate more robust code, especially for data binding purposes.
    Bis jetzt scheint das noch nicht zu klappen.
    Designer-Code wie Button1.DataBindings.Add(New Binding(NameOf(Button1.Command), FooBindingSource, "RelayCommand", True))
    oder eben andersum Button2.DataBindings.Add(New Binding("Command", FooBindingSource, NameOf(Foo.AnotherRelayCommand), True))
    werden mit einer Fehlermeldung wie im Anhang quittiert.

    btw: Ist eigentlich auch geplant, dass eine DGVButtonCell eine Command-Property bekommt?
    Bilder
    • DesignerError.png

      7,45 kB, 658×58, 87 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Ist eigentlich auch geplant, dass eine DGVButtonCell eine Command-Property bekommt?


    Jetzt ja!
    Good catch, schaue ich mir an!

    Wenn ihr weitere Ideen in Sachen Data Binding habt, klaus.loeffelmann at microsoft dot com oder Suggestion im WinForms GitHub Repo!

    Zum Fehler: In 17.9 haben wir ein grosses Update in Sachen CodeGen und VB. Ob dieses Problem da schon mit dabei ist, schaue ich mir nochmal an - falls nicht, versuche ich es den Bar fuer 17.10. zu machen.

    - Klaus
    Sehr interessant: Mein Bug-Report an Microsoft: Wenn man (unfreiwillig) Nothing zu einer TextBox-AutoCompleteCustomSource hinzufügt, beendet sich die App (erst) dann, wenn man irgendwann später was in die TextBox eingibt.
    Reaktion von Microsoft: »Das ist kein Fehler, aber interessanter Vorschlag.«

    Ah ja …
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ja, danke fuer den Hinweis.
    Ich habe unser Test-Team gebeten, ein Issue im WinForms Repo zu erstellen.
    Es wird vermutlich nicht fuer einen sofortigen Fix reichen, aber ich wuerde es schon als Bug ansehen.
    BTW: Die WinForms-Runtime ist Open Source. Ihr koennt jederzeit direkt im GitHub Repo einen Bug melden.
    Oder noch besser (fuer die, die sich das zutrauen): Ihr koennt auch jederzeit im WinForms Repo einen PR zum Fixen eines Bugs einreichen!

    LG aus Redmond,

    Klaus
    Mein ärgerlichstes Problem mit VS2022 (existierte auch schon mit VS2019):

    Ich habe immer alle Forms und dazugehörende Scripte im Designer in deren Tabs sichtbar geladen (siehe - Anlage Bild -).
    Schliesse ich mein Projekt, öffne dann dieses Projekt erneut und klicke einen Tab eines Unterfensters mit Inhalt "Fenstername.vb" an, ist häufig dessen Seite leer.
    Die Suche über "alle geöffneten Dokumente" schlägt dann fehl - ohne, dass ein Fehler ausgeworfen wird. Es werden dann einfach die Inhalte der, dem leeren Tab folgenden Tabs nicht mehr durchsucht, scheint mir.
    Dies führt zu Irritationen und Fehlern, wenn der Benutzer dann annimmt, dass z.B. die gesuchte Variable nicht in seinem Projekt existiert.

    Wenn dieser Fehler auftritt, kann ich nur den nicht geladenen ".vb"-Tab schliessen und neu öffnen.

    Einzige Lösung, welche ich gefunden habe:
    Nach dem Laden meines Projekts, den ersten Tab anklicken, warten, bis die Sprechblase unten links leer ist und damit "geladen" signalisiert, nächsten Tab anklicken, warten bis Sprechblase "geladen" signalisiert usw.
    Erst, wenn ich so alle Tabs manuell geladen habe, sind alle ".vb"-Tabs mit Inhalten verfügbar und die Suche funktioniert auch wirklich über alle Tabs.
    Bilder
    • Fehler VS.jpg

      151,16 kB, 1.920×340, 30 mal angesehen

    Dideldum schrieb:

    wenn der Benutzer dann annimmt
    Wenn Dideldum das annimmt.
    Ich habe noch niemals einen Entwicker gesehen, der alle / so viele Tabs im Studio offen hat.
    Was passiert, wenn Du nur zwei oder drei Tabs offen hast?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!