Laden...

[erledigt] Framework *.cs wird nicht gefunden

Erstellt von Reggi vor 6 Jahren Letzter Beitrag vor 3 Jahren 4.424 Views
R
Reggi Themenstarter:in
25 Beiträge seit 2016
vor 6 Jahren
[erledigt] Framework *.cs wird nicht gefunden

Hallo zusammen,

ich wundere mich, dass meine Abfrage:


if (!Int32.TryParse(selectedOrderLine.Gr_1, out int parsedInt) && parsedInt - 1 > -1)
    selectedOrderLine.Gr_1 = "0";

nicht funktioniert, bzw einfach nichts tut, wenn ich mein Programm ausführe.
Nun habe ich den Debugger gestartet und es kam der Fehler, der im Titel steht. Selber suchen kann ich ja schlecht da sich die .cs ja in einer .dll "versteckt". Es öffnet sich ein Suchfenster und ich werde aufgefordert die Datei zu suchen. Was ich merkwürdig finde ist, dass der Pfad so oder so nicht existiert, der da angegeben ist:

** f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs**

Eine genaue Meldung zum Verlauf ist hier:> Fehlermeldung:

Quelle für "f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs" wird gesucht. (No checksum.)
Die Datei "f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs" ist nicht vorhanden.
"f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs" wird in Skriptdokumenten gesucht...
"f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs" wird in Projekten gesucht.
Die Datei wurde nicht in einem Projekt gefunden.
In Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src" wird gesucht...
In Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc" wird gesucht...
In Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl" wird gesucht...
In Verzeichnis "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include" wird gesucht...
Quelle wird mithilfe des Quellservers gesucht...
In den Einstellungen zum Debuggen von Quelldateien für die aktive Projektmappe ist angegeben, dass der Benutzer nicht zum Suchen der Datei aufgefordert wird: f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs.
Die Quelldatei "f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs" wurde nicht gefunden.

Abgesehen davon wurde mir vom VS empfohlen Disassemblys anzeigen zu lassen. Habe ich gemacht... Allerdings bringt mich das auch nicht wirklich weiter, weil ich die Zeilen:

--- f:\dd\ndp\clr\src\BCL\system\globalization\numberformatinfo.cs -------------
00007FFF3BC7F850 push rsi
00007FFF3BC7F851 sub rsp,20h
00007FFF3BC7F855 call 00007FFF3BC01650
00007FFF3BC7F85A mov rcx,rax
00007FFF3BC7F85D cmp dword ptr [rcx],ecx
00007FFF3BC7F85F call 00007FFF3BC73DD0
00007FFF3BC7F864 mov rsi,rax
00007FFF3BC7F867 movzx eax,byte ptr [rsi+75h]

nicht auswerten kann, weil ich beim besten Willen nichts damit anfangen kann.

Bei Google gibt es auch wenig Aufschluss. Das Einzige, was hilfreich aussah war, dass ich in den Optionen einstellen soll, dass nur eigener Code ausgeführt wird. Aber wenn ich das mache, dann geht gar nichts mehr, weil seit der Umstellung von VS 2010 zu 2017 das Projekt nicht als mein eigenes angegeben wird. Und auch sonst muss es ja einen anderen Weg geben, immerhin muss ich ab und zu auch an die Projekte von anderen etwas machen.
Was vllt noch wichtig wäre zu sagen ist, dass die Umstellung im Zuge eines Upgrades von Win7 auf Win10 erfolgt ist. Allerdings hat die Technik die Userprofile und alles kopiert. Der Suche nach wird wohl trotz allem noch nach VS2010 gesucht? Aber ich bin was sowas angeht echt überfragt 😦.

Hattet ihr sowas schon mal? Und wenn ja, was kann ich tun?

3.003 Beiträge seit 2006
vor 6 Jahren

Hallo zusammen,

ich wundere mich, dass meine Abfrage:

  
if (!Int32.TryParse(selectedOrderLine.Gr_1, out int parsedInt) && parsedInt - 1 > -1)  
    selectedOrderLine.Gr_1 = "0";  
  

nicht funktioniert, bzw einfach nichts tut, wenn ich mein Programm ausführe.

Ich nicht so sehr. Wenn TryParse fehlschlägt, hat deine implizit deklarierte Variable parsedInt den Wert 0, und der abzüglich 1 ist nicht größer als -1. Diese Codezeile wird also nicht durchlaufen.

