Neues rund um's Thema .Net, Team Foundation Server und SCRUM RSS 2.0
# Thursday, August 14, 2008

Wer eine Visual Studio 2008 Standard Edition oder höher sein Eigen nennt, kann sich jetzt kostenlos einen Icon-Editor herunterladen.

image

Axialis Software - IconWorkshop™ Lite Download

Thursday, August 14, 2008 12:58:04 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tools

Seit kurzem ist der TFS Administration Guide zum Download bereitgestellt. Der Guid beschreibt viele Aspekte der Administration des TFS über Berechtigungsverwaltung, Anpassung von Workitemtypen und Process-Templates Backup und vieles mehr.

Download details: Administration Guide for Team Foundation Server

Thursday, August 14, 2008 12:48:10 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Tuesday, August 12, 2008

Über das Erscheinen des .Net Framework 3.5 SP1 haben ja bereits genügen Leute berichtet, da muss ich jetzt nicht noch einen draufsetzen. Wer möchte, kann sich den recht ausführlichen Blog-Beitrag von Dariusz anschauen.

Ich habe natürlich auch sofort das SP installiert. Die letzten 3 Std. habe ich damit zugebrach einen Fehler zu finden. Und was soll ich sagen, das Problem liegt am SP.

Folgende Situation. Ich arbeite an einem Projekt, das intensiv ASP.Net AJAX nutzt. Dort habe ich an verschiedenen Stellen die Übergabe von Daten aus dem CodeBehind an Javascript. Diese löse ich, indem ich im Code behind folgenden Code verwende:

ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
scriptManager.RegisterDataItem(this, "StringToTransfer");

In Javascript kann ich dann auf diese Werte zugreifen:

function EndRequestHandler(sender, args) {
    if (sender._dataItems != null) {
        if (sender._dataItems.__Page != null) {
            if (sender._dataItems.__Page == 'StringToTransfer') {
                fnShowSizedPopup('../../Web/Search/CopyProducts.aspx', 500, 400);
            }
        }
    }
}

Das hat bisher problemlos funktioniert. Nach der Installation des SP1 war allerdings sender._dataItems immer null. Nachdem ich das SP1 deinstalliert habe, funktioniert es wieder wunderbar. Na ich werde jetzt wohl erst mal ohne SP1 leben und mir bei Gelegenheit mal anschauen, wie ich das Problem umgehe. Oder hat vielleicht jemand eine Idee, woran das liegen könnte?

 

Nachtrag:

Dank Hannes habe ich eine Lösung gefunden. Im obigen Beispiel muss man sender._dataItems mit args.get_dataItems() ersetzen, dann klappt's auch mit dem SP1

Tuesday, August 12, 2008 5:38:28 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -

# Thursday, July 24, 2008

MSDN Webcasts

Zusammen mit Christian Binder habe ich nun einen MSDN Webcast aufgenommen der sich mit dem Thema UI Events und Record & Play für UI Testing beschäftigt. Dieser Webcast ist als Fortsetzung zum Thema UI Testing mit dem UI Automation Framework aufgebaut. Der Webcast selbst wird als Download ab dem 08.08.08 (cooles Datum) verfügbar sein. Den Demo_Code zum Webcast kann man ab sofort hier runterladen.

Kurz hier der Inhalt des Webcasts zusammengefasst.

Über das UI Automation Framework kann man Events aus einer Anwendung abfangen. Diese Events kann man zunächst am besten mit dem UISpy untersuchen. Nun kann man einen kleinen Recorder erstellen, der diese Events nutzt, um Benutzereingaben in einer Anwendung zu erkennen und automatisiert Code erstellt, der diese Benutzereingaben simuliert. Dieser Code kann nun in einem Unit-Test genutzt werden um automatisiert im Rahmen eines Testdurchlaufes die Benutzerinteraktion zu wiederholen. Der Clou dabei ist, dass sogar die Asserts für die erwarteten Ergebnisse automatisiert aufgezeichnet werden können.

 

Download Demo-Code 

Download Webcast

Thursday, July 24, 2008 10:18:50 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Qualitätsmanagement | UI Automation | Vorträge

Ich bin gerade dabei, für den Herbst meine Vorträge zu koordinieren. Ich werde von September bis Dezember viel unterwegs sein. Nun habe ich mal die ganzen aktuellen Vortragsthemen gesammelt, um hier einen kleinen Überblick zu geben. Wer Interesse hat, einen dieser Vorträge zu hören, ich werde in Kürze die Termine veröffentlichen, an denen ich die jeweiligen Vorträge halten werde. Möchte mich jemand für einen Vortrag buchen, einfach eine kurze Mail an mich. Für INETA User-Groups besteht auch die Möglichkeit, mich über das deutsche Speaker-Bureau zu buchen. Sollte sonst jemand Interesse an einem Vortrag zu den Themengebieten VSTS und Team Foundation Server, Software-Architektur, Entwicklungsprozesse oder Qualitätsmanagement haben, ich bin gerne bereit, mein Angebot entsprechend zu erweitern.

Qualitätsmanagement mit VSTS und TFS Qualität spielt bei Software eine immer stärkere Rolle. Gleichzeitig werden immer effizientere  Entwicklungsprozesse angestrebt. Dies lässt sich nur mit geeigneter Tool-Unterstützung und passenden Lösungen zu Prozessen und Software-Architektur erzielen. Mit Visual Studio Team System und Team Foundation Server stehen Tools zur Verfügung, die nicht nur eine entsprechende Testunterstützung bietet, sondern auch komplette Qualitätsprozesse unterstützt. Der Vortrag zeigt, wie Qualitätsprozesse durch TFS unterstützt werden. Anschließend werden verschiedene Testmethoden vorgestellt und einige Praxis-Tipp für deren Einsatz gegeben.
Agile Development Process - Ein Architekturbasierter Entwicklungsprozess Moderne Software-Anwendungen werden immer komplexer. Dadurch gewinnt auch die Software-Architektur immer mehr an Bedeutung. Wartbarkeit, Testbarkeit, Erweiterbarkeit und Teamentwicklung sind nur einige Aspekte, die eine gute Architektur unterstützen soll. Doch diese Aspekte können nicht durch ein einzelnes Architekturkonzept abgedeckt werden. Dieser Vortrag stellt verschiedene Architektur-Patterns wie Komponentenorientierung, Contract First Design, Service-Orientierung und UI Driven Development vor. Und vor allem wird gezeigt, wie diese Konzepte zu einem praxiserprobten Entwicklungsprozess verbunden werden können. 
Mehrschichtige Architekturen mit .Net Mehrschichtige Architekturen sind heute eigentlich oft Standard, vor allem bei verteilten Anwendungen. Allerdings wird diese Architektur oftmals zu sehr an technischen Belangen ausgerichtet. Die Session zeigt, wie man mehrschichtige Architekturen plant und diese flexibel und leitungsfähig aufbaut. Es werden verschiedene praxiserprobte Patterns vorgestellt.
Build-Management mit Team Foundation Server Mit Team Foundation Server steht ein leistungsfähiges integriertes Buildsystem zur Verfügung. Wie man dieses im Rahmen der Projekte nutzt und welche Vorteile sich daraus ergeen zeigt diese Session. Darüber hinaus wird der Einsatz verschiedener Buildsteps zum Deployment, Versionierung etc. vorgestellt.
Testing Practices mit VSTS und TFS VSTS bringt eine ganze Reihe von Testmethoden. Insbesondere die Edition für Tester bietet verschiedene Testarten. Die Implementierung der unterschiedlichen Testarten ist inzwischen hinlänglich beschrieben. Wie diese Tests in Real-World-Projekte eingesetzt werden, um tatsächlich die Qualität zu verbessern, beschreibt der Vortrag ebenso wie die Lösung von Real-World-Problemen. Dabei werden Themen wie die Bereitstellung von Testumgebungen, Testplanung und Testdurchführung sowie Testdokumentation ebenso beleuchtet wie die Frage, in welchen Fällen eine Edition für Tester notwendig ist, wo es mögliche Alternativen gibt und wie verschiedene Akteure innerhalb des Projekts wie z.B. Fachabteilungen eingebunden werden.
UI-Testing mit UI Automation Unit-Testing und Web-Testing verbreiten sich mit VSTS und anderen Testing-Tools immer mehr. Was diese Testmethoden jedoch nicht abdecken, ist quasi die „letzte Meile“, die Oberfläche der Anwendungen. Um diese in Tests einzubinden sind entweder teure Tools erforderlich, oder man nutzt das weitgehend unbekannte UI Automation Framework, das Bestandteil des .NET 3.0 Frameworks ist. Der Vortrag erläutert zunächst, wie man mit Hilfe des UI Automation Frameworks Windows- und WPF-Anwendungen kontrollieren kann. Anschließend werden diese Methoden in Unit-Tests integriert, um damit automatisierte UI-Tests aufzubauen. Als krönender Abschluss wird ein UI-Test-Recorder implementiert, mit dem UI-Aktionen aufgezeichnet und automatisiert in Unit-Test überführt werden können. Der Vortrag beschreibt neben den Möglichkeiten auch Grenzen des UI Automation Frameworks und mögliche Lösungen.
Closing Tool-Gaps in your Development Process with the TFS API The efficiency of development processes is based on a powerful and integrated tool support. But development processes are individual and no standard software can fulfill this integration 100%. With the Team Foundation Server API we have a powerful technology to extend the standard functionality for our needs. As an example in this session we will live code a tool to organize workitems in a hierarchical way and you will learn how this can improve your development process. Also you will get some additional visions about how you can use TFS Extensibility to make real cool things with your TFS.
Durchgängige Entwicklungsprozesse mit Visual Studio Team System Mit Visual Studio Team System bietet Microsoft eine leistungsfähige Entwicklungsplattform die den gesamten Lebenszyklus eines Entwicklungsprojektes vom Requirement Management bis zum Systembetrieb abbilden kann. Der Vorteil dabei ist, dass alle wichtigen Elemente des Prozesses in einem System integriert und so Verbindungen zwischen den einzelnen Prozessartefakten hergestellt werden können. Der Vortrag zeigt wie ein kompletter Entwicklungsprozess mit VSTS abgebildet werden kann. Als Beispiel wurde hierzu bewusst ein agiler Prozess gewählt der vor allem auch für kleinere Entwicklungsteams geeignet ist. Dabei werden die wesentlichen Funktionselemente von Visual Studio Team System und Team Foundation vorgestellt und deren Nutzung im Prozess gezeigt.
Reporting mit dem TFS
Der Team Foundation Server bietet umfangreiche Projekt-Kennzahlen. Neben Prozess- und Qualitätskennzahlen sowie verschiendenen Planungskenngrößen können auch weitere Daten wie z.B. zum Build-Prozess oder aus der Quellcode-Verwaltung ausgewertet werden. Hierbei stehen mit den SQL Server Reporting Services und Excel zwei leistungsfähige Tool zur Verfügung, diese Daten zu visualisieren. Der Vortrag zeigt anhand verschiedenen Beispielen auf, wie individuelle Auswertungen erstellt werden können und welche Möglichkeiten sich damit eröffnen.
Thursday, July 24, 2008 12:07:56 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Wednesday, July 23, 2008

James Manning beschreibt auf seinem Blog, wie man andere Tools für den Content diff / merge einbinden kann. Das ganze funktioniert auch in Abhängigkeit zur File-Extension, so dass man z.B. für Word-Dokumente einen Vergleich von Versionen direkt mit der TFS Quellcode-Verwaltung bewerkstelligen kann.

Ich habe das mal für Word-Dokumente getestet:

1.) Diff Doc runterladen und installieren

2.)  Einstellungen im VS unter Tools / Options / Source Control / Visual Studio Team Foundation Server und dann auf Configure User Tools klicken.

