Laden...

mscorlib.pdb nicht geladen im Release Mode

Erstellt von tobi45f vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.384 Views
T
tobi45f Themenstarter:in
59 Beiträge seit 2017
vor 4 Jahren
mscorlib.pdb nicht geladen im Release Mode

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 -> > Fehlermeldung:

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 😄)

Variante 2: Nur mein eigenen Code debuggen aktiviert -> die Anwendung befindet sich im Haltemodus. Derselbe Fehler in der Ausgabe> Fehlermeldung:

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)
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 😄)

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

W
955 Beiträge seit 2010
vor 4 Jahren

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

T
tobi45f Themenstarter:in
59 Beiträge seit 2017
vor 4 Jahren

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

ja 😉 vergessen es anzupassen. mein Fehler X(

(ich habe die Namen mal angepasst, damit meine wunderbaren Kunstnamen nicht so doof wirken 😄)

16.806 Beiträge seit 2008
vor 4 Jahren

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.