Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
mscorlib.pdb nicht geladen im Release Mode
tobi45f
myCSharp.de - Member



Dabei seit:
Beiträge: 60

Themenstarter:

mscorlib.pdb nicht geladen im Release Mode

beantworten | zitieren | melden

Hallo zusammen,

ich habe ein Problem,. dass sich zwar gut googlen lässt, dessen Lösungen aber nicht funktionieren und dessen Ursache ich nicht verstehe (auch nicht mit den Erklärungen die man bei google so findet). Ich erhoffe mir, dass mir das hier vielleicht jemand anders erklären kann und ich somit den Fehler beseitigt bekomme.

Ich nutze Visual Studios 17, Version 15.9.9 und habe ein WPF-Projekt in C# erstellt.

Wenn ich mein Projekt im debug-Modus erstelle, dann läuft es wunderbar durch. Alles funktioniert. Auch die .exe im bin-Ordner macht dasselbe, wenn Visual Studio geschlossen ist.

Wenn ich nun den Release-Modus nutze, dann bekommt er einen Fehler.
Variante 1: Nur mein eigenen Code debuggen deaktiviert -> mscorlib.pdb nicht geladen ->
Fehler
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in mscorlib.dll aufgetreten.
Fehler beim Vergleichen von zwei Elementen im Array.

Aus der Exception kann ich entnehmen, dass es wohl an folgender Klasse zum sortieren liegt:

class LSortieren : Comparer<Leitungsende>
    {
        public override int Compare(Leitung x, Leitung y)
        {
            if ((x.Prot != null && y.Prot != null) || (x.Prot == null && y.Prot == null) && x.Stat != null && y.Stat != null)
            {
                return y.abc.CompareTo(x.abc);
            }
            else
            {
                if (x.Prot != null && y.Prot == null) return -1;
                else return 1;
            }
            throw new NotImplementedException();
        }
    }

Die in der Fehlermeldung angegebene Zeile ist die erste IF-Abfrage. Ich habe alle Aufrufe überprüft. Zu keinem Zeitpunkt waren die übergebenen Argumente Null. Es waren immer zwei Werte enthalten. (wie gesagt, im Debug Modus läuft es auch durch)
An sich kann ich keinen Fehler entdecken, auch nicht beim Aufruf des Compares.


Comparer<Leitungsende> compE = new LSortieren();
                s.LeitungsendeList.Sort(compE); 
// s ist eine Instanz einer Klasse. LeitungsendeList besitzt immer zwei Instanzen der Klasse (überprüft!)
(ich habe die Namen mal angepasst, damit meine wunderbaren Kunstnamen nicht so doof wirken :D)


Variante 2: Nur mein eigenen Code debuggen aktiviert -> die Anwendung befindet sich im Haltemodus. Derselbe Fehler in der Ausgabe
Fehler
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in mscorlib.dll aufgetreten.
Fehler beim Vergleichen von zwei Elementen im Array.
und auch hier der Fehler an derselben Stelle.


Google brachte mir folgende Ideen, um den Fehler zu beseitigen:
1. eigenen Code debuggen deaktivieren (siehe oben)
2.

useLegacyV2RuntimeActivationPolicy="true"
in der Config Datei. Hat nichts gebracht.
3. Irgendwas mit Symbolen, Cache und Server, was ich allerdings nicht verstanden habe?
4. Fehlersuche und diesen beseitigen (klasse Tipp :D)

Nun zu meinen Fragen:
1. Was ist genau der Unterschied zwischen dem Debug und Release Modus? Warum sollte ich die .exe aus dem Release verwenden, wenn die aus dem Debug "besser" läuft?

2. Wie bekomme ich den Fehler beseitigt? Ich kann beim einzelnen durchgucken diesen Fehler nicht finden. Tipps, wie ich ihn ausfindig machen kann?

Gruß Tobias
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 959

beantworten | zitieren | melden

Gibt es einen Grund warum einmal Leitungsende und einmal Leitung verwendet wird?
private Nachricht | Beiträge des Benutzers
tobi45f
myCSharp.de - Member



Dabei seit:
Beiträge: 60

Themenstarter:

beantworten | zitieren | melden

Zitat von witte
Gibt es einen Grund warum einmal Leitungsende und einmal Leitung verwendet wird?

ja vergessen es anzupassen. mein Fehler X(
Zitat
(ich habe die Namen mal angepasst, damit meine wunderbaren Kunstnamen nicht so doof wirken :D)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15526
Herkunft: BW

beantworten | zitieren | melden

Die Meldung kommt eigentlich nur wenn Du versuchst Framework Code zu debuggen und keinen Symbolserver angegeben hast.
Hast Du wirklich den Haken bei "Just my Code" in den Debuggingsettings gesetzt?

Ansonsten mal Unit Tests schreiben; dann fällt sowas schnell auf.
[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio

Kann man auch prima im Release Mode testen.
private Nachricht | Beiträge des Benutzers