3.) Für die Endung .docx das Diff Doc konfigurieren

image

4.) Aus der Source Control einen Compare für ein Word-File aufrufen

5.) Geniesen

image

Weitere Infos hier:

James Manning's blog : diff/merge configuration in Team Foundation - common Command and Argument values

Wednesday, July 23, 2008 5:52:15 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Tuesday, July 22, 2008

Bin gerade auf ein Post von Martin Woodward gestossen. Das zeigt doch mal wieder, wie kreativ wir Entwickler sind (oder sollte ich eher sagen dass wir das Kind in uns ausleben).

Martin Woodward: Brian the Build Bunny

Tuesday, July 22, 2008 9:11:06 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Friday, July 18, 2008

Standardmäßig stellt Visual Studio die Prozessor-.Architektur für Anwendungen auf "Any CPU". Vor allem mit Bibliotheken gibt es damit allerdings öfters Probleme auf x64 Systemen, wenn die Bibliotheken unter 64Bit Betriebssystemen nicht sauber laufen. Eine Möglichkeit ist, die Anwendung explizit für x86 zu kompilieren, dann wird diese auch auf x64 Systemen im 32Bit Modus ausgeführt (siehe auch den Blogeintrag zur TFS-API unter x64).

image

Allerdings muss man hier mit ClickOnce ein wenig vorsichtig sein. Wenn man eine Anwendung zunächst mit "Any CPU" über ClickOnce verteilt hat und anschließend auf x86 umstellt, dann meldet ClickOnce

„The deployment identity does not match the subscription” bzw.
„Die Bereitstellungsidentität stimmt nicht mit dem Abonnement überein.“

Verschiedene Einträge im Internet verweisen zunächst darauf, dass das Zertifikat das Problem sein könnte. Da wir in der Zwischenzeit bei uns eine Domänen-Umstellung hatte, war diese Erklärung zunächst auch sehr plausibel. Dann stellte sich allerdings heraus, dass dieses Problem durch die Prozessor-Architektur verursacht wird. ClickOnce verwendet diese wohl als sog. "subscription identity" und behauptet einfach, dass es sich dabei um eine andere Anwendung handelt. Um das Problem zu umgehen sollte man also bereits beim ersten Demployment sehr gut überlegen, ob man die Anwendung nicht unter dem x86-Modus kompiliert.

Friday, July 18, 2008 1:57:09 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Know-How | Tipps und Tricks
# Thursday, July 17, 2008

Die TFS Power-Tools sind jetzt öffentlich verfügbar. Das Paket bringt einige Verbesserungen, die das Arbeiten mit dem TFS noch komfortabler machen. Die wichtigste Neuerung seht ihr hier, eine ausführlichere Beschreibung bei Brian Harry.

Neue Oberfläche um TFS Alerts zu aboniieren, die auch flexible Filterkriterien erlaubt.

image

bharry's WebLog : July '08 Power Tools are available!

Download July 08 TFS PowerTools

Thursday, July 17, 2008 9:38:13 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Monday, July 14, 2008

Am morgigen Dienstag findet um 18:00 das nächste Treffen der .net Developer-Group Ulm statt. Thema ist dann die Windows Presentation Foundation. Als Sprecher konnten wir Gerhard Jaros von der EPS Software GmbH gwinnen, der uns fundierte Einblicke in diese immer noch recht neue Technologie geben wird. Der Abstract zum Vortrag lautet:

Windows Presentation Foundation ... nach 20 Jahren hat Microsoft uns Entwicklern nun eine neue Alternative gegeben, mit Hilfe derer wir flexible User Interfaces erstellen können. Wir sind plötzlich nicht mehr gezwungen, einen Standard zu verwenden, der sich im Laufe der Zeit entwickelt hat. Buttons können bunt sein, Masken rund, transparent und farbenfroh. Wie aber geht das, wozu brauchen wir es und was bringt es uns?
Wir brauchen es. Dringender denn je. Wir wollen Interfaces schaffen, die keine weitere Erklärung mehr benötigen, weil der Anwender sie aufgrund des logischen Aufbaues selbst versteht. Diese Themen werden im Workshop behandelt:

  • Aufbau von WPF
  • Einfache WPF-Codebeispiele
  • Tipps & Tricks / best practices
  • Wann soll man WPF verwenden und wann nicht?

Noch dazu hat man bei dieser Gelegenheit auch Silverlight entwickelt, und so kann man erstmals mit ein und derselben Sprache sowohl für Windows-Applikation als auch für Web- Anwendungen Frontends erstellen. Es wird also in diesem Zusammenhang auch auf Silverlight verwiesen.

Weitere Informationen unter www.dotnet-ulm.de

Kopfleiste800pix

Monday, July 14, 2008 8:51:13 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge

Über die API mit der man selber Anwendungen für den Team Foundation Server schreiben kann, habe ich ja schon mehrfach berichtet. Nun soll das SDK verbessert werden, was offen gestanden, auch mal Zeit wird. Brian Harry hat ein erstes Sample bereits vorab veröffentlicht, das zeigt, wie man mit der API auf die Version Control zugreift.

bharry's WebLog : Working on TFS SDK improvements

Monday, July 14, 2008 8:14:25 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Saturday, July 12, 2008

Um TFS-Workitems massenhaft zu bearbeiten, z.B. um mehrere Workitems einem neuem Bearbeiter zuzuweisen, gibt es verschiedene Möglichkeiten. Die bekannteste davon ist sicher die Bearbeitung in Excel. Richard Hundhausen beschreibt noch einige weitere in einem Video

http://msdn.microsoft.com/en-us/vsts2008/cc563930.aspx

Saturday, July 12, 2008 11:15:33 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Thursday, July 10, 2008

Jeder kenn die Situation. Wenn man einen Fehler oder eine Änderung beschreiben will, tipp man sich einen Wolf. Viel schneller geht es mit einem Screenshot. Wer allerdings, z.B. beim Testen zig Screenshots an Workitems im Team Foundation Server anhängen möchte, der ist auch schnell genervt. Immer der gleiche Prozess. Schreenshot aufnehmen - In das Bildverarbeitungsprogramm wechseln - Screenshot einfügen - Screenshot speichern - Neues Workitem anlegen udn Felder ausfüllen - Attach File aufrufen - Datei mit Screenshot suchen - Fertig!

Glücklich derjenige, der den artiso Workitem Manger nutzt. Da geht das Ganze viel einfacher.

1.) Das Tray Icon Symbol mit der rechten Maustaste anklicken und auswählen ob man ein neues Workitem anlegen möchte oder an das gerade geöffnete den Screenshot anhängen möchte.

image

2.) Geünschten Bildbereich auswählen und Screenshot aufnehmen (Klick auf den Button im Zentrum des Fensters oder Enter drücken)

image

3.) Schon ist das Workitem inkl. Attachment angelegt.

image

Wer das Ganze mal testen möchte, kann sich hier eine Demo-Version des Workitem Managers herunterladen.

Thursday, July 10, 2008 8:33:24 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Tuesday, July 01, 2008

Die Workitems aus dem Team Foundation Server können direkt nach Excel geladen, dort bearbeitet und wieder auf den TFS gepublished werden. Das hierzu erforderliche Add-In wird bei der Installation des Team Explorers automatisch mitinstalliert und funktioniert sehr gut. Ein wenig nervig ist allerdings, wenn man zu einem Workitem weitere Informationen sehen oder eintragen möchte und die entsprechende Spalte nicht angezeigt wird. Dann muss man die Spalte erst zur Anzeige auswählen und die Liste aktualisieren. Darüber hinaus wird die Darstellung in Excel schnell unübersichtlich, wenn man viele Felder anzeigen lässt.

Wäre es nicht schön, wenn man auch in Excel den gewohnten Detail-Dialog zu einem Workitem hätte? Genau diese Funktion bietet das kostenfreie Tool Ekobit TeamCompanion for Excel. Das Workitem kann editiert und gespeichert werden. Die selbe Funktion gibt es übrigens auch für MS Project.

image

TeamCompanion for Excel

TeamCompanion for Project

Tuesday, July 01, 2008 7:57:09 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | Tools
# Thursday, June 26, 2008

Auf MSDN ist nun ein Artikel erschienen den ich zusammen mit Christian Binder für das dot.net Magazin geschrieben habe. Der Artikel beschreibt, wie man mit Hilfe der TFS-API eine hierarchische Organisation von Workitems selbst erstellt. Der Artikel ist auf MSDN frei zum Download.

http://download.microsoft.com/download/4/7/a/47aca5b1-ad88-4248-949b-d0333d238516/DM_0608_Schissler_Binder.pdf

Thursday, June 26, 2008 12:30:07 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Eigene Tutorials | Team System Server
# Monday, June 23, 2008

In der Versionsverwaltung des Team Foundation Servers spielt Branching eine wichtige Rolle. Dabei kann man ausgehend von einem bestehenden Branch eine "Kopie" erzeugen, dort Änderungen machen und diese dann in den Ursprungsbranch zurückmergen. Leider unterstützt die UI (Sorce Control Explorer im Visual Studio) nur das mergen in den Ursprungsbrachn aus dem heraus dieser Branch abgezweigt wurde. Merging in andere Branches bezeichnet man als "Baseless Merges". Wie das geht beschreibt der TFS-Guide in einem HowTo.

patterns & practices: Team Development with Visual Studio Team Foundation Server - Home

Monday, June 23, 2008 5:34:57 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server

Ein Dokument auf das ich immer verweise, wenn es um die Installation des Team Foundation Servers geht ist der TFS2008 Installation Guide. Deshalb hier mal der Link für alle, die einen TFS aufsetzen wollen. Leider funktioniert das mit CD rein und Setup aufrufen nicht. Aber wenn man die Installationsanweisung befolgt, geht's meisten problemlos. Ansonsten einfach mich anmailen, ich versuche dann gerne weiterzuhelfen.

Download details: Team Foundation Installation Guide

Monday, June 23, 2008 2:13:22 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Sunday, June 22, 2008

Für die Sorce Analysis, eine statische Codeanalyse gibt es jetzt von Eugene Zakhareyev eine Checkin Policy mit der beim Einchecken in die Teamfoundation Server Source control die Erfüllung der definierten Richtlinien abgeprüft werden kann.

Danke an Mark für den Tipp.

Team Foundation Server observations bucket: Source Analysis For C# Checkin Policy

Sunday, June 22, 2008 10:22:26 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Wednesday, June 18, 2008

In einem Projekt nutze ich Contains um eine Liste mit IDs zu übergeben, um dann Objekte per LINQtoSQL aus der Datenbank zu lesen. Das klappt wunderbar, solange die Liste mit den IDs nicht zu groß wird. Bei knapp über 1000 IDs hatte ich allerdings ca. 5 Sek. für die Ausführung was mir dann doch recht lange vorkam. Ich habe mir dann mal mit dem SQL Profiler angeschaut, was LINQ da eigentlich treibt und hatte dann schnell eine Vermutung. LINQtoSQL ruft an der stellen nämlich eine Stored Procedure auf und übergibt die IDs als Parameter dort hin, d.h. über 1000 Parameter deklarieren und zuweisen, das könnte dauern. Ich habe das Statement dann testhalber einfach umgebaut, dass ich im SELECT direkt die IDs über ein IN(...) angab und siehe da, diese Abfrage war nun um Dimensionen schneller.

Merke: Über Contains keine große Anzahl von Parametern übergeben, statt dessen lieber die Abfrage selber mit einem IN aufbauen.

Wednesday, June 18, 2008 5:47:17 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
LINQ
# Monday, June 09, 2008

Zum Aufzeichnen von WebTests mit VSTS wird ein Web Test Recorder Toolbar im IE integriert.

image 

