Zur Zeit wird gefiltert nach: visual studio
Filter zurücksetzen

16.03.2011
21:29

Visual Studio 2010 SP 1 – Die VolatileAssembly-Direktive verliert den Präfix Volatile

Mit dem Service Pack 1 für Visual Studio 2010 gibt es auch kleinere Verbesserungen im Bereich von T4. Vor dem SP 1 ist es so, dass Assemblies die mit der Assembly-Direktive referenziert werden, nicht mehr bearbeitet werden können, da sie gesperrt sind. Als Alternative hierzu gibt es die VolatileAssembly-Direktive aus der T4-Toolbox, die eine temporäre Kopie der Assembly anlegt und diese verwendet. Damit wird der Sperrmechanismus umgangen und die zeitgleiche Bearbeitung von T4 Vorlagen und der verwendeten Assembly wird möglich.

Mit dem SP 1 kann auch die Assembly-Direktive das Verhalten an den Tag legen, sodass die Verwendung der VolatileAssembly nicht mehr nötig ist. Ausprobiert habe ich es auch schon und habe sporadisch folgende Fehlermeldung erhalten:

There was a problem getting an AppDomain to run the transformation from the host. The process cannot continue.

Tritt dieser Fehler ein, reicht es nicht aus die Solution zu schliessen. Der Fehler ist erst verschwunden, wenn Visual Studio geschlossen und wieder gestartet wird. Die unkontrollierbare temporäre AppDomain lässt grüssen.

Zurück

Visual Studio 2010 – Wenn man von falschen Voraussetzungen ausgeht

Seit VS 2008, das ist jeden .NET-Entwickler bekannt, besteht die Möglichkeit das Zielframework der Solution anzugeben. So kann bspw. eine .NET 2.0 – Anwendung in VS 2008 entwickelt werden, zugegeben bei .NET 3.5 – Anwendungen ist es bedingt durch das SP1 wiederum speziell.

Dieses Feature ist VS 2010 - inkl. der Spezialität ;-) - erhalten geblieben. Gerade wenn man für Kunden mit unterschiedlichen Installationen entwickelt, bei der die Lehrbuchtheorie "Aktuelles Framework installieren" nicht mehr so ohne Weiteres funktioniert.

Leider fehlt hier der rote Faden. Im Glauben, dass ich mit dieser Eigenschaft auch VSTO-Anwendungen auf einer früheren .NET-Version mit den dazugehörigen Office-Tools entwickeln kann, habe ich ein Office-Projekt auf VS 2010 migriert. Hinterher ist man bekanntlich immer schlauer. Bei VSTO-Anwendungen funktioniert dieses praktische Feature nicht. In VS 2010 können diese Art der Anwendungen nur mit den VSTO 4.0 Tools entwickelt werden und in diesen gibt es, weil es gerade so schön ist, die allseits beliebten Breaking Changes, sodass auf den Zielsystemen die Anwendung nicht mehr funktionierte.

Ich kam also in die Verlegenheit, wieder auf die Version 2008 zu wechseln. Hinweise, wie das Ganze von Hand erledigt werden kann, habe ich hier gefunden, blieb mir aber zum Glück erspart, da ich auf das Backup zurückgreifen konnte.

Zurück

T4 Code-Generierung mit Visual Studio 2010

In Vorbereitung auf dem Webcast Code-Generierung mit T4 ist dieses Mind Map entstanden. Es enthält u.a. die Projektmappe mit den Beispielen, sowie Informationen die nicht Platz innerhalb der 60 Minuten hatten. Bei Verwendung der Registry-Dateien übernehme ich keine Verantworung. ;-)

Zurück

Entity Framework 4 - Model First und der rote Faden bei DDL-Vorlagen

Ich beschäftige mich gerade ein wenig mit den T4-Vorlagen zur Erstellung des DDL-Skripts. Hier liegt eigentlich schon das Problem. Die Item-Vorlagen für die DDL-Generierung folgen nicht dem gewohnten Muster. Dies macht auch die Verteilung dieser Vorlagen mit Hilfe des Extension Managers mittels VSIX-Projekt schwierig, da die Vorlagen in einem bestimmten Verzeichnis kopiert werden müssen.

Die Auswahl des DDL-Skripts erfolgt über die Eigenschaften des Entity Designer Modells.

Abbildung 1 DDL Generierungsvorlage
Abbildung 1

In der Auswahlbox steht nur die Vorlage SSDLToSQL10.tt zur Verfügung. Ich habe den Anspruch, dass die Generierungsvorlage neben den Tabellen auch Schattentabellen für die Historisierung anlegen soll, und will dafür eine modifizierte Vorlage bereitstellen.

Wer schon eigene Vorlagen für gespeicherte Prozeduren im SQL Server Management Studio oder Vorlagen für SSIS-Packages im BI Studio erstellt hat, dem wird das nachfolgende "Gefrickel" ein wenig bekannt vorkommen. ;-)

