VS2008 – Debuggen von WPF Anwendungen (und andere)

Spätestens beim Debuggen von WPF Anwendungen sollte man eine Default Einstellung des Visual Studio 2008 ändern.

In den Option kann man dem Debugger sagen, er soll nur Code, den man selbst geschrieben hat Debuggen, Code der von einem Designer in Visual Studio erzeugt wird, wird dann nicht mehr beim Debuggen berücksichtigt.

Ein eventuell auftretender Fehler kann dadurch nicht konsequent verfolgt werden.

Beim Debuggen von WPF Anwendungen geht das soweit, dass selbst Fehler im XAML Code nicht mehr mit dem Debugger verfolgt werden können.

Also sollte man in die Optionen gehen und dort die folgende Einstellung vornehmen.

image

Die Option Enable Just My Code (Managed only) ist per Vorgabe aktiviert. Also einfach die Option deaktivieren und schon verfolgt der Debugger auch Code, der durch Designer erstellt wurden.

VS2008 – C# Compiler Erweiterungen

Bei einigen der unter C# 3.0 Spracherweiterungen geführten Dinge handelt es sich mehr um Compilererweiterungen des C# Compilers der mit Visual Studio 2008 ausgeliefert wird, als um echte Spracherweiterungen für C#.

So funktionieren die nachfolgenden Erweiterungen auch dann wenn man Code für das NET Framework 2.0 erzeugt:

  • Implizit typisierte lokale Variablen
  • Objekt Initialisierer
  • Anonyme Typen
  • Automatische Eigenschaften

Wenn diese Dinge „Spracherweiterungen“ und nicht „Compilererweiterungen“ wären, dann wäre es nicht möglich ein Programm welches diese Feature verwendet für das NET 2.0 Framework zu erstellen und auf einem Rechner mit „nur“ installiertem NET 2.0 Framework  auszuführen.

Hier ein Beispiel, welches ich mit VS2008 als Konsolenanwendung für den Framework 2.0 erstellt habe und auf einem Rechner mit NET 2.0 Framework ausgeführt habe:

class Program
{

    // Automatische Eigenschaften
    static public double AutoDouble { get; set; }

    // Klasse zur Verwendung mit Objekt Initialisierung ohne Konstruktoren
    public class Address
    {
        public string Name { get; set; }

        public string Street { get; set; }

        public int ZIP { get; set; }

        public string City { get; set; }

        public override string ToString()
        {
            return this.Name + "," + this.Street + "," + this.ZIP + "," + this.City ;
        }
    }

    static void Main(string[] args)
    {
        // Implizit typisierte lokale Variable
        var i = 10;

        // Verwendung der Eigenschaft AutoDouble 
        AutoDouble = 12.22;

        // Anonymer Typ
        var figur = new { Name = "Rechteck", Breite = 1024, Hoehe = 768 };

        // Objekt Initialisierung mit Feldbezeichnungen ohne Konstruktor
        Address adr = new Address { Name = "Max Musterman", Street = "Platanenweg", ZIP = 4711, City = "Musterhausen" };

        // Ausgabe der Werte
        Console.WriteLine(i.ToString());
        Console.WriteLine(AutoDouble.ToString());
        Console.WriteLine(String.Format("Die Adresse lautet {0}",adr.ToString()));
        Console.WriteLine(String.Format("Hier der anonyme Typ figur {0}",figur.ToString()));

        Console.Read();
    }

}

Nicht von diesem Beitrag betroffen sind die echten Spracherweiterungen von C# 3.0 wie:

  • Erweiterungsmethoden
  • Lambda Expressions
  • LINQ

Diese erfordern aber das die Programme für das NET 3.5 Framework erstellt werden.

VS2008 Beta 2 – Problem mit langen Pfaden

Nachdem ich bereits vor einiger Zeit auf meiner Workstation die mit einem englischen Windows XP ausgestattet ist die Visual Studio Beta 2 (VS2008) ohne Probleme installieren und auch verwenden konnten, habe ich vor einigen Tagen zum weiteren Test, VS2008 Beta 2 noch zusätzlich auf einem Notebook (Windows XP in Deutsch) installiert.

image Die Installation verlief dabei auch ohne Probleme, danach konnte ich auch VS2008 ohne Probleme starten und ein Projekt, egal welches erstellen und auch speichern.

Wenn ich nun aber F5 zum ausführen/starten des Projektes betätigt habe, wurde kurz mit dem Übersetzen des Projektes gestartet und dann hat sich das ganze Visual Studio einfach ohne weitere Meldung verabschiedet (geschlossen). Gerade so, als hätte man Beenden ausgewählt.

Nachdem ich mir das etwas näher angeschaut habe ist mir aufgefallen, dass das Problem nicht an der Deutschen Installation liegt, sondern daran dass VS2008 Beta 2 ein Problem damit hat, wenn der Pfad/Dateiname des Projektes mehr als 64 Zeichen lang ist.

Das wiederum ist auf einer Deutschen Maschine in der Standard-Installation leicht der Fall, wie im folgenden Beispiel zu sehen ist:

C:\Dokumente und Einstellungen\Testuser.TESTDOMAIN\Eigene Dateien\Visual Studio 2008\WindowsFormsApplication1\WindowsFormsApplication1.sln.

Also einfach darauf achten, dass die Pfade für die Projekte nicht zu lang werden.

Zum Beispiel C:\Projekte\…