Unter meinem Vista 64 Bit hatte ich allerdings das Problem, dass der Toolbar dort partou nicht angezeigt wurde. Nach einigem Suchen habe ich dann die Lösung gefunden:

VSTS 2008 : Vista (64 bit) : Recorder bar does not appear when recording a new webtest

Fix:  Vista caches the list of explorer bars you have available and the recorder bar was not included in your list.  The fix is to force Windows to rebuild that cache.  To do this, first make sure you have all Internet Explorer instances shut down, then open the 32 bit registry editor and delete the following keys:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component Categories\{00021493-0000-0000-C000-000000000046}
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component Categories\{00021494-0000-0000-C000-000000000046}

[Note: by default, the 32 bit registry editor is located in %WINDIR%\SysWow64\RegEdt32.exe]

The next time you boot Internet Explorer, your explorer bar cache will be rebuilt and the recorder bar should be available.

Nachdem ich diese beiden Registry-Keys gelöscht habe, wurde der Toolbar angezeigt.

Weitere Infos und tipps bei Probleme mit dem Web Recoder Toolbar finden sich unter Michael Taute's Blog : Diagnosing and fixing Web Test recorder bar issues.

Monday, June 09, 2008 9:57:40 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Qualitätsmanagement | VS 2008
# Thursday, May 29, 2008

Es gibt eine ganz Reihe von Whitepapers, die verschiedene Practices aus dem Bereich ALM und deren Umsetzung mit VSTS beschreiben.

  • Communicate and Collaborate
  • Drive Predictability
  • Ensure Quality Early and Often
  • Integrate Work Frequently
  • Making Real-Time Decisions
  • Managing Team Workflow
  • Using Familiar Tools

Visual Studio Team System 2008 Capabilities White Papers

Thursday, May 29, 2008 11:54:23 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Wednesday, May 28, 2008

Heute hatten wir bei der UG Ulm Christian Binder als Sprecher zu Gast. Christian gewährte uns einen kleinen Blick in die Zukunft der Software-Entwicklung. Er stellte einige der neuen Funktionen aus den Bereichen Project Management, Testing, Development und Architecture. Obwohl für die Demo nur das aktuelle CTP zur Verfügung stand, wurde ersichtlich, dass mit Rosario viele neue Funktionen kommen, auf die Entwickler, Tester, Architekten und Projektleiter schon lange gewartet haben. Einige der Highlights waren:

  • Lightweight Projektmanagement und Kapazitätsplanung
  • Neue Verknüpfungen und hierarchische Workitems
  • Build definition über Workflow Foundation
  • Planung und Verwaltung von manuellen Tests
  • Aufzeichnung eines Web UI-Tests und Umwandlung in einen coded Test
  • Historical Debugging
  • Sequential Diagramms
  • und vieles mehr

Danke an Chris für den tollen Vortrag.

P1010173 P1010168

Wednesday, May 28, 2008 11:51:39 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Monday, May 19, 2008

Am 28.05.2008 findet um 18:00 Uhr das nächste Treffen der .net DeveloperGroup Ulm statt. Diesesmal haben wir Christian Binder, Microsoft Evangelist zu Gast, der uns einen Blick in die Zukunft gewährt. Er wird in seinem Vortrag Neuerungen von Rosario, dem Nachfolger von Visual Studio 2008 vorstellen. Rosario bring viele neue Funktionen, die für alle Entwickler interessant sein dürften. Wer also wissen will, was auf uns zukommt, der sollte sich diese Veranstaltung nicht entgehen lassen.

Nähere Informationen gibt es unter http://www.dotnet-ulm.de/Treffen.aspx

Monday, May 19, 2008 10:41:25 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Friday, May 16, 2008

Für eine ASP.Net Anwendung möchte ich gerne die Versionen meiner Anwendung und aller referenzierten Assemblies ausgeben. Bei Winforms kann ich für die Anwendung mit Application.ProductVersion die Version meiner Anwendung abfragen, die ich in der AssemblyInfo.cs eingestellt habe. Das geht bei ASP.Net nicht. Hier die Lösung, wie man das im Web macht, gleich mit Sortierung:

Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

if (assembly != null)
{
    lblProductVersion.Text = assembly.GetName().Name + " - " + assembly.GetName().Version.ToString();

    var referenceAssemblies = from a in assembly.GetReferencedAssemblies()
            orderby a.Name 
            select a;
    foreach (AssemblyName referenceAssemblyName in referenceAssemblies)
    {
        lblProductVersion.Text += "<br>" + referenceAssemblyName.Name + " - " + referenceAssemblyName.Version;
    }
}

 

Die Ausgabe sieht dann ungefähr so aus:

MyApplication - 1.0.3058.30144
AjaxControlToolkit - 1.0.10618.0
ArtisoAssertLib - 1.0.0.0
CommonComponents - 1.0.3056.28557
CommonContracts - 1.0.3056.28555
CrystalDecisions.CrystalReports.Engine - 11.5.3700.0
CrystalDecisions.ReportSource - 11.5.3700.0
CrystalDecisions.Shared - 11.5.3700.0
cTextBox - 1.0.3058.27781
DataContracts - 1.0.0.0
Infragistics35.WebUI.Misc.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.Shared.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.UltraWebChart.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.UltraWebGrid.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.UltraWebNavigator.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.UltraWebTab.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.UltraWebToolbar.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.WebDataInput.v8.1 - 8.1.20081.1000
Infragistics35.WebUI.WebDateChooser.v8.1 - 8.1.20081.1000
ListValuesComponents - 1.0.3057.30147
ListValuesContracts - 1.0.3057.30146
LoginManagerComponents - 1.0.3033.29632
LoginManagerContracts - 1.0.0.0
mscorlib - 2.0.0.0
NavigationComponents - 1.0.3058.27781
NavigationContracts - 1.0.3058.27780
PCMAreaComponents - 1.0.3058.27781
PCMAreaContracts - 1.0.3058.27779
ProductsAreaComponents - 1.0.3058.27779
ProjectsAreaComponents - 1.0.3058.27780
ProjectsAreaContracts - 1.0.3058.27778
ReportingComponents - 1.0.3058.27781
ReportingContracts - 1.0.3058.27780
SearchComponents - 1.0.3058.27779
SearchContracts - 1.0.3058.27779
System - 2.0.0.0
System.Configuration - 2.0.0.0
System.Core - 3.5.0.0
System.Data - 2.0.0.0
System.Data.DataSetExtensions - 3.5.0.0
System.Data.Linq - 3.5.0.0
System.Drawing - 2.0.0.0
System.Web - 2.0.0.0
System.Web.Extensions - 3.5.0.0
System.Web.Services - 2.0.0.0
System.Xml - 2.0.0.0
TaskListComponent - 1.0.3056.28564
TaskListContract - 1.0.3056.28560
TypesComponents - 1.0.3057.30147
TypesContracts - 1.0.3057.30147
UserManagementContracts - 1.0.0.0
Validators - 1.0.0.0
wwDataBinder - 1.0.2908.21817

Friday, May 16, 2008 5:50:11 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
ASP.Net | Tipps und Tricks

Für manuelle Tests muss man einen definierten Ausgangszustand schaffen um diese sinnvoll durchführen zu können. Dieser Ausgangszustand bezieht sich meist auf eine Datenbank. Um diesen Vorgang nun zu vereinfachen haben wir ein kleines Tool erstellt. Damit können Snapshots von Datenbanken erstellt und wiederhergestellt werden.

image

Das Tool erstellt dazu einfach ein Backup der Datenbank und kann dieses Backup auch wiederherstellen. Das ist sicher nicht extrem elegant, aber sehr einfach und praktikabel. Damit das Tool funktioniert, muss man zunächst ein parr Einstellungen in der config vornehmen:

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <configuration>
   3:     <configSections>
   4:         <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089"
>
   5:             <section name="SQLSnapshotTool.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
   6:         </sectionGroup>
   7:     </configSections>
   8:     <applicationSettings>
   9:         <SQLSnapshotTool.Properties.Settings>
  10:             <setting name="Password" serializeAs="String">
  11:                 <value />
  12:             </setting>
  13:             <setting name="IntegratedSecurity" serializeAs="String">
  14:                 <value>True</value>
  15:             </setting>
  16:             <setting name="Database" serializeAs="String">
  17:                 <value>Zeiterfassung</value>
  18:             </setting>
  19:             <setting name="User" serializeAs="String">
  20:                 <value />
  21:             </setting>
  22:             <setting name="LocalBackupPath" serializeAs="String">
  23:                 <value>C:\Temp\DBSnapshots</value>
  24:             </setting>
  25:             <setting name="Server" serializeAs="String">
  26:                 <value>MyServer</value>
  27:             </setting>
  28:             <setting name="UNCBackupPath" serializeAs="String">
  29:                 <value>\\MyServer\DBSnapshots</value>
  30:             </setting>
  31:         </SQLSnapshotTool.Properties.Settings>
  32:     </applicationSettings>
  33: </configuration>

 

Die wichtigsten Einstellungen hier kurz beschrieben:

Zeile 11 : Das Kennwort für den Datenbankzugriff (kann leer sein, wenn integrated Security verwendet wird)
Zeile 14 : Angabe ob integrated Security verwendt werden soll.
Zeile 17 : Name der Datenbank
Zeile 20 : Name des Users (kann leer sein, wenn integrated Security verwendet wird)
Zeile 23 : Der lokale Pfad auf dem DB-Server in den die Snapshots geschrieben werden sollen
Zeile 26 : Der Name des DB-Servers
Zeile 29 : Der UNC-Pfad über den auf das Sbnapshot-Verzeichnis auf dem DB-Server vom Client aus zugegriffen werden kann.

Die Bedienung ist denkbar einfach. Man gibt einfach den Namen des gewünschten Snapshots an und klickt auf "Create Snapshot". Damit wird eine Backup-Datei in das Snapshot-Verzeichnis auf dem Server geschrieben. In der Liste sieht man alle BAK-Dateien aus dem Verzeichnis und kann eine auswählen um diese dann wiederherzustellen. Das ganze ist so einfach, dass sogar Anwender damit klarkommen.

Eine Einschränkung gibt es, das Tool läuft nur mit dem SQL-Server.

Wenn jemand das Tool nützlich findet, würde ich mich über ein kurzes Feedback freuen.

Friday, May 16, 2008 4:12:05 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tools

Technologie kann auch Spaß machen und solche Demos würde ich mir gerne öfter wünschen. Macht weiter so Jungs!

Unbedingt anschauen!

Dariusz quatscht : Yet Another Windows Live Demo Video

Friday, May 16, 2008 3:50:15 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -

# Thursday, May 15, 2008

Durch unseren gestrigen Vortrag zu Rosario bin ich auf einen Punkt aufmerksam geworden, der mir zum Thema UI Automation so noch gar nicht bewusst war. Man kann mit UI-Automation auch Web-Anwendungen steuern. Das ist eine echt coole Geschichte.

Am einfachsten verwendet man den UI-Spy um sich mal anzusehen, was da geht. Also IE auf und mal reinschauen. UI-Spy mit "Run as Administrator" starten, damit wir die Pattern anwenden können. Dann zunächst mal den Hovering mode aktivieren:

image

Nun kann man auf der Web-Seite mit der Maus auf einen Link fahren und die CTRL-Taste drücken. Es dauert einen kurzen Moment, dann wir der Link mit einem roten Kästchen umrahmt und UI Spy zeigt das entsprechende Objekt im Baum an.

image

image

Es empfiehlt sich nun, den Hovering mode wieder abzuschalten, da sonst jedes weiteres Drücken der CTRL-Taste den Scope ändern würde. Nun können wir uns die verfügbaren Patterns für das Element anschauen. Dazu einfach mit der rechten Maustaste auf den Hyperlink und dann "Control Patterns auswählen". Uns interessiert beim Hyperlink das Invoke-Pattern das Aktionen wie Click etc. ausführt.

