In loser Folge schreibe ich über besonders gute oder schlechte Bücher an dieser Stelle. Nun habe ich vor Kurzem das Buch ScharePoint & Co gelesen und finde dieses Buch durchaus empfehlenswert. Gleich vorneweg, das Buch enthält keine Informationen, wie man für SharePoint Web-Parts entwickelt. Es war für mich als Entwickler aber dennoch sehr interessant, weil es sehr gut die verschiedenen Einsatzmöglichkeiten von SharePoint in Zusammenarbeit mit anderen Office-Anwendungen beschreibt. Es wird anhand verschiedener praxisorientierter Beispiele gezeigt wie man Daten in Excel- oder Access-Tabellen innerhalb von SharePoint nutzt, wie man auf der SharePoint Plattform Kommunikation effizient gestaltet, z.B. mit dem Exchange-Server oder Groove, wie man InfoPath-Formulare nutzt und wie man mit dem SQL-Server Business Intelligence realisiert. Das Buch hat mir die eine oder andere Möglichkeit aufgezeigt, die ich bisher noch nicht kannte und wo ich früher vielleicht erst mal selbst ein WebPart oder eine andere Lösung geschrieben hätte. Das Buch hat mir verdeutlicht, dass SharePoint mehr kann, als ich bisher wusste. Das gibt mir die Möglichkeit, unser Portal um Funktionen zu erweitern, die bisher wegen zu viel Aufwand einfach außen vor geblieben sind. Aus meiner Sicht ein absolut empfehlenswertes Buch, auch für Entwickler.  SharePoint & Co. - Technologien und Tools im Teamwork von MindBusiness und HanseVision erschienen bei Microsoft-Press
Über das PropertyGrid-Control habe ich ja mehrmals gebloggt (z.B. hier). Dieses Control verwendie ich recht häufig um z.B. den Inhalt eigene Konfigurations-Klassen zu editieren. Zusammen mit der XML-Serialisierung lassen sich so sehr flexible Konfigurationsmöglichkeiten schaffen. Nun hatte ich die Anforderung eine dynamische Datenstruktur an ein PropertyGrid zu binden. Da stand ich zunächst vor einem Problem. Bisher habe ich nur Objekte mit Properties unterschiedlicher Typen an das PropertyGrid gebunden. Nun habe ich eine Liste von Objekten, die die Elemente im PropertyGrid beschreiben. Wie aber diese an das PropertyGrid binden? Das schöne ist, das das PropertyGrid sich hier als sehr flexibel erweist. Man muss folgende Schritte durchführen: - Man brauch eine Klasse für ein einzelnes Property
- Dann brauchen wir eine Collection für diese Properties. Diese leiten wir von CollectionBase und ICustomTypeDescriptor ab und implementieren die Interfaces. Entscheidend ist hier die Methode GetProperties. Hier werden nun ine PropertyDescriptionCollection aus unseren Properties aufgebaut. Diese Methode ruft das PropertyGrid auf um sich dieProperties zu besorgen, die es rendern soll. Hier können wir nun also von einer belibigen Datenstruktur die benötigten
Informationen für das PropertyGrid aufbauen. - Dafür brauch wir jetzt noch einen cCustomPropertyDescriptor. Diesen leiten wir von PropertyDescriptor ab und implementieren es.
- Nun können wir unsere Properties aufbauen und an das PropertyGrid binden. Ich habe das CustomPropertyGrid als eigenes Control angelegt. Der Code ist nun sehr simpel:
1: private void Form1_Load(object sender, EventArgs e) 2: { 3: cPropertyCollection props = new cPropertyCollection(); 4: props.Add(new cPropertyItem("BoolValue", "This is a boolean value", false, true, "Properties")); 5: props.Add(new cPropertyItem("StringValue", "This is a string value", false, "Test123", "Properties")); 6: props.Add(new cPropertyItem("Folder", "Path for folder", false, "", "Path")); 7: 8: this.artisoPropertyGrid1.SelectedObject = props; 9: }
Damit erhält man folgendes Ergebnis. Man sieht die dynamisch angelegten Properties mit ihrem Name, in die Kategorien untergliedert und mit der Beschreibung. Das PropertyGrid wählt automatisch die gewohnten Controls abhängig vom Datentyp aus.
Dis ist schon ganz nett. Ich möchte aber für das Folder-Property einen entsprechenden Editor angeben können. Bei statischen Klassen vrwendet man einfach Attribute, aber bei dynamischen? Dazu wird die verfügbare Dokumentation sehr, sehr dünn. Hierzu haben wir auf der Property-Klasse eine Attribute-Arary. Diese Attribute können wir nun in der GetProperties-Klasse an den cCostomPropertyDescriptor übergeben. Der Aufbau der Properties sieht dann so aus:
1: private void Form1_Load(object sender, EventArgs e) 2: { 3: cPropertyCollection props = new cPropertyCollection(); 4: props.Add(new cPropertyItem("BoolValue", "This is a boolean value", false, true, "Properties")); 5: props.Add(new cPropertyItem("StringValue", "This is a string value", false, "Test123", "Properties")); 6: props.Add(new cPropertyItem("Folder", "Path for folder", false, "", "Path", 7: new TypeConverterAttribute(), 8: new EditorAttribute(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor)))); 9: 10: this.artisoPropertyGrid1.SelectedObject = props; 11: }
Nun kann man im Feld für den Wert für das Property "Folder" auf einen Button klicken und erhält einen Dialog zur Auswahl eines Verzeichnisses.
Bei der Neuinstallation eines Entwicklungsrechners dauert es immer ewig, bis man sich die ganzen nützlichen Helferlein zusammengesucht hat, die man im Laufe der Zeit zu schätzen gelernt hat. Deshalb habe ich mir gedacht, ich schreibe mir mal eine Liste, die ich dann immer wieder ergänzen kann. Und vielleicht ist für den einen oder anderen da auch noch was interessantes dabei. Also so könnte ein Entwicklungsrechner aussehen: Betriebsystem / Standardanwendungen: - Windows Vista Ultimate
- Office 2007
- SQL-Server 2005 Express
- SQL-Server 2005 Management Studio
Entwicklungsumgebung: Tools Stand 13.04.2008 To be continued...
Doch einigermaßen überraschend fand ich gestern eine Mail in meinem Postfach: Sehr geehrte(r) Thomas Schissler, Herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2008 verleihen zu können. Mit dem MVP Award danken wir Ihnen für Ihren Einsatz für die Community, mit dem Sie Tag für Tag dazu beitragen, das Leben der Menschen zu bereichern und die Branche erfolgreicher zu machen. Wir schätzen Ihren außerordentlich bedeutenden Beitrag in den technischen Communities zum Thema Microsoft Team System im vergangenen Jahr hoch ein. Als Ausdruck unseres Dankes schickt Microsoft Ihnen bald ein MVP Award Paket zu. Damit möchten wir nochmals sagen „Danke für Ihren Einsatz“. .. Das freut mich ganz besonders. Schön dass mein Engagement hier honoriert wird. Für mich bedeutet das Ansporn und Verpflichtung, meine Community-Aktivitäten mit unvermindertem Einsatz fortzuführen.
Wer sich nicht vom Ende der Trail-Laufzeit seines TFS überraschen lassen möchte, kann ein kleines Tool verwenden. Damit kann man sich anzeigen lassen, wie lange der TFS noch laufen wird. Außerdem kann man wenn die Laufzeit nicht mehr als 10 Tage beträgt, diese auch noch einmalig um 30 Tage verlängern kann. Für eine zweiter Verlängerung braucht man eine neue Trail ID, die man bei Microsoft anfordern muss. Das Tool gibt es auch für TFS 2005 wobei ich mir kaum vorstellen kann, das heute noch jemand den TFS 2005 evaluiert. TFSVersionDetection.zip Weitere Informationen bei Brian Harry
Nachdem wir immer mehr Anfragen bezgl. unseres artsio WorkitemManager und x64 Systemen erhalten haben, haben wir hier in den letzten Tagen mal versucht, die TFS API unter Vista x64 zum Laufen zu bekommen und ich möchte das hier auch mal posten. Das Problem stellt sich in der Entwicklungsumgebung folgendermaßen dar. Direkt nach dem Start der Anwendung bekommt man folgenden Fehler: Die Assembly ist natürlich da. Die Lösung dafür ist sehr einfach. Man muss dem Projekt lediglich sagen, dass es eine x86 Anwendung ist. Dann wird es unter x64 als x86 Anwendung ausgeführt und kann damit auch die TFS API verwenden. Dazu muss man lediglich in den Eigenschaften des Projektes als Plattform explizit x86 auswählen. Nach unseren bisherigen Tests scheint damit die API auch auf x64 Systemen problemlos zu funktionieren.
Am 28.04 kommt Lars Keller, Group-Lead der .net Usergroup Braunschweig zu uns nach Ulm und wird hier einen Vortrag zu VSTO halten. Die mit Visual Studio 2008 ausgelieferte VSTO 3.0 Komponente und die frisch erschienenen VSTO Power Tools bringen zahlreiche Neuerungen für die Office Entwicklung mit sich. Ein wichtiges neues Feature in Office 2007 ist die Ribbon UI. Aber wie kann man diese anpassen? Was kann der neue Ribbon-Designer in VS 2008? Kann WPF in Office angewendet werden und wie passt LINQ dazu? Diese und weitere Fragen werden in dem Vortrag von Lars Keller behandelt. Die Theorie wird dabei durch viele kleine Live-Coding Beispiele abgerundet. Weitere Infos unter www.dotnet-ulm.de Diese Veranstaltung wird unterstützt von

