Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Thursday, May 29, 2008
Neues rund um's Thema .Net
 
 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 10:54:23 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

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.

Thursday, May 29, 2008 1:36:13 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |  |  |   | 
 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 10:51:39 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 9:41:25 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 4:50:11 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

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 3:12:05 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

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 2:50:15 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 8:54:13 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2]    |   | 
 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 7:36:13 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 4:56:09 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 7:23:37 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 1:48:48 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

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 12:04:12 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, April 30, 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

Wednesday, April 30, 2008 11:31:52 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

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 7:58:27 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 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 9:27:44 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1]    | 
 Monday, April 28, 2008

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

Monday, April 28, 2008 11:37:00 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Thursday, April 24, 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.

Thursday, April 24, 2008 11:57:49 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [4]    | 

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.