image

Wenn man nun auf "Call Method" klicht, wird der Hyperlink aufgerufen, d.h. der IE verhält sich, wie wenn man den Hyperlink mit der Maus anklicken würde, d.h. er ruft die entsprechende Seite auf. Nun wollen wir uns noch ansehen, wie man auch Inhalte in Textboxen und andere Controls einfügen kann. Hierzu habe ich ein Formular im IE geöffnet und wieder mit dem UISpy das Element identifiziert. Nun kann man das ValuePlattern verwenden um den Value der Textbox zu editieren.

image

image

Mit diesem Wissen und dem Basiswissen aus meinem Webcast zur Erstellung von Unit-Test mit dem UI Automation Framework können wir nun Unit-Tests schreiben, die Web-Oberflächen automatisiert testen.

Bleibt die Frage wo ist der Unterschied zu den Web-Tests die mit VSTS Edition for Tester erstellt werden können? Der wichtigste Unterschied ist, dass die Web-Test sog. Wired-Level-Tests durchführen. D.h. diese Tests zeichnen die HTTP-Kommunikation zwischen Client und Server auf und können diese dann abspielen und in den HTTP-Paketen bestimmte Informationen validieren. Verwendet man nun aber z.B. AJAX, dann findet dort auch eine HTTP-Kommunikation statt, z.B. beim Aufruf eines Web-Services und der Web-Service liefert auch Daten zurück, ob die im Client dann aber per Java-Script richtig verarbeitet werden bleibt fraglich. Somit testen Web-Tests den Server, nicht den Client. Mit der UI-Automation werden die Tests direkt mit den Elementen der Clients ausgeführt, d.h. ich kann z.B. auch prüfen, ob die Daten, die ein Webservice zurückliefert an der Oberfläche korrekt dargestellt werden.

Der zweite Unterschied liegt einfach darin, dass das UI Automation Framework Bestandteil des .Net Frameworks 3.0 und somit kostenlos ist wohingegen für die Erstellung von Web-Tests ein VSTS for Tester notwendig ist.

Nachtrag:

Einen Punkt muss ich zu dem oben geschriebenen noch klarstellen. Das Problem für UI-Tests mit dieser Methode ist, dass die Web-Controls keine AutomationID veröffentlichen. Somit gibt es keine Möglichkeit diese entsprechend aus dem Automatisierungscode anzusprechen. Die Runtime-ID ist in diesem Fall leider nicht wirklich brauchbar. Ich hatte gehofft, dass der IE8 hier eine Verbesserung bringt, was aber leider nicht der Fall ist. Somit ist dies momentan leider nur ein schöner Ansatz, der in der Realität nicht recht funktioniert.

Thursday, May 15, 2008 8:11:00 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
UI Automation
# Sunday, May 11, 2008

Ich wollte aus Excel auf einen Webservice zugreifen. Also kurz gegoogelt (oder gelived ;-)), eigentlich gar nicht so schwer...

Aber wie so oft liegt der Teufel im Detail und es waren doch ein paar Kleinigkeiten zu beachten, deshalb hier nochmals der komplette Lösungsweg:

Zunächst habe ich einen WebService erstellt, zum Testen was ganz triviales, eigentlich das Webservice Template nur noch um den Parameter Name erweitert:

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () 
    {
    }

    [WebMethod]
    public string HelloWorld(string Name) {
        return "Hello World " + Name;
    }    
}

 

Die URL um auf den Webservice mit ausgefülltem Parameter zuzugreifen lautet http://localhost:49408/WebSite2/Service.asmx/HelloWorld?Name=Test, jedoch funktioniert das standardmäßig noch nicht. Wir müssen erst noch in der web.config folgenden Eintrag hinzufügen:

<webServices>
    <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
    </protocols>
</webServices>

Nun bekommen wir mit diesem Aufruf den XML-Response des Webservices direkt zurückgegeben. Nun wollen wir den Webservice aus VBA aufrufen.

Sub CallWebService()
    Dim MSXML As New MSXML2.DOMDocument
    Dim strAnfrage As String
    strAnfrage = "http://localhost:49408/WebSite2/Service.asmx/HelloWorld?Name=Test"
    With MSXML
        .async = False
        .preserveWhiteSpace = False
        .validateOnParse = True
        .resolveExternals = False
    End With

    If MSXML.Load(strAnfrage) = True Then
        Response = MSXML.DocumentElement.Text
    Else
        Response = "Fehler"
    End If
End Sub
 
Damit das funktioniert müssen wir noch die Bibliothek "Microsoft XML, vx.0" einfügen. Wir werten im Moment das XML-Dokument sehr einfach aus, da wir davon ausgehen, dass der Rückgabewert einfach als Textim XML-Dokument zurückgegeben wird. Damit können wir einfach mit MSXML.DocumentElement.Text den gewünschten Wert auslesen. Natürlich können auf diese Weise auch komplexer Rückgabewerte ausgewertet werden, aber das wollen wir hier nicht näher beleuchten.
Sunday, May 11, 2008 9:54:13 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Excel | Tipps und Tricks
# Thursday, May 08, 2008

Verwendet man ein DataSet mit DateTime-Werten in unterschiedlichen Zeitzonen, wird man zu seiner Überraschung feststellen, dass das DataSet eine Umrechnung der Zeiten vornimmt. Bei uns war das Problem konkret, dass ein DataSet per WCF zu einem Service übertragen wurde. Der Service war aber in einer anderen Zeitzone als der Client. In einem DateTime-Feld wurde ein Datumswert abgelegt, also z.B. 08.05.2008. Die automtische Umrechnung hat davon jedoch eine Stunde abgezogen, so dass am Service 07.05.2008 23:00 ankam. Damit war das Datum immer um einen Tag verschoben.

Das Problem kann aber behoben werden, indem man auf dem Client und auf dem Service den DateTime-Wert vor bzw. nach der Serialisierung konvertiert.

Auf dem Client sieht das dann z.B. so aus:

   1: foreach (DataSet1.DataTable1Row dr in ds.DataTable1.Rows)
   2: {
   3:     dr.Date = dr.Date.ToLocalTime();
   4: }

Und dann auf dem Service das Gegenstück:

   1: foreach (DataSet1.DataTable1Row dr in ds.DataTable1.Rows)
   2: {
   3:     dr.Date = dr.Date.ToUniversalTime();
   4: }

Damit kommt genau der Wert, der im Client eingetragen wurde auch im Service an. Zwar gibt es wohl auch eine Möglichkeit, die Datumskonvertierung zu unterdrücken, aber das hat bei mir nicht sauber funktioniert. Wenn also jemand eine elegantere Lösung kenn, nur her damit ;-)

Update:

Wir habe doch noch eine elegantere Lösung gefunden. Auf dem DataSet kann man auf der DateTime Column das Property DateTimeMode auf Unspecified umstellen. Dann wird die Zeitzonen-Konvertierung nicht durchgeführt. Danke an Luke für den Tipp.

image

Thursday, May 08, 2008 8:36:13 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks
# Wednesday, May 07, 2008

Microsoft ist ja ein Meister darin, das Thema Lizenzierung zu einer WIssenschaft zu machen und inzwischen gibt es wohl Leute, die ihr Geld damit verdienen, Firmen durch den Lizenz-Dschungel von MS zu führen. Für alle, die Fragen bezgl. der Lizenzierung von Visual Studio Team System 2008 haben, sei dieses Dokument empfohlen. Fragen dazu aber bitte nicht an mich ;-)

Download details: Visual Studio Team System Licensing

Wednesday, May 07, 2008 5:56:09 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Monday, May 05, 2008

Alex beschreibt in seinem Artiekel eine sehr elegante Möglichkeit, wie man vermeiden kann, dass bei Continous Integration Checkins durch den Build einen erneuten Build auslösen.

Team Foundation Server 2008 mit AssemblyVersion Task - rekursive Builds vermeiden

Monday, May 05, 2008 8:23:37 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Thursday, May 01, 2008

Die Videos zu den Sessions vom Launch-Event in Frankfurt im Februar sind jetzt für alle frei verfügbar.

Ich hatte ja die Möglichkeit, am Ende einer Session von Christian Binder kurz vorzustellen, wie wir den TFS in unserem Entwicklungsprozess nutzen.

Das Video kann man hier abrufen. Mein Einsatz beginnt dann ab der Minute 54. Mein Video, das ich in dem Vortrag nutze, kann hier heruntergeladen werden.
War echt ne coole Sache vor mehr als 500 Leuten zu reden.

image

Visual Studio 2008 Team System 2008 - {Überblick}

Thursday, May 01, 2008 2:48:48 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server | Vorträge

Welche Funktion finde ich in welcher Edition von Visual Studio? Wie unterscheiden sich VS Standard und VS Professional? Wann brauche ich eine Team Edition?

Fragen wie diese beantwortet die Visual Studio Product Comparison.

Visual Studio 2008 Product Comparison

Thursday, May 01, 2008 1:04:12 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
VS 2008

Beim Checkin in den TFS können beim Checkin Workitems verknüpft werden. Hier können standardäßig zwei verschiedene Chck-In Actions ausgewählt werden. Associate verknüpft den Checkin nur mit dem Workitem währen Resolve das Workitem auf geschlossen setzt. Vor allem wenn man Workuiems mit größerem Umfang plant, kann es vorkommen, dass man als Default-Einstellung Associate haben möchte statt Resolve. Leider funktioniert das nicht so. Einen Workaround stellt Martin Woodward vor. Mit seiner Methode wird Resolved einfach aus den Check-In Actions entfernt und damit Associate automatisch als Default-Wert verwendet. Der Nachteil bei dieser Lösung: Man muss die Workitems außerhalb des Checkin-Prozesses auf Resolved setzen. Das ist nicht besonders schön, aber momentan leider die einzige Möglichkeit das Standard-Verhalten zu ändern.

A bug with the Resolve and Associate actions displayed.  Resolve is the default. 

Martin Woodward: TFS Top Tip #3: Removing the Resolve Check-In Action from a Work Item

Thursday, May 01, 2008 12:31:52 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Wednesday, April 30, 2008

Oft hat man einen bestimmten Ordner, auf den man of zugreifen muss. Hier ist mir nun ein Feature von Vista aufgefallen (gab es wohl auch schon in früheren Windows-Versionen, aber da habe ich das gar nicht bemerkt). Man kann Toolbars einrichten und diese einfach oben, rechts oder links am Desktop andocken. Mit der AutoHide-Funktion benötigen die Toolbars auch keinen unnötigen Platz. Ein nettes Feature, das ich bei meinen Vorträgen gut gebrauchen kann.

Das Video zeigt, wie's gemacht wird.

Wednesday, April 30, 2008 8:58:27 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks
# Tuesday, April 29, 2008

Auch wenn das unter dem Gesichtspunkt Traceability äußerst problematisch ist, gibt es im TFS 2008 die Möglichkeit Workitems zu löschen - ein Feature das oftmals gefordert wurde. Dazu benötigt man die TFS Powertools. Danach kann man mit folgendem Befehl ein Workitem löschen:

tfpt destroywi /server:sartfsx01 /workitemID:8719

Tuesday, April 29, 2008 10:27:44 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -
Team System Server

In Kürze wird wohl das SP1 zum Team Foundation Server als Beta veröffentlich. Brian Harry beschreibt schon mal ein paar Fetures auf di wir uns freuen dürfen.

bharry's WebLog : Team Foundation Server 2008 SP1 Preview

Tuesday, April 29, 2008 12:37:00 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Friday, April 25, 2008

