Kann ich verhindern, dass die CLR-von der Optimierung entfernt debugging-Informationen?

Ich geschrieben habe eine abstrakte Basisklasse für unit-tests gibt es gerade genug Umgebung für unsere tests. Die Klasse stellt einige der Laufzeitumgebung bits als Eigenschaften, deren Arten variieren test von test (die Eigenschaft Typen sind Typ-Argumente angegeben, in die die Erben, konkrete test-Klasse).

Das ist ja alles schön und gut, nur ein Kollege bemerkt, dass er nicht sichtbar von der Klasse "Eigenschaften" in den debugger. Stellt sich heraus, der Grund ist, dass er keine Felder definiert in seiner Klasse Erben, und die CLR-optimiert oder anderen etwas Weg, so wird der debugger konnte nicht zeigen Sie die Eigenschaften. Ist es möglich, zu verhindern, dass diese in der base-Klasse irgendwie, oder muss ich in dem resort, sagen alle, die Sie benötigen, definieren Sie mindestens ein Feld, das verwendet wird, irgendwo bei den tests?

Edit:

Klingt wie eine wahrscheinlich Schuldige sollte die Optimierung/debug-Einstellungen. Das heißt, ich Baue die app aus Visual Studio im Debug-Modus habe ich doppelt überprüft, dass alle Projekte einstellen, für ein Debugbuild, und keines der Projekte in dieser Lösung haben die Optimieren-flag gesetzt ist.

Vielleicht wäre es auch relevant sein, beachten Sie, dass ich mit MSTest und den Visual Studio test-runner.

Edit 2:

Durch "kann keine Eigenschaften anzeigen" ich mich beziehe, wenn ich bewerten die Immobilie in Schnellüberwachung und mit einem roten Ausrufezeichen und der text "Konnte nicht bewerten Ausdruck" Fehler-text. Und damit Sie nicht denken, ich bin völlig off base mit meinem Verdacht, das hinzufügen einer Instanz-Feld, wird die Initialisierung im test initialize-Methode macht das problem Weg...

Edit 3:

Überprüft die build-Ausgabe. Ich merke, dass der compiler wird aufgerufen mit den folgenden Optionen:

/debug+
/debug:full
/optimize-
/define:DEBUG,TRACE

Ich sollte denken, das wäre genug, um dies zu verhindern, aber es gibt Sie gehen. 🙂

  • Was passiert, wenn Sie ein debug-build?
  • Hmm... das klingt sehr seltsam. Könnten Sie eine kurze, aber komplette test-Programm demonstriert es?
  • Saunders: Genau das, was ich beschrieben habe.
  • das ist, warum ich glaube, Sie suchen bei einem Release-build. Oder jemand hat es so einrichten, optimieren, während einer debug-build. C# nicht viel Optimierung in jedem Fall. Die Optimierung von etwas entfernt ist, scheint sehr unwahrscheinlich, dass in einem debug-build, daher mein Verdacht, du bist nicht auf der Suche an einem debug-build.
  • Nun, ich werde verdammt werden. Der einfachste test Fall konnte ich denken, bis nicht dieses Verhalten. 🙁
  • Saunders: Nein, doppelt überprüft. Alle Projekte, die sich um debug-build. :/
  • debug-build, und was ist das Optimierungs-flag gesetzt, und eine neu erstellen.
  • Saunders: Aktualisierung der Beschreibung. Optimierung-flag nicht gesetzt ist, für jedes der Projekte entweder. Rebuild gemacht, zu.
  • Hmm, compiler-Optionen richtig zu mir.
  • mein Nächster Schritt wäre zu "Titrieren" zwischen den einfachsten test, den Sie versucht (die nicht display das problem), und der code (das display das problem). Ich würde mich auch darüber Wundern, MSTEST. Insbesondere Frage ich mich, über post-compile manipulation der IL. Auch Sie sind mit PostSharp?
  • Keine PostSharp. MSTEST hat einige Instrumentierung für code-coverage obwohl. Ich werde sehen, was ich kann Graben, bis morgen...

InformationsquelleAutor Rytmis | 2009-06-30
Schreibe einen Kommentar