Visual Studio 2010 überschreibt ohne Warnung Codedateien

Der Dotnet-Doktor  –  2 Kommentare

Bei meinem Entity Framework-Workshop heute auf der BASTA-On-Tour bin ich auf einen durchaus gravierenden Fehler in Visual Studio gestoßen, der bestehende Codedateien ohne Warnung überschreibt.

Im "ADO.NET Entity Framework"-Designer in Visual Studio 2010 kann man auf dem T4-Format basierende Codegenerierungsvorlagen („Add Code Generation Item“) wählen. Dadurch werden dem Projekt eine oder mehrere T4-Dateien (.tt) hinzugefügt, die jeweils eine oder mehrere Programmcodedateien generieren. Die Namen der Programmcodedateien orientieren sich zum Beispiel für die Vorlagen "POCO" und "Self-Tracking Entities" an den im Modell vorhandenen Entitäten. Wenn nun eine Entität (beispielsweise Person) genauso heißt wie eine bereits in dem gleichen Projekt auf der gleichen Ordnerebene vorhandene Codedatei (etwa Person.cs), dann überschreibt die T4-Vorlagenauswertung die vorhandene Person.cs, ohne den Benutzer zu warnen. Auch ein Rückgängigmachen ist dann nicht mehr möglich!

Die nachfolgenden Bildschirmabbildungen zeigen das Problem.

Situation vor dem Anwenden der T4-Vorlage (Abb. 1)
Auswahl der T4-Vorlage für das Modell mit der Entität "Person"
Die T4-Vorlage hat ohne Warnung die "Person.cs"-Datei mit der generierten gleichnamigen Datei überschrieben! (Abb. 3)