Ich war in den letzten Tagen auf der TeamConf 2008 in München. Es war sehr schön zu sehen, dass Team System inzwischen recht gut etabliert. Es gab auf dieser Konferenz eine ganze Reihe von Praxisberichten die darstellten, welche Erfahrungen Anwender bereits mit Team System gesammelt haben. Und es war sehr interessant, mit vielen Leuten aus dem ALM-Umfeld zu diskutieren. Ein persönliches Highlight war für mich, ein Treffen mit Sam Guckenheimer, Group Product Planner bei Microsoft, der sich unseren WorkitemManager angesehen hat und mit dem ich einige Ideen diskutieren konnte.

P1010021

Ich habe auf der TeamConf einen Vortrag zu Programmierung mit dem TFS API am Beispiel einer hierarchsichen Workitem-Organisation gehalten.

Friday, April 25, 2008 12:57:49 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [4] -
Vorträge

Mit dem Team Foundation Server Power Tools March 2008 gibt es ein cooles Features, Workitem Templates. Haben Sie sich nicht schon mal geärgert, dass Sie beim Anlegen eines Bugs immer den Namen des gleichen Entwicklers eingeben müssen oder dass sie immer die aktuelle Iteration auswählen müssen? Genau hier helfen Workitem-Templates weiter. Und das geht so:

Nach der Installation der Power Tools gibt es im Team Explorer eine neuen Knoten "Work Item Templates". Hier können neue Templates angelegt werden.

image

Für jeden Workitem-Typ können beliebig viele Templates angelegt werden. Hier können nun die gewünschten Felder vorbelegt werden.

image

Auf Basis dieses Templates kann nun ein neues Workitem erstellt werden (Rechter Mausklick auf das Template) oder auf ein bestehendes Template angewandt werden.

image

Weitere Informationen finden sich in der

oder auf dem Blog von Brian Harry

Friday, April 25, 2008 12:34:36 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Tuesday, April 22, 2008

MSDN Webcasts

Zusammen mit Christian Binder habe ich einen MSDN Webcast zum Thema UI-Testing mit dem UI Automation Framework erstellt. Der Webcast zeigt, wie man mit dem UI Automation Framework Anwendungen aus einer anderen Anwendung heraus steuern kann. Diese Methode eignet sich sehr gut um z.B. Unit-Tests zu erstellen, die die Oberfläche einer Anwendung testen. Damit lassen sich Oberflächentests sehr schön automatisieren. Und das beste ist, dass UI Automation Framework ist Bestandteil des .Net Framework 3.0 und damit kostenlos.

Download des Webcasts

Tuesday, April 22, 2008 11:28:00 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Eigene Tutorials | News | UI Automation
# Monday, April 21, 2008

Gerade hatte ich eine vermeintlich Fragestellung. ich wollte einfach nur wissen, wieviel Platz auf einem Laufwerk im Netzwerk noch frei ist. Das hat sich aber als problematischer herausgestellt als gedacht, da ich nur eine Freigabe auf dem Laufwerk hatte. Das ist wohl gar nicht so einfach, damit herauszufinden, wieviel Platz auf der entsprechenden Platte noch frei ist. Erst über die gute alte Command-Shell und den dir-Befehl hat das geklappt. Damit wird der freie Plattenplatz problemlos angezeigt.

Na ja, es scheint manchmal wirklich so, dass früher einiges besser war ;-)

image

Monday, April 21, 2008 9:45:50 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [2] -
Tipps und Tricks
# Thursday, April 17, 2008

Möchte man aus Anwendungen wie z.B. Word auf Dokumente auf einem SharePoint Portal zugreifen. kann man dies sowohl über einen UNC-Pfad (\\ServerName\sites\SiteName) oder über eine URL (http://ServerName/sites/SiteName) zugrifen. Nöch schöner wäre allerdings, wenn man eine direkte Verknüpfung hätte, die auch im Browse-Fenster der Anwendungen genutzt werden kann. Wie man eine solche Verknüpfung einrichtet, zeige ich im folgenden Video:

Thursday, April 17, 2008 10:48:02 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks
# Monday, April 14, 2008

Jens Häupel beschreibt in einem Blog-Eintrag, wie man per ClickOnce Setup DateiTypen mit seiner Anwendung verknüpfen kann. Klasse, dass das nun endlich funktioniert. Danke für den Artikel Jens.

File Extension per ClickOnce mit Anwendung assoziieren

Monday, April 14, 2008 12:16:09 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tipps und Tricks
# Sunday, April 13, 2008

Die PowerCommands for Visual Studio 2008 sind jetzt in der Version 1.1 veröffentlicht worden und bieten in dieser neuen Version einige neue Funktionen. Bei den PowertCommends for Visual Studio 2008 handelt es sich um eine kostenlose Sammlung von nützlichen Erweiterungen für die Visual Studio IDE. Einen Überblick über die Funktionen bietet dieses Dokument. Da hat es viele Sachen dabei, die sicher schon jeder beim Arbeiten mit Visual Studio 2008 vermisst hat.

PowerCommands for Visual Studio 2008 - Home

Sunday, April 13, 2008 2:48:05 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Tools | VS 2008

Der AfterLaunch Event in Köln war eine sehr gute Veranstaltung und sehr professionell organisiert. Für die lächerliche Teilnahmegebühr von nur 8,-- € haben die Teilnehmer hochkarätige Vorträge rund um die 2008er Launch-Produkte von Microsoft erhalten. Großer Wert wurde dabei auf den Praxisbezug der Vorträge gelegt. Auch ich war dabei und hatte zwei Sessions zum Einsatz des Team Foundation Servers 2008 in der Praxis. Leider hatte ich etwas mit dem Beamer zu kämpfen, ich hoffe aber dass die Teilnehmer dennoch einige Tipps zum Einsatz des TFS mitnehmen konnte und ich den einen oder anderen animieren konnte dieses Tool nun doch einmal zu installieren und sich näher damit zu beschäftigen.

P1010005 P1010011

Sunday, April 13, 2008 1:22:50 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -
Vorträge
# Saturday, April 12, 2008

.NET Developer Group Braunschweig Logo

Am Donnerstag, 10.04 war ich zu Gast bei der Usergroup Braunschweig und habe dort den Vortrag zum Thema Qualitätsmanagement mit Visual Studio Team System 2008 und Team Foundation Server gehalten. Der Vortrag war für mich sehr interessant, da es eine rege Beteiligung und viele Fragen durch die Teilnehmer gab.

Vielen Dank an Lars für die Einladung.

Folien zum Vortrag

Beispielcode zum Vortrag

Saturday, April 12, 2008 12:10:04 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Vorträge
# Wednesday, April 09, 2008

Wenn man aus Visual Studio einen Web-Test startet und diese Meldung bekommt, muss man die Bowser-Extensions im IE enablen.

 image

Hierzu im IE unter Internetoptionen auf dem Reiter Advanced die Option "Enable third-party browser extensions" aktivieren. Dann kann der Web Test Recorder im IE ausgeführt werden.

image

Wednesday, April 09, 2008 10:41:35 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -
VS 2008

image

Ich halte momentan eine Vorleseung bei der Berufsakademie Heidenheim mit dem Titel "Implementierung verteilter Anwendungen auf Basis von Microsoft .NET". Im Zentrum dabei steht natürlich WCF. Hier nun die Folien und das WCF-Demo vom ersten Tag. Die Demos der beiden folgenden Termine werde ich hier auch noch veröffentlichen.

Folien (Powerpoint 2007)

Folien (PDF)
Code

Wednesday, April 09, 2008 2:29:33 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Eigene Tutorials
# Tuesday, April 08, 2008

Habe gerade die neue Infragistics Netadvantage Suite 2008.1 intalliert. Bei der Installation der ASP-Komponenten muss man allerdings eine kleine Einstellung machen, sonst erhält mein einen "Fatal error".

Erst wenn man in den Windows Features die IIS6 Management Compatibility aktiviert hat, klappt die Installation

image

Tuesday, April 08, 2008 11:30:23 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Komponenten und Bibliotheken

Zusammen mit meinem Kollegen Mark werde ich am 22.04.08 bei der UG München den Vortrag zum Thema Qualitätsmanagement mit VSTS nachholen.

Thema des Vortrags:

Dass Qualitätsmanagement heute ein fester Bestandteil eines modernen Entwicklungsprozesses sein sollte, ist inzwischen - zumindest in der Theorie – keine Frage mehr. Die Wirklichkeit ist aber leider immer noch sehr häufig eine andere. Woran liegt das? Terminstress, sich ändernde Anforderungen im Projektverlauf und in vielen Fällen ein erheblicher bürokratischer Overhead bei der Ausführung von QM vereitelt erfolgreich, die definierten Maßnahmen auch zu leben.
Die Test-Tools von Visual Studio hat wohl schon fast jeder einmal gesehen, evtl. auch genutzt. Entscheidend beim Einsatz dieser Tools ist aber die Integration in den Gesamtprozess. So besteht ein erfolgreiches QM nicht nur aus Tests, sondern auch Requirementmanagement, Releasemanagement, Testability und andere Aspekte spielen hierbei eine wichtige Rolle. Die Kunst besteht darin, diese verschiedenen Aspekte über den Gesamtprozess miteinander zu verbinden. Wie dieses Ziel mit VSTS und TFS erreicht werden kann, zeigt der Vortrag.
Die ideale Zielgruppe für diesen Vortrag sind: Entwickler, Qualitätsmanager, Testexperten und IT-Entscheider mit der Bereitschaft, sich auch das ein oder andere Prozessdetail live anzusehen.

 

Weitere Details finden sich hier

Tuesday, April 08, 2008 6:00:21 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
News | Team System Server | VS 2008

Mit der Versionsverwaltung im Team Foundation Server kann man ja bekannter maßen nicht nur Code verwalten, sondern auch andere Dateien wie z.B. SQL-Skripte, Dokumentationen etc. Hierzu ist es sinnvoll, entsprechende Ordner anzulegen. Doch das will manchmal nicht recht gelingen. Will man unterhalb dem Root eines Projektes einen neuen Ordner anlegen, kann es vorkommen, dass der Button dazu disabled ist.

image

Der Grund dafür ist einfach (wenn man's weiß). Ein Blick in den Workspace verdeutlicht das Problem.

image

Hier sieht man, dass im Workspace ein Mapping für den Unterordner "Benutzerverwaltung" eingerichtet ist. Da die Versionsverwaltung alle Operationen, also auch das Anlegen eines neuen Ordners aber auf dem lokalen Pfad ausführen muss, tritt hier ein Problem auf. Die Anwendung weiß nicht, wo sie den Ordner lokal anlegen soll. Abhilfe schafft hier, wenn man das Mapping auf der Projkektebene einstellt, also so:

image

Alternativ kann man natürlich auch ein separates Mapping für den Root-Ordner des Projektes einrichten. Jetzt kann der Ordner lokal einem gültigen Pfad zugeordnet werden und der Button ist auch wieder enabled.

Tuesday, April 08, 2008 3:40:22 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Monday, April 07, 2008

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

Monday, April 07, 2008 8:26:37 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Buchbeschreibung
# Sunday, April 06, 2008

Es gibt eine aktualisierte Dokumentation für die API zum Team Build hier zum Download:

http://download.microsoft.com/download/5/f/8/5f872c2e-4221-410b-b86e-4c3cd831b0c4/Team Foundation Build Managed Reference.chm

Achtung die Datei muss auf der lokalen Platte gespeichert und dann über rechte Maustaste / Properties mit Hilfe des Unblock-Buttons entsperrt werden bevor sie korrekt angezeigt wird.

Sunday, April 06, 2008 1:38:11 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server
# Saturday, April 05, 2008

Ü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:

  1. Man brauch eine Klasse für ein einzelnes Property
  2. 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.
  3. Dafür brauch wir jetzt noch einen cCustomPropertyDescriptor. Diesen leiten wir von PropertyDescriptor ab und implementieren es.
  4. 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.

image

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.

image

Saturday, April 05, 2008 12:17:09 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Know-How | Tipps und Tricks
# Friday, April 04, 2008

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...

Friday, April 04, 2008 10:46:04 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [1] -

# Wednesday, April 02, 2008

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“. ..

image

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.

Wednesday, April 02, 2008 11:08:10 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [5] -
News

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.

image

TFSVersionDetection.zip

Weitere Informationen bei Brian Harry

Wednesday, April 02, 2008 10:05:53 PM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server

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:

image

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.

image

Nach unseren bisherigen Tests scheint damit die API auch auf x64 Systemen problemlos zu funktionieren.

Wednesday, April 02, 2008 9:39:04 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
Team System Server

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

Wednesday, April 02, 2008 12:32:47 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
News
# Monday, March 31, 2008

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.

clip_image002

Monday, March 31, 2008 8:33:04 AM (Mitteleuropäische Sommerzeit, UTC+02:00)  #    Comments [0] -
News | Team System Server
# Thursday, March 20, 2008

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

Thursday, March 20, 2008 8:51:57 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tools

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.

Thursday, March 20, 2008 12:45:12 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
.Net 3.0 | Qualitätsmanagement | Tipps und Tricks
# Wednesday, March 19, 2008

Leider ist die TFS SDK Dokumentation im VS2008 SDK "verschwunden". Diese kann nun endlich wieder heruntergeladen werden.

http://msdn2.microsoft.com/en-us/library/bb130146.aspx

Wednesday, March 19, 2008 9:24:12 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Tuesday, March 18, 2008

In diesem White Paper werden verschiedene Konzepte für das Requirement Management mit Visual Studio und einigen 3rd Party Tools beschrieben. Leider fehlt bei den 3rd Party Tools unser artiso WorkitemManager ;-)

http://www.microsoft.com/downloads/details.aspx?FamilyId=EEF7BB41-C686-4C9F-990B-F78ACE01C191&displaylang=en#filelist

Tuesday, March 18, 2008 12:27:12 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Know-How | Team System Server
# Monday, March 17, 2008

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.

The WCF Designer

Ein Video in dem man das Tool in Aktion sehen kann gibt es hier.

Weitere Infos und Downloads gibt es hier.

Monday, March 17, 2008 11:54:52 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2] -