Die Vorlage SSDLToSQL10.tt befindet sich im Verzeichnis "Laufwerk:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen". In diesem Verzeichnis befindet sich auch die Datei für die Workflowgenerierung. Die angepasste DDL-Vorlage muss auch in dieses Verzeichnis kopiert werden. Anschliessend kann diese über die Eigenschaften ausgewählt werden und das sogar ohne Neustart von Visual Studio 2010. ;-)

Abbildung 2 Eigene DDL-Vorlage mit DML-Historiesierung
Abbildung 2

Bei Gelegenheit werde ich prüfen, ob es möglich ist, diese Vorlagen mittels Setup zu verteilen.

Zusammenfassend lässt sich feststellen, dass die T4-Vorlagen im Entity Framework einen Hype erleben. So können zum Grossteil projektspezifische Anpassungen vorgenommen werden, die sonst eine manuelle Nacharbeit erforderlich machen würden.

Die Herausforderung liegt bei den T4-Vorlagen, es besteht die Gefahr, dass nicht auf die Struktur geachtet wird mit der Auswirkung der schlechten Les- und Wartbarkeit.

Zurück

Visual Studio 2010 Erweiterung für Item Templates (Vorlagen)

Mit Visual Studio kommt neu der Erweiterungsmanager hinzu. Mit diesen soll die Erweiterung der Entwicklungsumgebung noch einfacher gehen. Da ich eine angepasste Vorlage per Hand in den Zielordner platziert habe, hat es mich natürlich interessiert, wie dies mit dem Erweiterungsmanager realisiert werden kann. Zuerst wird die Visual Studio SDK benötigt. Diese steht hier zum Download bereit. Nach der Installation steht ein neuer Auswahlpunkt "Extensibility" in den installierten Vorlagen zur Verfügung.

Abbildung 1 Auswahl Projekt für eine Visual Studio Erweiterung
Abbildung 1

Wenn das Projekt angelegt ist, wird die Manifestdatei angezeigt. Hier sind die Angaben zum Produktnamen, dem Autor und der Version wichtige Informationen.

Abbildung 2 Manifestdatei der Visual Studio Extension
Abbildung 2

Im Content Bereich wird es interessant, wenn die Vorlagen mittels Erweiterungsmanager zur Verfügung gestellt werden sollen. Als Inhaltstyp kann Vorlage ausgewählt und die Quelle dieser Vorlage gewählt werden. Bei der Angabe von Unterordnern wird eine Struktur angelegt, die nach der Installation bei den installierten Vorlagen ersichtlich ist.

Abbildung 3 Vorlage dem Projekt hinzufügen
Abbildung 3

Was hierbei zu beachten ist, die Datei wird in das Projekt kopiert. Das kann sich als Fallstrick bei Änderungen erweisen. Die hinzugefügte Vorlage erscheint anschliessend im Inhaltsbereich der Manifestdatei.

Abbildung 4 Übersicht der Vorlagen im Content-Bereich
Abbildung 4

Nach diesen Angaben kann das Projekt erstellt werden und im Ausgabeverzeichnis steht eine *.vsix-Datei zur Verfügung. Bis hier ist eigentlich alles ohne grosse Probleme verlaufen. Nach der Installation der Erweiterung wird diese auch im Erweiterungsmanager angezeigt.

Abbildung 5 Erweiterung im Erweiterungsmanager
Abbildung 5

Also kommt jetzt die Überprüfung, ob die Vorlagen zur Verfügung stehen. Füge ich ein neues Element hinzu, dann gibt es einen neuen Punkt "databinding" und dort steht auch die Klassenvorlage zur Auswahl.

Abbildung 6 Neuer Auswahlpunkt databinding
Abbildung 6

Was aber nicht zur Verfügung steht, ist die angepasste Vorlage für die Selbstnachverfolgung von Entitäten. Also überprüfe ich, ob diese korrekt installiert wurde. Dazu suche ich den Installationsorder. Interessanterweise findet man diesem unter dem Pfad "C:\Users\Username\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\rld\EntityFrameworkSelfTrackingEntitiesGerman\1.0\ItemTemplates\databinding" das Verzeichnis ef und die passende Vorlage. Es wurde also korrekt installiert.

Mein nächster Trick ist der alte Weg. Ich kopiere die Datei in das Vorlagenverzeichnis im Dokumentenbereich "C:\Users\Username\Documents\Visual Studio 2010\Templates\ItemTemplates\databinding" Hier lege ich die gleiche Struktur an, also "ef" und kopiere die Self Tracking-Vorlage hinein.

Abbildung 7 Kopiervorgang in die alte Vorlagenumgebung
Abbildung 7

Nach dieser Aktion steht im Punkt "databinding" der Punkt "ef" zur Verfügung und darin die T4-Vorlage für Entitäten mit Selbstnachverfolgung.

Abbildung 8 Sichtbare T4-Vorlage nach umkopieren in die alte Vorlagenumgebung
Abbildung 8

Was an der Sache einerseits interessant wirkt, ist das Zusammenfügen des Ordners "databinding" der 2 Verzeichnisse. Andererseits ist auch hier Murphy unterwegs, denn die T4-Vorlage wird über den Deploy-Vorgang der Erweiterung nicht dargestellt. Mal sehen, ob ich zu diesem Problem etwas finde.

Zurück

Translate this page

Kategorien