LaTino
EDIT: um's deutlicher zu machen: deine Bedingung entspricht, wenn man sie auseinandernimmt, dem Ausdruck !A && A, und der ist immer false.

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

463 Beiträge seit 2009
vor 6 Jahren

Zu deinem Problem mit der fehlenden Datei - schau mal unter Optionen / Debugger / Symbole. Hast du dort den Pfad f:\dd.... eingestellt?

R
Reggi Themenstarter:in
25 Beiträge seit 2016
vor 6 Jahren

Hey LaTino,

ich bin gerade sprachlos...
Aber eher, weil ich mich wundere, dass solche Sachen angezeigt werden, obwohl alles funktioniert. 8o

Hab jetzt Klammern drum gesetzt und siehe da... es geht. Obwohl mir im Debugger immer noch diese Meldung angezeigt wird, dass die .cs nicht gefunden wird. Vllt weiß ja da trotz dem Jemand warum das so ist oder was da passiert und ob das vielleicht sogar normal ist?

@Stefan:
Der Zwischenspeicher für die Symbole (war der einzige Pfad) ist auf C:\Users\user\AppData\Local\Temp\SymbolCache

16.806 Beiträge seit 2008
vor 6 Jahren

Der Debugger sucht die cs, da Du den Source davon debuggen willst.
Vermutlich hast Du dazu die Einstellung in Visual Studio gesetzt; und für das Debuggen braucht er eben diese Datei (oder Symbols) dann (sofern Du reinsteppen willst).

Gibt aber eigentlich keinen Grund, dass man in Framework Code steppen will.
Das macht man nur, wenn man den Verdacht hat, dass hier etwas nicht stimmt (was sehr sehr sehr selten der Fall sein wird).

R
Reggi Themenstarter:in
25 Beiträge seit 2016
vor 6 Jahren

Hallo Abt,

ja das klingt natürlich logisch. Erklärt auch, warum die Meldung verschwindet, wenn man nur eigenen Code debuggt vielen Dank für Info 😉.

16.806 Beiträge seit 2008
vor 6 Jahren

Kann das übrigens sein, dass Du Framework DLLs irgendwohin kopierst, wo sie normalerweise nicht liegen sollten?
Der Pfad sieht nämlich ungewöhnlich aus.

656 Beiträge seit 2008
vor 6 Jahren

Der Pfad sieht nämlich ungewöhnlich aus.

Wenn ich mich recht entsinne ist das aber der Pfad auf dem Microsoft Buildserver (oder whatever), der in den Framework-PDBs mit drin ist...

463 Beiträge seit 2009
vor 6 Jahren

Deswegen vorhin mein Hinweis mit den Einstellungen...

R
Reggi Themenstarter:in
25 Beiträge seit 2016
vor 6 Jahren

Die Framework DLL's habe ich nicht angerührt. Die einzigen DLL's, die ich kopiere sind die aus Nuget, weil ich die ja nachher brauche, wenn die Anwendung auf andere PC's kommt.

Ich schätze es ist eben genau das, was Abt vorhin geschrieben hat, dass der Debugger versucht in die cs. zu springen. Dann macht wie gesagt auch das Sinn, was ich bei Google gefunden hatte, dass diese Meldung verschwindet, wenn man in den Debugg-Optionen "Nur meinen Code aktivieren" einschaltet, weil das dann übersprungen wird.
Und mit der Info, dass das der Pfad auf dem Buildserver sein könnte, verstärkt sich meine Annahme und klingt umso logischer 🤔.

174 Beiträge seit 2009
vor 3 Jahren

Auch wenn der Beitrag schon älter ist ...

In StackOverFlow habe ich einen Hinweis gefunden, wonach das wohl ein Problem von VS2017 sein soll -->

Had the same issue, neither proposed above solutions helped me to solve the problem. Occurred in VS 2017. When I ran the project in Visual Studio 2019, everything worked. So just try to run it in other environments. Hope this answer will help someone

Wenn man nicht gerade dabei ist, eine DLL zu programmieren, hilft in jedem Fall das Checkfeld "Nur meinen Code ausführen" unter "Extras/Optionen/Debugging", für die o.g. Arbeit jedoch nicht !

Da hilft es unter "Extras/Optionen/Debugging/Symbole" das Optionsfeld "Nur angegebene Module laden" zu aktivieren und dann unter "eingeschlossene Module angeben" die entsprechende dll hinzuzufügen...

MfG Christian