# Wednesday, March 12, 2008

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"
Wednesday, March 12, 2008 8:51:13 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
News

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...

Wednesday, March 12, 2008 8:06:17 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -

Jeder vermisst so die eine oder andere Funktion im Visual Studio. Ein paar kleine nützlichen Erweiterung kann man sich kostenlos mit den Power Commands für Visual Studio 2008 herunterladen. Wer wollte nicht schon immer solche netten Sachen machen wie...

.. alle Projekte in einer Solution einklappen

image

... Referenzen in ein anderes Projekt zu kopieren

image

.. und vieles mehr.

Download und Source Code gibt es hier

Wer zuerst mal lesen will, welche Funktionen es gibt, hier klicken

Wednesday, March 12, 2008 8:01:56 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tools | VS 2008
# Monday, March 10, 2008

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“

Monday, March 10, 2008 8:33:00 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Friday, February 29, 2008

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
Friday, February 29, 2008 11:34:29 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server

Um SQL-Projekte aus dem Management-Studio mit der Versionsverwaltung des Team Foundation Server zu verwalten gibt es einen recht einfachen Weg. Zunächst muss der MSSCCI-Provider installiert werden. Dann geht man im Management-Studio unter Tools / Options auf Source_Control und prüft, ob der richtige Provider eingestellt ist.

image

Dann kann man seine Management-Studio Projekte einfach in die Quellcode-Verwaltung einfügen, wie man das aus Visual Studio gewohnt ist. Also einfach rechte Maustaste auf die Solution und Add Solution to Source Control.

image

Nach der Auswahl des Servers und erfolgter Anmeldung wählt man den Ordner in der Versionsverwaltung aus.

image

Und schon kann man seine SQL-Scripts in der Versionsverwaltung auschecken, einchecken etc.

image

Friday, February 29, 2008 10:17:25 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SQL | Team System Server
# Thursday, February 28, 2008

Ich bin gerade von der BASTA! Spring zurückgekehrt. Ich hatte dort 2 Vorträge.

Der absolute Oberknüller war mein erster Vortrag:

Beginn: 17:30 Uhr
Thema: Qualitätsmanagement mit VSTS

ich hatte mich eigentlich schon darauf eingestellt, in einer kleinen überschaubaren Runde das Thema mit zwei Leuten zu diskutieren, die sich eigentlich nur verlaufen haben oder in den anderen Sessions keinen Platz mehr bekommen haben. Aber was soll ich sagen. Die Bude war voll! Den Vortrag haben sich ca. 50 Leute angehört und keiner ist vorzeitig gegangen oder eingeschlafen (glaube ich mal). Ich habe dann in dem Vortrag versucht, das Tooling aus dem VSTS, das bereits einige Speaker vor mir vorgestellt haben, in einen Prozess einzubinden, damit am Ende möglichst viel Qualität rauskommen. Danke für das große Interesse.

image

Hier noch meine Folien zu dem Vortrag:

Die zweite Session war zum Thema Programmierung mit dem TFS SDK.

Zu diesem Vortrag gibt es die Folien, das Demo  und auch noch das Video, das ich ganz am Anfang gezeigt habe.

Thursday, February 28, 2008 3:02:02 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Wednesday, February 27, 2008

Das TFS DataWarehouse wird standardmäßig jede Stunde aktualisiert. Das kann oft zu lange sein, gerade wenn man Reports neu anlegt. Will man nicht bis zur nächsten automatischen Aktualisierung warten, kann man das auch manuell anstarten. Hierzu ruft man die folgende URL auf dem TFS Application Tier auf:

http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=Run

Dann einfach auf Invoke klicken uns schon startet der Aktualisierungs-Prozess

Wednesday, February 27, 2008 4:20:24 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1] -
Team System Server
# Tuesday, February 26, 2008

Das Veröffentlichen von Test Results auf dem TFS-Server ist eine schöne Sache, die vor allem die Kommunikation zwischen Tester und Entwickler erleichtert Aber damit gibt es immer wieder Probleme. Ich hatte gerade so einen Fall und möchte den hier kurz beschreiben, vielleicht kann jemand anderer sich damit Zeit sparen.

Nach dem Publish erhielt ich immer die Meldung "The test result share \\notebook_thomas\builds\WVBuild_20080226.3\TestResults\41577b87-2935-473c-bf03-423c777cd030 is not accessible. You might not have permission to use this network resource. Contact the administrator of this server to find out if you have access permissions. Failed to upload test run results to the drop location '\\notebook_thomas\builds'. Ask your server administrator to make the drop location available."

Das Problem liegt, wie sich aus der Fehlermeldung vermuten lässt, in den Berechtigungen. Ich hatte als Szenario den Build-Agent auf dem selben Rechner eingerichtet, auf dem ich auch entwickle. Wichtig sind hier zwei Dinge:

  1. Es müssen die Berechtigungen auf dem Verzeichnis und auf dem Build Share eingerichtet sein.
  2. Es müssen Berechtigungen für den lokalen User eingerichtet sein.

Bei mir war Punkt 2 das Problem. Ich hatte für den lokalen Benutzer, mit dem ich im Visual Studio arbeite, keine Berechtigungen auf dem Share, deshalb diese Meldung. Nachdem ich diese Berechtigung eingetragen habe, funktionierte es ohne Probleme.

Tuesday, February 26, 2008 2:22:46 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Monday, February 25, 2008

In den letzten Tagen wurde ich häufiger gefragt, welche Edition von Visual Studio man benötigt, um mit dem Team Foundation Server zu arbeiten. Viele sind irrtümlicherweise der Meinung, dass der TFS nur mit dem VSTS zusammenarbeitet, aber das stimmt glücklicherweise nicht. Bereits ab der Standard-Edition wird der Team-Explorer in Visual Studio integriert und man hat Zugriff auf die Quellcode-Verwaltung und Workitems, wie man das auch aus dem VSTS zusammen mit dem TFS gewohnt ist. Da der Team-Explorer sich ja auch als Standalone installieren lässt, wäre theoretisch auch ein Arbeiten mit der Express-Edition möglich, aber das ist natürlich nicht mehr sehr komfortabel.

Ich würde aber auf jeden Fall dei Professional-Edition von Visual Studio 2008 empfehlen, da diese nun auch Unit-Tests unterstützt und für einen normalen Entwickler damit eigentlich ausreichend sein sollte.

Monday, February 25, 2008 11:28:48 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Friday, February 22, 2008

Brian Harry beschreibt in diesem Beitrag verschiedene Upgrade-Szenarien, so z.B. auch wie eine Workgroup-Edition auf eine Full Version upgegraded (furchtbar diese Entwickler, können einfach kein Deutsch, hat jemand dafür eine Übersetzung?) werden kann.

Danke an Lars für den Link

bharry's WebLog : How do I upgrade to TFS 2008?

Friday, February 22, 2008 3:29:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1] -
Team System Server
# Thursday, February 21, 2008

In Köln wird von den regionalen Communities ein Event organisiert. Für alle, die den Launch-Event von Microsoft in Frankfurt verpasst haben oder denen dabei die Praxis etwas zu kurz kam, sollten sich diesen Event vormerken.

Ich selbst werde dort in 2 Tracks einen Überblick über den Team Foundation Server geben.

Hier noch ein paar Infos zum Event:

Es braut sich etwas zusammen in Nordrhein-Westfalen! Anlässlich der Vorstellung von Windows Server 2008, SQL Server 2008 und Visual Studio 2008 haben sich die User Groups aus Bonn (Bonn-to-Code.Net), Köln (.net User Group Köln) und vom Niederrhein (VfL Niederrhein) zusammengetan, um unter der Schirmherrschaft des JustCommunity e.V. ergänzend zum offiziellen Launch ein Community-Event der besonderen Art auf die Beine zu stellen:

  • Ein ganzer Tag voller Vorträge, verteilt auf drei parallele Tracks
  • Sprecher, die als Entwickler und IT-Professionals aus ihrer täglichen Arbeit heraus Praxiswissen vermitteln
  • Große Verlosung u.a. von Windows Server 2008, SQL Server 2008 und Visual Studio 2008 (not-for-resale-Versionen)
  • Vielfältige Möglichkeiten zum Networking mit anderen Teilnehmern und Firmen aus der Region

Und das zu einem Preis von 8,- Euro, in dem auch noch Verpflegung und Parkausweis enthalten sind.

AFTERLAUNCH
Launch war gestern - heute ist Praxis
Freitag 11. April 2008, KonferenzZentrum im Technologiepark Köln

Anmeldung und weitere Infos auf
www.afterlaunch.de

Thursday, February 21, 2008 9:47:41 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -

Ich war die vergangenen 3 Tage auf dem Launch-Event von Microsoft in Frankfurt als ATE. Das war wirklich mal eine Konferenz wie ich Sie bisher im .Net Umfeld noch nicht kannte. 7.500 Teilnehmer! Als Veranstaltungort hatte Microsoft die Messe Frankfurt ausgewählt und durch die langläufigen Gebäude waren leider die Wege recht weit.

P1000745 Das war nur die AUssteller-Halle. Hier bekommt man eine Ahnung wie groß die Veranstaltung war.