Die Tatasache, dass sich Visual Studio Team System inzwischen zu einem Produkt mit einer enormen Funktionsvielfalt entwickelt hat, wird schon alleine dadurch dokumentiert, dass es vom 22.04 bis 24.04 eine Konferenz gibt, die sich nur mit diesem Produkt beschäftigt. Die Vorträge decken dabei einen großen Bereich von Projektmanagement über Qualitätsmanagement bis hin zu Best Practices und Erfahrungsberichte ab. Ich selbst werde auch mit einem Vortrag zum Thema hierarchische Workitems vertreten sein. Wer schon mal einen Blick in die Zukunft werfen möchte, dem sei der Vortrag von Christian Binder zum Thema Rosario ans Herz gelegt. Würde mich freuen, den einen oder anderen Leser meines Blogs auf der TeamConf persönlich kennen zu lernen. Wer auch dort ist, kann mir einfach einen Kommentar hinterlassen. 
Bin gerade auf das Jing-Projekt gestoßen. Damit lassen sich ganz einfach Screenshoots und Screencasts erstellen. Auf Wunsch kann man die Ergebnisse bei Screencast.com hochladen (ein kostenloser Account wird bei der Installation mit eingerichtet) oder in Flickr bzw. auf einem eigenen FTP-Server oder einem Fileshre ablegen. Werde das mal testen, ob sich damit meine Blog-Beiträge etwas aufwerten lassen.  Download Jing-Projet
Weitgehend unbemerkt von der breiten Masse der Entwickler bringt das .net Framework 3.0 auch eine Bibliothek zum Erstellen von automatisierten UI-Tests mit. Unter %PROGRAMFILES%\Reference Assemblies\Microsoft\Framework\v3.0 finden sich folgen sich die benötigten DLLs. Damit kann man UI-Tests selbst programmieren und auch in Unit-Tests integrieren. Das entspricht zwar nicht der weit verbreiteten Erwartungshaltung, die eher von einer "Record & Play" Methode ausgehen, bietet aber verschiedene Vorteile in Bezug auf Wartbarkeit und Stabilität. Ich habe hier mal ein kleines Beispiel gebaut, das den Einsatz demonstriert: Ich werde in Kürze weitere Details bloggen und verschiedene Einsatzgebiete, Erweiterungen und auch Grenzen aufzeigen. Auch ein Webcast ist zu dem Thema geplant. Bis dahin erst mal ein paar weiterführende Dokumente. Leider ist da im Moment noch nicht sehr viel publiziert worden. http://msdn2.microsoft.com/en-us/magazine/cc163288.aspx http://msdn2.microsoft.com/en-us/accessibility/bb892133.aspx Das Tool ist auf jeden Fall interessant und da es kostenlos mit dem .net Framework mitkommt, sollte jeder der sich mit Software-Tests beschäftigt mal einen Blick drauf werfen.
Mit diesem DSL Tool kann man WCF-Services einfach un komfortabel mit Hilfe eines Designers im Visual Studio bauen. Echt schick! Wie der Class-Designer hat man Two-Way-Synchronisation zwischen Code und Designer. Alle wichtigen Code-Elemente können durch den Designer erstellt werden. Schade nur, daß das Tool unter VS2008 momentan noch nicht verfügbar ist.  Ein Video in dem man das Tool in Aktion sehen kann gibt es hier. Weitere Infos und Downloads gibt es hier.
Ich bin in den nächsten Wochen wieder unterwegs Wer mich mal gerne persönlich kennenlernen möchte, gerne bei einem der folgenden Termine: | 13.03.2008 | UG Karlsruhe | Vortrag zum Thema "Qualitätsmanagement mit VSTS und TFS - für Entwickler!" | | 18.03.2008 | UG München | Vortrag zum Thema "Qualitätsmanagement mit VSTS und TFS - für Entwickler!" | | | | Dieser Vortrag ist auf einen späteren Termin verschoben. Neuer Termin wird noch bekanntgegeben | | 10.04.2008 | UG Braunschweig | Vortrag zum Thema "Qualitätsmanagement mit VSTS und TFS - für Entwickler!" | | 11.04.2008 | AfterLaunch Köln | Doppelsession zum Thema "Team Foundation Server in der Praxis" | | 24.04.2008 | TeamConf München | Vortrag zum Thema "Programmierung mit dem TFS SDK - Hierarchische Workitems im TFS 2008" | | 29.04.2008 | artiso Innovationsdialog | Innovationsdialog zum Thema "SOA in der Praxis" | | 30.04.2008 | UG Stuttgart | Vortrag zum Thema "Qualitätsmanagement mit VSTS und TFS - für Entwickler!" | | 27.05.2008 | artiso Innovationsdialog | Innovationsdialog zum Thema "Windows, Web, WCF - Oberflächentechnologien heute und in Zukunft" | | 26.06.2008 | artiso Innovationsdialog | Innovationsdialog zum Thema "Software-Architektur - das Fundament jeder Anwendung" |
Bei der Neuinstallation eines Entwicklungsrechners dauert es immer ewig, bis man sich die ganzen nützlichen Helferlein zusammengesucht hat, die man im Laufe der Zeit zu schätzen gelernt hat. Deshalb habe ich mir gedacht, ich schreibe mir mal eine Liste, die ich dann immer wieder ergänzen kann. Und vielleicht ist für den einen oder anderen da auch noch was interessantes dabei. Also so könnte ein Entwicklungsrechner aussehen: Betriebsystem / Standardanwendungen: - Windows Vista Ultimate
- Office 2007
- SQL-Server 2005 Express
- SQL-Server 2005 Management Studio
Entwicklungsumgebung: Tools Stand 12.03.2008 To be continued...
Die Frage "Wie lösche ich ein Team Projekt von meinem Team Foundation Server?" taucht immer wieder auf. Deshalb hier ein paar Infos dazu: 1.) Im Sourcecontrolexplorer kann man nur Dateien aus der Quellcodeverwaltung löschen 2.) Auch mit dem Commandozeilentool tf delete werden nur Quellcode-Dateien gelöscht. 3.) Zum Löschen eines kompletten Team-Projekts verwendet man das Commandozeilentool TfsDeleteProject /server:myteamserver “My Project“
Beim Betrieb des TFS gibt es hin und wieder Probleme mit dem lokalen Cahce. Vor allem wenn man mit mehreren Servern arbeitet, kommt es da immer wieder mal zu Problemen. Diese lassen sich durch Löschen des Caches lösen.Für mich selbst zur Erinnerung hier nochmals die Pfade: Unter XP: C:\Dokumente und Einstellungen\<User>\Lokale Einstellungen\Anwendungsdaten\Microsoft\Team Foundation\2.0\Cache Unter Vista: C:\Users\<User>\AppData\Local\Microsoft\Team Foundation\2.0\Cache
| |