T4 Templates - Der Nachteil einer Textdatei
Gerade wollte ich mir die Zeit nehmen und bei der deutschen Version von Visual Studio 2010 das Codegenerierungselement Self Tracking Entities testen. In der Englischen Umgebung habe ich bisher keine Probleme mit der Basisfunktionalität gehabt. Nun bei der deutschen Version hat wohl Murphy seine Finger im Spiel.
Wenn ich zu den Code in das Template springe, ist folgender Code-Block ersichtlich:
C# TT - CodeBlock-Ausschnitt
// <#=String.Format(CultureInfo.CurrentCulture, "Zeichnet die ursprünglichen Werte für die komplexe Eigenschaft "{0}" auf.", edmProperty.Name)#>
private void Handle<#=edmProperty.Name#>Changing(object sender, EventArgs args)
{
if (ChangeTracker.State != ObjectState.Added && ChangeTracker.State != ObjectState.Deleted)
{
ChangeTracker.State = ObjectState.Modified;
}
<#
if (originalValueMembers.IsOriginalValueMember(edmProperty))
{
#>
<#=code.Escape(edmProperty.TypeUsage)#>.RecordComplexOriginalValues("<#=edmProperty.Name#>", this.<#=code.Escape(edmProperty)#>, ChangeTracker);
<#
}
#>
}
Wer die erste Zeile (String.Format) sieht, erkennt bestimmt die Anführungsstriche, die nicht entwertet sind und den Fehler verursachen. Wenn ich "{0}" mit '{0}' ersetze oder alternativ die Anführungsstriche entwerte und die Solution neu kompiliere sind diese Fehler verschwunden und die Entitäten werden fehlerfrei generiert, der Kontext jedoch nicht (79 Fehler). Das liegt daran, dass im Context-T4 Template das gleiche Problem lauert.
Ein Vorteil dieser T4 - Templates, es ist wirklich schnell korrigiert.
Das eigentliche Problem sitzt jedoch in den lokalisierten Ressourcen wie zum Beispiel $Localized_STECtx_Comment_630$, in diesen werden die Anführungsstriche nicht entwertet.
- 0 Kommentar(e)




Mein Kommentar