Ich war als ATE (Ask the Expert) mit dem Schwerpunkt Team Foundation Server aktiv und habe in den 3 Tagen viele Fragen zu dem Thema beantworten können und auch viele interessante Diskussionen geführt. Schön für mich war, dass man merkte, dass der Team Foundation Server nun langsam an Fahrt aufnimmt und immer mehr Verbreitung findet. Das konnte man sicher an der Zahl der Fragen zu dem Thema ablesen und sicher hat auch die Tatsache, dass sich eine Vollversion im Give-Away-Paket der Teilnehmer befand, dazu beigetragen, das der eine oder andere sich mit dem Thema nun doch auseinandersetzt.

P1000750 Der ATE-STand

Christian Binder hatte eine ganze Reihe von Vorträgen zum Thema VSTS und hatte mich im Vorfeld gebeten, einen kleinen Praxisbericht einzubauen. Ich konnte dann in einer seiner Sessions vor rund 600 Zuschauern in 10 Min. demonstrieren, wie wir den TFS im Rahmen unseres Entwicklungsprozesses nutzen. Da eine Live-Demo in dieser Zeit unmöglich ist, habe ich eine für mich neue Präsentationsform gewählt. Ich habe die Aktionen in einem Video aufgezeichnet und das Video dann live kommentiert. Damit konnte ich dann Sequenzen in denen beispielsweise Daten erfasst werden beschleunigt ablaufen lassen und so viel Zeit sparen. Ich schätze mal Live hätte das Ganze sicher 45 Minuten gedauert. In 10 Min. einen Entwicklungsprozess vom Kundengespräch bis zur Implementierung zu zeigen, man kann sich das Tempo des Vortrags vorstellen.

P1000737 Zusammen mit Christian Binder auf der Bühne

Für alle, denen das zu schnell ging oder wer nicht dabei war, hier ist das Video nochmal zum Download. Danke an Chris. War echt eine geile Show. Das Feedback danach auf dem ATE-Stand war einfach überwältigend.

Für mich war es eine echt coole Veranstaltung und ich habe viele neue Eindrücke und Kontakte mit nach Hause genommen. Bleibt nur zu hoffen, dass das Thema TFS nun endlich die breite Masse der Entwickler erreicht - ein echt cooles Tool, das sich jeder mal anschauen sollte.

Thursday, February 21, 2008 9:46:12 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [3] -

# Thursday, February 14, 2008

Habe gerade einen guten Tipp gefunden. Über eine entsprechende Optionseinstellung kann man im Management-Studio beim Copy & Paste die Spaltenüberschriften der Results mit kopieren.

HP's Blog - Microsoft SQL Server Management Studio - Spaltenüberschriften fehlen beim kopieren der Abfrageergebnisse

Thursday, February 14, 2008 11:17:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SQL | Tipps und Tricks

Ich war am 13.02 und 14.02 auf der VSOne und habe dort insgesamt 4 Sessions gehalten. Für mich war es eine tolle Veranstaltung, die Resonanz auf meine Vorträge war sehr positiv und ich konnte viele interessante Diskussionen mit Teilnehmern und Sprecherkollegen führen.

P1000618

Hier nun meine Slides und den Code zum Download:

Session Requirement Management mit Team Foundation Server
Bei dieser Session habe ich vorgestellt, wie wir bei uns im Hause mit Hilfe des Team Foundation Servers Requirements verwalten. Hierbei kommt auch der artiso Workitem-Manager zum Einsatz um Workitems hierarchisch zu strukturieren.

Spezifikationsdokumente Verwalten
Spezifikationsdokumente werden oft als monolithische Worddokumente verwaltet Daraus ergeben sich eine Reihe von Problemen, die wir mit unserem Ansatz lösen, die Spezifikation in kleine Dokumente aufzuteilen und so jede einzelne Funktion zu Spezifizieren. Hierzu nutzen wir ein Word-AddIn das Bestandteil des artiso Workitem-Managers ist.

Mit 3 Schichten zum Erfolg
Das war der Titel meiner Architektur-Session. Hier habe ich zunächst den Aufbau und die Vorteile einer 3-Schicht-Architektur beschrieben. Anschließend erläuterte ich Komponentenorientierung. An einem kleinen Demo-Projekt zeigte ich die Planung und den Aufbau eines Projektes vom Architekturdesign bis zur Implementierung und demonstrierte dabei einige Best Practices aus unseren Projekten. Am Ende beschrieb ich noch die Auswirkungen für verteilte Systeme. Interessant für mich war, dass der Meister der Komponentenorientierung Ralf Westphal der Session beiwohnte uund den Vortrag mit interessanten Fragen bereicherte.

                   

XML-Serialisierung zur Persistierung von Objekten
XML-Serialisierung ist eine Technologie, mit der Objekte schnell und einfach in ein XML-Format überführt und auch wieder zurück konvertiert werden kann. Dies Technik ist nicht neu und viele Entwickler kennen und nutzen sie. Ich habe in der Session verschiedene Möglichkeiten aufgezeigt, wie sich XML-Serialisierung nutzen lässt, von der Persistierung von kompletten Datenobjekten über Konfigurationsdateien bis hin zur Optimierung der Speicherung von Listenobjekten in der Datenbank.

              

Nächste Woche bin ich dann auf dem Launch Event als ATE. Das wird sicher interessant bei diesem Mega-Event (6.500 Teilnehmer!).

Thursday, February 14, 2008 9:46:01 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Eigene Tutorials | Tipps und Tricks

Wir nutzen in unserem Entwicklungsprozess seit einiger Zeit den Team Foundation Server. Für das Requirement Management setzen wir Workitems ein. In der aktuellen Version des Team Foundation Servers fehlte uns dabei bisher allerdings die Möglichkeit, Workitems hierarchisch zu organisieren. Glücklicherweise verfügt der Team Foundation Server über ein leistungsfähiges API (siehe auch meinen MSDN-Webcast zu diesem Thema). Auf Basis dieser API haben wir ein Tool, den artiso Workitem Manager, entwickelt, mit dem wir nun Workitems so strukturieren können, wie wir das in unseren Projekten brauchen. Neben der hierarchischen Struktur können auch Iterationen in Baumstrukturen abgebildet werden.

Ebenfalls Bestandteil des artiso Workitem Manger ist ein Word-AddIn mit der Spezifikationsdokumente auf Funktionsebene verwaltet werden können. Damit lassen sich verschiedene Probleme mit Spezifikationsdokumente als monolithische Worddokumente lösen.

Den artiso Workitem Manager kann als Beta-Version kostenlos heruntergeladen werden. Die frei verfügbare Version ist auf 50 Workitems begrenzt.

Weitere Informationen finden sich hier.

Thursday, February 14, 2008 9:15:30 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [3] -
Team System Server | Tools
# Monday, February 04, 2008

...sollte man sich mal die AsyncPostbackTriggers anschaen, evtl. liegt das Proble dort begraben. Aber erst mal der Reihe nach.

Ich hatte eine Web-Seite, die sich plötzlich nicht mehr aufrufen lies. Ich habe unterschiedliche Fehler erhalten. Mit dem IIS wurde einfach angezeigt, dass die Seite nicht verfügbar ist, im Debug meldete Visual Studio eine OutOfMemoryException und der Developer Web Server ist gleich mal abgeschmiert. Nach einigem Suchen haben wir dann das Problem entdeckt. Auf der Seite war ein AsyncPostbackTrigger auf eine Textbox eingetragen. Diese Textbox wurde aber irgendwann entfernt. Dies scheint das oben beschriebene Problem ausgelöst zu haben.

Vielleicht hat ja mal jemend einen ähnlichen Fehler und kann ihn mit dieser Info schnell beheben.

Monday, February 04, 2008 12:23:28 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
ASP.Net
# Wednesday, January 30, 2008

Mit Hilfe der neuen Extension Methods in C# 3.0 können einfache Matrizenoperationen ganz einfach als Methoden auf bestehende Objekttypen eingefügt werden. Ich habe hier mal ein Beispiel mit SortedDictionaries. Diese Extension Method erlaubt das addieren zweier Matrizen.

public static void AddDictionary(this SortedDictionary<int, decimal> resultDictionary, SortedDictionary<int, decimal> insertDictionary)
{
    foreach (int key in insertDictionary.Keys)
    {
        if (!resultDictionary.ContainsKey(key))
            resultDictionary.Add(key, insertDictionary[key]);
        else
            resultDictionary[key] += insertDictionary[key];
    }
}

 

Der Aufruf gestaltet sich dann sehr einfach:

SortedDictionary<int, decimal> a = new SortedDictionary();
SortedDictionary<int, decimal> b = new SortedDictionary();

//Werte in Dictionaries einfügen

a.AddDictionary(b);

 

Ich finde die Extension Methods ne feine Sache. Natürlich sind auch beliebige andere Operationen möglich.

Wednesday, January 30, 2008 5:47:30 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2] -
C# 3.0
# Saturday, January 26, 2008

Gemeinsam mit Christian Binder von Microsoft habe ich einen Webcast zum Thema Team Foundation Server SDK aufgenommen.

Thema des Webcasts:

Leider unterstützt der Team Foundation Server 2008 keine hierarchischen Workitems. Dies lässt sich mit Hilfe des TFS SDKs jedoch einfach selbst erweitern. Der Webcast vermittelt zunächst die Grundlagen zur Programmierung mit dem SDK. Im zweiten Teil wird dann gezeigt, wie das SDK genutzt werden kann, um einen hierarchischen Workitem-Manager zu erstellen.

Diese hierarchische Organisation der Workitems bietet bei der kompletten Projektorganisation enorme Vorteile. So lassen sich damit komplette Funktionsbäume aufbauen. Ich werde in Kürze hier noch verschiedene Vorgehensweisen bloggen, die auf hierarchischen Workitems basieren. Vorab hier schon ein paar begleitende Informationen zum Webcast.

Der Webcast kann hier heruntergeladen werden.

Das fertige Projekt aus dem Webcast kann hier als Solution heruntergeladen werden

Und hier habe ich noch ein Dokument, das den Aufbau der Anwendung Schritt für Schritt erläutert.

Danke noch an Chris, hat echt Spass gemacht.

Saturday, January 26, 2008 8:58:18 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2] -
Team System Server

Des TFS SDK enthält ein Control um Workitems in Winforms zu bearbeiten. Dieses Control löst damit das Problem, wie die hochflexible Struktur von Workitems in einer eigenen Anwendung dargestellt und bearbeitet werden kann. Mit dem neuen TFS SDK 2008 gibt es allerdings ein kleines Problem beim Einsatz des Controls. Wird das Control in eine Winform eingebaut, kommt es zu einer NullReferenceException.

Object reference not set to an instance of an object.

Dieses Problem konnte ich bei mir umgehen, indem ich nicht die DLL aus dem SDK sondern aus dem TeamExplorer. Ich habe die beiden DLLS, die ich hier ausgetauscht habe hier zum Download bereitgestellt.

Saturday, January 26, 2008 8:30:05 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Thursday, January 24, 2008

Über die TFS-API kann der Namen eines TFS-Servers einfach abgefragt werden. Dazu kann folgender Code verwendet werden:

private TeamFoundationServer tfs;
NetworkCredential account = new NetworkCredential(user, password);
tfs = new TeamFoundationServer(server, account);
string ServerName = tfs.Name;

Dabei habe ich allerdings folgendes Problem festgestellt: Der Servername ist nicht konsistent. Ist der Server im Team-Explorer noch nicht geristriert, enthält der Servername auch den Port. Nachdem der Server im Team-Explorer dann registriert wurde, wird nur noch der Server-Name zurückgegeben. Das sollte man auf jeden Fall berücksichtigen, wenn man mit dem Name-Property vom tfs arbeitet.

Thursday, January 24, 2008 9:14:11 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Tuesday, January 08, 2008

Mit diesem kostenlosen Add-In lassen sich Feiertage in MS-Project und Outlook im Kalender eintragen und auch wieder entfernen.

SetHolidays - Import von Feiertagen in Outlook und Microsoft Project

Tuesday, January 08, 2008 10:52:54 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tools
# Monday, January 07, 2008

Unter Access 2003 gabe es Access-Datenbankprojekte (*.adp) mit denen man wunderbar auf bestehende SQL-Datenbanken zugreifen konnten. Sind diese mit Access 2007 verloren gegangen? Das nicht, aber sie sind jetzt gut versteckt. Um ein Datenbankprojekt mit Access 2007 anzulegen geht man wie folgt vor:

  1. Access ganz normal starten
  2. Access fragt nun nach einer Vorlage für eine neue Datei. Hier das Icon "Blank Database" auswählen.
  3. Im rechten Bereich kann man nun den Dateiname angeben. Hier den File-Dialog öffnen.
  4. In diesem Dialog kann man nun als Dateityp "Microsoft Office Access Projects" auswählen.

     image
  5. Wenn mann dann auf den "Create"-Button klickt kann man noch auswählen, ob man sich zu einer bestehenden Datenbank verbinden möchte oder eine neue anlegen will. Der Rest dürfte dann wieder vertraut erscheinen.
Monday, January 07, 2008 6:16:04 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tipps und Tricks
# Wednesday, January 02, 2008

Eine schöne Liste mit Tools und Erweiterungen zum Team Foundation Server und Visual Studio Team System findet sich unter http://widgets.accentient.com/

TFS-Widgets

Wednesday, January 02, 2008 3:42:50 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server

Aus dem Fenster mit Fehlermeldungen und Wahrnungen im Visual Studio heraus kann man direkt Workitems auf dem Team Foundation Server anlegen. Dazu einfach die entsprechende Zeile mit der rechten Maustaste anklicken und im Kontextmenü "Create Work Item" wählen.

image

Es werden automatisch Informationen in den Titel und den Verlauf übernommen, wobei meiner Meinung nach die Details eher in das Beschreibungs-Feld gehören als in den Verlauf.

image

Wednesday, January 02, 2008 2:45:07 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server | VS 2008
# Sunday, December 30, 2007

Schick ist es, wenn man in der Anwendung demBenutzer die verfügbaren SQL-Server als Auswahl anzeigt. Die kann man mit folgendem Code bewerkstelligen:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SQLInstances
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dataTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();

            foreach (DataRow datarow in dataTable.Rows)
            {
                string datasource = datarow["ServerName"].ToString();
                if (datarow["InstanceName"] != DBNull.Value)
                {
                    datasource += String.Format("\\{0}", datarow["InstanceName"]);

                    ComboBox1.Items.Add(datasource);
                }

                DataGridView1.DataSource = dataTable;
            }
        }
    }
}

 

Das Beispiel gibt die verfügbaren SQL-Server in einem GridVie aus.

Um auch Zuisatzinformationen wie Version etc. zu erhalten, muss auf dem SQL-Server der SQL-Browser laufen:

clip_image001

Sunday, December 30, 2007 9:20:27 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SQL | Tipps und Tricks
# Wednesday, December 05, 2007

Der Visual Studio 2008 Team Explorer kann unabhängig vom Team Foundation Server mit folgendem Link heruntergeladen werden.

Download details: Visual Studio Team System 2008 Team Explorer

Wednesday, December 05, 2007 8:39:13 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server
# Tuesday, December 04, 2007

Unter http://entwickler-press.de/ kann man einen Adventskalender öffnen. Hinter jedem Türchen steht ein e-Book zum kostenlosen Download. Aber Achtung das Türchen geht immer nur an dem jeweiligen Tag auf.

Tuesday, December 04, 2007 10:36:43 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -

Durch Zufall habe ich gerade herausgefunden, dass man im IE auch mehrere Startseiten eintragen kann. Einfach in der Liste mehrere zeilen mit den verschiedenen URLs eingeben. Die werden dann beim Start alle geöffnet.

image

image

Tuesday, December 04, 2007 10:35:10 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Tipps und Tricks
# Thursday, November 29, 2007

Folgende Anforderung: Ich möchte in einer Tabelle, die über die gesamte Bildschirmbreite geht, den Inhalt einer Zelle scrollbar haben.

Mein Ansatz: Ich mache in die Tabellenzelle ein DIV mit Overflow:auto

Problem: Das funktioniert zwar im FireFox, aber nicht im IE. Der IE geht wohl her und schaut sich den Inhalt des DIVs an und macht die Tabelle dann so breit, dass der gesamte Inhalt reinpasst und berücksichtigt dabei nicht, dass das DIV ja auch scrollen könnte. Dieser Effekt tritt auf, wenn das DIV eine prozentuale Breite hat.

Folgender Code verdeutlichd das Problem. Das obere DIV verhällt sich korrekt, da es nicht in eine Tabelle eingebettet ist. Bei den unteren beiden tritt aber das beschriebene Problem auf.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ValuePlanner_2008.Web.ProductArea.WebForm1" %>

<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="width: 100%; overflow: auto">
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
        <br />
    </div>

    <script language="javascript" type="text/javascript">
   1:  
   2:    function fnRefreshScrollPosition(source)
   3:         {
   4:             document.getElementById("staticUnits").scrollLeft = source;
   5:         }
   6:     
</script> <div style="width: 100%"> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="staticUnits" style="width: 100%; overflow: auto;"> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> <br /> </div> </td> </tr> </table> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="units" style="width: 100%; overflow: auto;" onscroll="fnRefreshScrollPosition(this.scrollLeft);"> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc<br /> <br /> </div> </td> </tr> </table> </div> </form> </body> </html>

 

Lösung 1:
Ich kann den DIVs eine feste Breite geben. Aber eigentlich will ich ja, dass der gesamte zur Verfügung stehende Platz genutzt wird und wenn dieser nicht ausreicht gescrollt wird. Um das zu erreichen müsste ich über ein Resitze-Event die Breite der Tabellenzeile ermitteln und diese dann jedesmal auf die DIVs anwenden. Das wird aber schnell sehr hässlich wenn Margins etc. mit berücksichtigt werden müssen.

Lösung 2:
Ich positioniere die DIVs einfach absolut. Dann werden Sie nicht mehr als Inhalt der Tabelle berücksichtigt und die Tabelle erstreckt sich über genau 100% der Breite. Gut nutzen kann man hier den Effekt, dass die Positionsangaben bei absoluter Poistionierung sich immer auf den Container, also in unserem Fall auf die Tabellenzelle beziehen. Ein Stolperstein dabei ist, dass das DIV natürlich auch keinen Einfluss mehr auf die Höhe der Tabellenzelle hat. Diese muss man nun explizit angeben, ich habe da einfach mal 50px vorgegeben. Der Code sieht dann so aus. Hier scrollen nun alle 3 DIVs wie gewünscht.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ValuePlanner_2008.Web.ProductArea.WebForm1" %>

<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="width: 100%; overflow: auto">
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
        <br />
    </div>

    <script language="javascript" type="text/javascript">
   1:  
   2:    function fnRefreshScrollPosition(source)
   3:         {
   4:             document.getElementById("staticUnits").scrollLeft = source;
   5:         }
   6:     
</script> <div style="width: 100%"> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="staticUnits" style="width: 100%; overflow: auto; position: absolute"> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> <br /> </div> </td> </tr> </table> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="units" style="width: 100%; overflow: auto; position: absolute;" onscroll="fnRefreshScrollPosition(this.scrollLeft);"> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc<br /> <br /> </div> </td> </tr> </table> </div> </form> </body> </html>
Thursday, November 29, 2007 2:28:56 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
ASP.Net
# Wednesday, November 28, 2007

Events in eigene WebUserControls (.ascx) einzubauen ist im Prinzip ganz einfach:

   1: public event ClickEventHandler Clicked;
   2: public delegate void ClickEventHandler(object sender, EventArgs e);
   3: protected virtual void OnClicked(EventArgs e)
   4: {
   5:     if (Clicked != null)
   6:         Clicked(this, e);
   7: }


Man deviniert ein Event mit einem Eventhandler-Typ (Zeile1), definiert einen Delegaten für den Eventhandler (Zeile 2) und kann dann eine Methode definieren, die den Event auslöst. Diese Methode ruft man dann auf, wenn das Event ausgelöst werden soll.

Wenn man das UserControl in eine Seite einbaut kann man jetzt im CodeBehind ganz einfach einen Eventhandler auf den Event registrieren und fertig:

this.ucButton.Clicked += new ClickEventHandler(ucButton_Clicked);


Auch im Markup kann man den Event angeben, vorausgesetzt man hat den entsprechenden Eventhandler angelegt.

<uc3:ucButton ID="ucButton" runat="server" Text="Gross" ImageURL="~/Images/Status/GreenBox.png" OnClicked="ucButton_Clicked" />

Was bei mir aber nicht funktioniert, ist der Designtime-Support. Bei anderen Controls kann ich die Events im Property-Grid sehen und ich kann per Doppelclick auch einen Standard-Eventhandler einrichten und registrieren. Das geht bei mir nicht. Hat jemand dafür eine Lösung? Wenn ja, dann bitte her damit.
Wednesday, November 28, 2007 4:04:12 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [5] -
ASP.Net

Sicher ein alter Hut, aber für mich war's gerade neu und ich finde das echt klasse. Mit CSS kann man Elemente auch mit einem Abstand zum rechten Rand positionieren.

<DIV style="position:absolute; right:20px; top:350px; width:300px; height:150px;"></DIV>

erzeugt ein DIV das immer exakt 20px vom Rechten Rand entfernt ist, auch nach einem Resize des Fensters. Genauc das was ich gerade brauche. Man muss dabei nur beschten, dass right offensichtlich die schwächste Einstellung ist, d.h. wenn left und width ebenfalls angegeben sind, wird right ignoriert. Wenn aber nur zwei der Werte angegeben sind, wird der dritte automatisch ermittelt, also z.B. bei left und right wird die Breite automatisch angepasst. Das selbe funktioniert natürlich auch mit top, bottom und height.

Wednesday, November 28, 2007 11:46:03 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
ASP.Net
# Tuesday, November 27, 2007

Im TFS 2008 hat Microsoft endlich die Lizenzbedingungen angepasst. Für folgende Aktionen wird nun keine CAL mehr benötigt:

  • Anlegen eines Workitems
  • Anzeigen der Workitems, die ein Benutzer selbst angelegt hat
  • Bearbeiten der Workitems außer Änderung des Status des Workitems

Damit ist es nun endlich möglich, Kunden etc. in das Projekt besser einzubinden, ohne dafür Unsummen für CALs auszugeben.

adamga's WebLog : TFS for Defect Tracking! Licensing Change!!!

Tuesday, November 27, 2007 10:32:17 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
Team System Server

Dieser Artikel beschreibt ein paar Punkte, die bei der Erstellung von ASP.NET Server Controls berücksichtigt werden sollten und gibt verschiedene Tipps.

Writing Good ASP.NET Server Controls « Enter the Tatrix

Tuesday, November 27, 2007 10:21:24 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
ASP.Net
# Friday, November 23, 2007

Noch ein Update zu meinem vorhergehenden Post. Man kann sich den Wizard, den ich dort als Bestandteil von Visual Studio 2008 beschrieben habe, auch separat runterladen und als eigenständiges Tool oder integriert in VS2005 ausführen.

Downloaddetails: SQL Server Database Publishing Wizard 1.1

Friday, November 23, 2007 11:13:25 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0] -
SQL | VS 2005
Archive
<August 2008>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2014
Thomas
Sign In
Statistics
Total Posts: 622
This Year: 13
This Month: 0
This Week: 0
Comments: 356
Themes
All Content © 2014, Thomas
DasBlog theme 'Business' created by Christoph De Baene (delarou)