<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="de-de" xmlns="http://www.w3.org/2005/Atom">
  <title>artiso Blog</title>
  <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/" />
  <link rel="self" href="http://www.artiso.com/ProBlog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-03-08T08:07:21.1961594+01:00</updated>
  <author>
    <name>Thomas</name>
  </author>
  <subtitle>Neues rund um's Thema .Net</subtitle>
  <id>http://www.artiso.com/ProBlog/</id>
  <generator uri="http://www.dasblog.net" version="1.9.6264.0">DasBlog</generator>
  <entry>
    <title>Fehler &amp;ldquo;Failed to activate feature&amp;rdquo; beim Einrichten eines Portals in TFS 2010</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</id>
    <published>2010-03-08T08:07:21.1961594+01:00</published>
    <updated>2010-03-08T08:07:21.1961594+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Team Foundation Server 2010 bietet nun eine verbesserte Integration mit SharePoint.
Für die einzelnen Team-Projekte wird die Verbindung zu einer SharePoint Site typischerweise
beim Anlegen des Projektes einrichten, alternativ kann man das auch im Nachhinein
konfigurieren. Dazu einfach im TeamExplorer auf dem Team Projekt rechte Maustaste
und dann unter “Team Project Setting” “Portal Settings” auswählen. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_thumb.png" width="359" height="276" />
          </a>
        </p>
        <p>
Hier wählt man dann unter “Configure URL” eine der konfigurierten Web Applications
aus.
</p>
        <p>
Bekommt mann beim Bestätigen des Fensters folgen Meldung, dann hat der aktuelle Benutzer
nicht ausreichen Berechtigungen auf die Site / SiteCollection:
</p>
        <p>
Server was unable to process request. ---&gt; Failed to activate feature 'TeamFoundationWeb'
(ID: 310284e3-35d9-4b5d-99b5-c42147379877) at scope 'http://sarmoss02/sites/TFS2008/BI_KaBIS'.
</p>
        <p>
Diese Berechtigungen müssen im SharePoint eingetragen werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=63edec55-85f0-4768-9ccb-ec78bf0e6340" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team Foundation Server Power Tools 2010 RC</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</id>
    <published>2010-03-02T17:34:34.0614162+01:00</published>
    <updated>2010-03-02T17:34:34.0614162+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Tools" label="Tools" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tools.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools
die viele nützliche Funktionen hinzufügen.
</p>
        <p>
Kostenloaser Download: <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b">http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4" />
      </div>
    </content>
  </entry>
  <entry>
    <title>URL encodierung in WinForms-Anwendung</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</id>
    <published>2010-02-16T19:19:29.4634559+01:00</published>
    <updated>2010-02-16T19:22:02.0113072+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Will man in einer Winforms-Anwendung einen String URL-encodieren, dann kann mann dafür
einen einfachen Aufruf verwenden:
</p>
        <font color="#2b91af" size="2" face="Consolas">
          <font color="#2b91af" size="2" face="Consolas">
            <p>
HttpUtility.UrlEncode(<font color="#a31515" size="2" face="Consolas">"http://www.artiso.com/page?ID=99"</font>);
</p>
          </font>
        </font>
        <p>
Das einzige wass man dafür tun muss, ist die System.Web.dll zu referenzieren. Eine
kleine Hürde gibt es bei Visual Studio 2010, da hier standardmäßig “.Net Framework
4 Client Profile” als Target-Framework ausgewählt ist und das Client Profile die System.Web
nicht enthält. Deshalb muss man in den Eigenschaften des Projektes das Target-Framework
umstellen, z.B. auf .NET Framework 4.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_thumb.png" width="545" height="360" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c85928fc-65e5-4313-a969-04f466de7bce" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Probleme beim Einrichten der e-Mail Benachrichtigung im SharePoint</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</id>
    <published>2010-02-08T22:47:10.7979818+01:00</published>
    <updated>2010-02-08T22:47:10.7979818+01:00</updated>
    <category term="SharePoint" label="SharePoint" scheme="http://www.artiso.com/ProBlog/CategoryView,category,SharePoint.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wollte heute ganz einfach eine Benachrichtigung für eine Liste im SharePoint einrichten.
Das Ganze stellte sich als problematischer heraus als gedacht. Eigentlich ist das
eine einfache Sache. Im Actions-Menü die Option “Aletr Me” aufrufen…
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb.png" width="213" height="244" />
          </a>
        </p>
        <p>
… , Einstellungen vornehmen und schon kommt eine Fehlermeldung:
</p>
        <blockquote>
          <p>
            <span id="ctl00_PlaceHolderMain_LabelMessage">The following users do not have e-mail
addresses specified: &lt;UserName&gt;. Alerts have been created successfully but these
users will not receive e-mail notifications until valid e-mail addresses have been
provided</span>
          </p>
        </blockquote>
        <p>
Der Link darunter mit “Set my e-Mail address” war auch nicht sehr hilfreich. Nach
einigen Recherchen bin ich dann auf ein paar weitere Details gestoßen.
</p>
        <p>
Zunächst habe ich herausgefunden, dass SharePoint die Benutzerprofile mit dem ActiveDirectory
abgleicht, aber nur, wenn das konfiguriert ist. Das kann man unter Central Administration
\ Shared Services Administration einstellen. Dort kann man im Dropdown-Menü des SharedService
die Option “Open Shared Services Admin Site” aufrufen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_1.png" width="647" height="346" />
          </a>
        </p>
        <p>
Unter “User Profiles and My Sites” kann nun die Option “User profiles and properties”
gewählt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_2.png" width="320" height="219" />
          </a>
        </p>
        <p>
Hier sollte zunächst geprüft werden, ob der Dienst der die User Profile mit dem ActiveDirectory
abgleicht auch zur Ausführung eingeplant ist. Mit den unteren Links kann ein manueller
Abgleich gestartet werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_3.png" width="811" height="575" />
          </a>
        </p>
        <p>
Über “View user profiles” kann man sich die importierten Profile anzeigen lassen,
mit “View import log” kann man sich ein Protokoll zum Abgleich anzeigen lassen.
</p>
        <p>
Sollen die Benutzer aus einer anderen Domäne importiert werden als die in der der
SharePoint Server läuft, kann man über “View Import Connections” eine weitere Domäne
hinzufügen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_4.png" width="885" height="180" />
          </a>
        </p>
        <p>
Bei mir bestand dann noch das Problem, dass das Profil für meinen User nicht sauber
durch den Import aktualisiert wurde. Nachdem ich den User aus der entsprechenden Site
entfernt und neu hinzugefügt hatte, hat es problemlos funktioniert und ich kann jetzt
meine Alerts problemlos einrichten und bin immer auf dem Laufenden was den Inhalt
meiner SharePoint-Listen anbelangt.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7e811c18-808d-4102-a2a0-6e371bf18d79" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Hierarchische Work Item Queries im TFS 2010 SharePoint Portal automatisch einklappen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</id>
    <published>2010-02-04T15:41:07.9715033+01:00</published>
    <updated>2010-02-04T15:41:07.9715033+01:00</updated>
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit TFS 2010 kommen nun endlich hierarchische Workitem Queries und erfreulicherweise
lassen diese sich auch im SharePoint Portal schön darstellen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_1.png" width="788" height="412" />
          </a>
        </p>
        <p>
Was mich an der Geschichte nur etwas gestört hat, dass ist, dass die Hierarchie nach
dem Laden immer vollständig aufgeklappt ist. Es gibt zwar einen Button “Collapse All”
aber den dann immer extra zu drücken um erst mal einen Überblick zu bekommen, ist
doch etwas lästig. Zunächst habe ich deshalb versucht die Query entsprechend anzupassen,
jedoch gibt es an dieser Stelle leider noch keinen Parameter um das einzustellen.
Für das SharePoint-Portal habe ich allerdings eine Lösung gefunden und die geht so:
</p>
        <p>
1.) Ein neues Content Web Part auf der Seite einfügen:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_3.png" width="572" height="589" />
          </a>
        </p>
        <p>
2.) Auf dem Content Editor Web Part den Source Editor starten
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_5.png" width="203" height="274" />
          </a>
        </p>
        <p>
3.) Hier folgendes Script eintragen:
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum1"> 1:</span> &lt;script
language=<span style="color: #006080">"javascript"</span>&gt;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum2"> 2:</span>
              <span style="color: #0000ff">function</span> collapseQuery() </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum3"> 3:</span> { </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum4"> 4:</span> _ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00.tryToggle(<span style="color: #0000ff">false</span>, <span style="color: #0000ff">true</span>);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum5"> 5:</span> }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum6"> 6:</span>  </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum7"> 7:</span> WPSC.RegisterForEvent(<span style="color: #006080">"urn:schemas-microsoft-com:dhtml"</span>,<span style="color: #006080">"onload"</span>,collapseQuery);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum8"> 8:</span> &lt;/script&gt;</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_6.png" width="480" height="169" />
          </a>
        </p>
        <p>
Die ID des Webparts (_ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00) lässt
sich relativ einfach im HTML-Source der Seite ermitteln (z.B. IE 8 F12 drücken um
in die Developer Tools zu gelangen). Hier kann man dann über Find / Select Element
by Click durch Anklicken des WebParts die Stelle im Code einfach finden und die ID
zu ermitteln. Zu beachten ist dabei, dass das die ID des Controls etwas anders lautet
als das WebPart selbts, so muss am Anfang ein _ stehen und das Control auf _ctl00
enden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_16.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_7.png" width="707" height="388" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=53657580-c799-4371-aca1-b47169364af5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Reporting Services &amp;uuml;ber einen NLB-Cluster betreiben</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</id>
    <published>2009-11-07T11:42:05.0508546+01:00</published>
    <updated>2009-11-07T11:42:05.0508546+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem TFS 2010 ist es nun möglich, denn Application-Tier über einen NLB-Cluster
zu betreiben. Damit kann man Ausfallsicherheit und Load-Balancing für den App-Tier
erreichen. Mit einem SQL-Cluster als Data-Tier skaliert der TFS nun sehr schön, sowohl
in Punkte Performance als auch in Bezug auf die Ausfallsicherheit.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb.png" width="321" height="269" />
          </a>
        </p>
        <p>
Nun liegt es natürlich nahe, die Reporting Services ebenfalls über den NLB zu betreiben,
was an sich auch kein Problem ist. Man muss nur ein paar Einstellungen vornehmen.
So hats bei mir funktioniert:
</p>
        <p>
1.) Das Scale-out Deployment für die Reporting-Services auf beiden Servern aktivieren
(setzt SSRS Enterprise voraus)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_1.png" width="485" height="345" />
          </a>
        </p>
        <p>
2.) Die Web Service URL auf die IP-Adresse des NLB einstellen
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_2.png" width="482" height="345" />
          </a>
        </p>
        <p>
3.) In der TFS Admin Console die Reporting Services über den NLB registrieren. Das
hat bei mir nur über die IP-Adresse funktioniert, nicht über den Namen. Da muss ich
bei Gelegenheit mal danach schauen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_3.png" width="307" height="379" />
          </a>
        </p>
        <p>
4.) In der Datei C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\rsreportserver.config unter &lt;Service&gt; folgendes Tag einfügen:
</p>
        <p>
&lt;Hostname&gt;sartfsnlb01&lt;/Hostname&gt;
</p>
        <p>
5.) In der Web.config unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\ und unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportManager\ im Abschnitt &lt;system.web&gt; folgenden Tag einfügen:
</p>
        <p>
&lt;machineKey validationKey="627BF72BB33AA8D28CA2C3E80920BA4DF0B726F97EEFBB0F4818350D63E6AFA380811F13ED1F086E386284654DB3DAF676707464EEB73EBF79858F477D8E4F5C"<br />
decryptionKey="F40B6E5A02B29A181D2D213B5ED8F50B73CFCFD0CC56E137" validation="SHA1"
/&gt;
</p>
        <p>
Achtung die Parameterwerte dürfen nuicht umgebrochen werden. Einen eigenen Key kann
man sich einfach unter <a href="http://aspnetresources.com/tools/keycreator.aspx">http://aspnetresources.com/tools/keycreator.aspx</a> generieren
lassen.
</p>
        <p>
6.) Reporting Srevices neu starten.
</p>
        <p>
7.) Nun werden bei einem Ausfall eines App-Tiers alle Reporting-Anfragen über den
anderen App-Tier abgewickelt, der Anwender merkt davon nichts außer dass es beim ersten
Zugriff nach dem Ausfall ein wenig länger dauert.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8ad86d18-0e69-4935-98fe-652a05df7ed4" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TechEd in Berlin</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</id>
    <published>2009-11-07T08:15:43.8778656+01:00</published>
    <updated>2009-11-07T08:15:43.8778656+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dieses Jahr ist nach längerer Zeit die TechEd, die wichtigste Microsoft-Konferenz
in Europa, wieder in Deutschland, genauer gesagt vom 09.Nov – 13. Nov in Berlin. Ich
werde dort als ATE (Ask the Experts) zum Thema Visual Studio ALM vertreten sien und
darüber hinaus mit Christian Binder und Neno Loje ein Q&amp;A Session zu den Themen
TFS, ALM und Visual Studio 2010 zu machen. Die Session wird in Deutsch sein, also
wenn ihr Fragen rund um den Themenbereich habt, besucht unsere Q&amp;A-Session. Soviel
geballtes Wissen auf einmal gibts nicht so bald wieder :-)
</p>
        <p>
Visual Studio Team Foundation Server Q&amp;A<br />
Mittwoch, 11. November<br />
14:00 – 15:00 Uhr<br />
Community Stage im Zentrum der Ausstellung Halle 4.2
</p>
        <p>
          <img src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/TechEd2009BerlinVisualStudioTeamFoundati_A9AC/clip_image002_2.gif" width="312" height="193" />
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f7a0b11f-c175-455b-b5a1-92c7431d632b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Hyper-V Snapshots</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</id>
    <published>2009-11-02T21:12:19.5528674+01:00</published>
    <updated>2009-11-02T21:12:19.5528674+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hype-V ist ein klasse Virtualisierungssystem das vor allem in der neuesten Version
eine Reihe nützlicher Funktionen mitbringt. Besonders hilfreich sind Snapshots mit
denen es gefahrlos möglich ist, auch auf dem Server mal was zu testen. Man kann sich
aber mit Shanpshots leicht selber überlicsten oder gar in’s Knie schießen. Deshalb
möchte ich hier ein paar Erfahrungen zum Besten geben:
</p>
        <p>
          <strong>Funktionsweise von Snapshots</strong>
        </p>
        <p>
Die Virtuellen Maschinen von Hyper-V schreiben ihre Daten in virtuelle Harddisks (VHD),
also eine Datei auf der Platte des Hosts. Wird nun ein Snapshot gemacht, passiert
vereinfach gesagt, Folgendes. Die VHD-Datei wird schreibgeschützt, so dass daran keine
Änderungen mehr vorgenommen werden können. Statt dessen wird nun eine AVHD-Datei angelegt
und alle Änderungen auf der Platte der VM werden nun dort hineingeschrieben. Wird
erneut ein Snapshot erstellt, wird die AVHD gesperrt und eine weitere angelegt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_thumb.png" width="602" height="78" />
          </a>
        </p>
        <p>
Dies hat nun zweierlei Folgen:
</p>
        <ol>
          <li>
Je mehr Snapshots erstellt werden, desto langsamer wird der Zugriff auf die virtuelle
Disk, da Hyper-V ja aus der VHD und den verschiedenen AVHDs nun die Daten zusammensammeln
muss.</li>
          <li>
Nur die VHD und alle AVHDs zusammen ergeben den aktuellen Stand der virtuellen Disk,
mit der VHD alleine hat man nur den Stand vom ersten Snapshot.</li>
        </ol>
        <p>
Gerade der letzte Punkt ist beim Verschienen der VM oder beim Backup zu berücksichtigen,
da man hier schnell Daten verlieren kann, wenn man vergisst die AVHDs zu berücksichtigen. 
</p>
        <p>
Aus beiden oben genannten Gründen macht es Sinn, Snapshots zu löschen, sobald diese
nicht mehr gebraucht werden. Snapshots sind keine Technik zur Erstellung von Backups!
Zum löschen eines Snapshots wird dieser einfach selektiert und dann mit “Delete” gelöscht.
Aber ACHTUNG! Die Daten liegen nun immer noch in der AVHD. Erst wenn man die VM in
den Save-State fährt, beginnt Hyper-V mit einem Merge, d.h. die Änderungen der AVHDs
werden jetzt in die jeweils vorausgegangene AVHD bzw. VHD gemerged, sind alle Snapshots
gelöscht, bleibt nur noch die VHD übrig.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_thumb_1.png" width="618" height="383" />
          </a>
        </p>
        <p>
Erst nach Abschluss des Merge-Vorgangs erhält man durch eine Kopie der VHD eine komplette
Sicherung der virtuellen Disk der VM. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=00c085bb-b95a-4ef0-895a-3aa0570c4eba" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Zweiter Termin f&amp;uuml;r VSTS 2010 Info-Day bei der .net Developer Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</id>
    <published>2009-10-23T15:59:38.5006592+02:00</published>
    <updated>2009-10-23T16:00:21.9228121+02:00</updated>
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_thumb.png" width="524" height="102" />
          </a> 
</p>
        <p>
Die <a href="http://www.dotnet-ulm.de/">.net Developer Group Ulm</a> bietet am 27.10.2009
eine kostenlose Ganztagesveranstaltung rund um Visual Studio 2010 ALM (vormals VSTS
2010). Die Nachfrage für diese Veranstaltung ist so hoch, dass wir uns entschieden
haben, die Veranstaltung am 26. November nochmals mit gleichen Sprechern und gleichem
Inhalt zu wiederholen. Wer also noch Interesse hat, sollte sich bald möglichst unter <a href="http://www.dotnet-ulm.de/vsts2010/">http://www.dotnet-ulm.de/vsts2010/</a> registrieren,
wir haben noch ein paar Plätze frei.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6ea65198-bafd-4e34-9040-4a639af3c134" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TFS Basic auf dem Client betreiben</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</id>
    <published>2009-10-20T08:41:16.5958011+02:00</published>
    <updated>2009-10-20T08:41:16.5958011+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_4.png">
            <img title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_thumb_1.png" width="613" height="470" />
          </a>
        </p>
        <p>
          <a href="http://blogs.msdn.com/cbinder">Christian</a> zeigt in einem schönenn Blog-Beitrag
wie einfach sich der TFS Basic installieren lässt (sogar auf einem Client-Betriebssystem)
und wie schnell und einfach damit der Einstieg in die Versionsverwaltung und das Workitem-Tracking
gelingt. Da kann nun wirklich jeder diese Features nutzen, auch Solo-Entwickler.
</p>
        <p>
          <a href="http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx">http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ace09a2b-9ce8-480a-bb2a-d7443f9e811d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 Beta 2 verf&amp;uuml;gbar</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</id>
    <published>2009-10-19T19:00:33.6408639+02:00</published>
    <updated>2009-10-19T20:46:17.3001867+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <span style="line-height: 115%; font-family: 'Arial','sans-serif'; font-size: 10pt">
            <a title="Download Visual Studio 2010 Beta 2" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx">
              <img style="width: 602px; height: 163px" border="0" src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg" width="602" height="163" mce_src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg" />
            </a>
          </span>
        </p>
        <p>
Die Beta 2 von Visual Studio 2010 ist nun für MSDN Subscribers verfügbar, für alle
anderen wird es noch bis Mittwoch dauern. Es gibt eine reihe von wichtigen Änderungen
die Microsoft mit Visual Studio 2010 ankündigt:
</p>
        <ul>
          <li>
Es gibt eine abgespeckte Version von TFS (TFS Basic) die auch auf Client-Betriebssystemen
installiert werden kann. 
</li>
          <li>
TFS ist jetzt in alle versionen von Visual Studio 2010 enthalten (meines Wissen nach
nur bei denen mit MSDN) 
</li>
          <li>
Es gibt ein vereinfachtes Modell der Produkt SKUs (Editionen) 
</li>
          <li>
Neues Logo (siehe oben)</li>
        </ul>
        <p>
Was ich persönlich schade finde: Die Bezeichnung “Team System” verschwindet, es gibt
nun nur noch 
</p>
        <ul>
          <li>
Microsoft® Visual Studio® 2010 Express 
</li>
          <li>
Microsoft® Visual Studio® 2010 Professional 
</li>
          <li>
Microsoft® Visual Studio® 2010 Professional with MSDN 
</li>
          <li>
Microsoft® Visual Studio® 2010 Premium with MSDN 
</li>
          <li>
Microsoft® Visual Studio® 2010 Ultimate with MSDN 
</li>
          <li>
Microsoft® Visual Studio® Test Elements 2010 with MSDN 
</li>
          <li>
Microsoft® Visual Studio® Team Foundation Server 2010 
</li>
          <li>
Microsoft® Visual Studio® Team Lab Management 2010 
</li>
          <li>
Microsoft® Visual Studio® Load Test Virtual User Pack 2010</li>
        </ul>
        <p>
Positiv ist aber, dass die Beta 2 eine Go-Live-Lizenz enthält. Der Launch-Termin wirde
von Microsoft für den 22. März 2010 angekündigt.
</p>
        <p>
          <a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx">http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f6a6d664-e1db-4a09-aac2-23183eb42cfe" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Beispieldaten f&amp;uuml;r Databinding in Expression Blend erzeugen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</id>
    <published>2009-10-15T23:55:32.7623466+02:00</published>
    <updated>2009-10-15T23:55:32.7623466+02:00</updated>
    <category term="WPF / Silverlight" label="WPF / Silverlight" scheme="http://www.artiso.com/ProBlog/CategoryView,category,WPF%2B%2f%2BSilverlight.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In Expression Blend gibt es ein cooles Feature, mit dem Beispieldaten für Databinding
erzeugt werden können. Damit können beispielsweise Listboxen etc. mit Daten befüllt
werden um z.B. DataTemplates im Designer testen zu können.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_thumb.png" width="725" height="452" />
          </a>
        </p>
        <p>
Und auch bei der Ausführung der Anwendung stehen die Daten zur Verfügung. Damit können
schnell und einfach Oberflächenprototypen erstellt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_thumb_1.png" width="422" height="385" />
          </a>
        </p>
        <p>
Eine detaillierte Beschreibung der Funktion findet sich <a href="http://silverzine.com/tutorials/how-to-create-sample-data-in-blend-3/">hier</a>.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9144595b-c0e1-49bd-b682-21f35897ab0b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Advanced Developer Conference in Bonn</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</id>
    <published>2009-10-15T00:07:19.102+02:00</published>
    <updated>2009-10-20T11:01:11.1876255+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_thumb.png" width="664" height="150" />
          </a>
        </p>
        <p>
Auf der diesjährigen ADC hatte ich zwei Vorträge:
</p>
        <ul>
          <li>
            <a href="http://tvt8uq.blu.livefilestore.com/y1pVrYyT8NiRVqhgojr46B0pZM1oHVGL1kknHtwY86fNx3BOqF3AJHj7rXclzg0wA0R_bWDsRAsbyWhtQq_bWbvrw/ADC09%20-%20Effektive%20Prozesse%20durch%20Architektur.pptx?download">Effektive
Prozesse durch Architektur</a>
          </li>
          <li>
            <a href="http://tvt8uq.blu.livefilestore.com/y1pY_unGSIlxvqIIhWcJ4MXWY0_xffVmG1_Obw6PbQAHNUKo0fYLzq-M5_bAoNpiSEMEPpWQGMBR7JB5uSoRMUcoQ/Team%20Organisation3.mmap?download">Organisation
von Entwicklerteams</a>
          </li>
        </ul>
        <p>
Zu beiden Vorträgen gibt es die Unterlagen über den jeweiligen obenstehenden Link.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4c1d1396-b991-40d3-b250-545d929663af" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Alias f&amp;uuml;r gleichnamige Spalten bei MDX-Abfragen in Reporting Services</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</id>
    <published>2009-10-13T02:38:48.329987+02:00</published>
    <updated>2009-10-13T02:38:48.329987+02:00</updated>
    <category term="SQL" label="SQL" scheme="http://www.artiso.com/ProBlog/CategoryView,category,SQL.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hat man eine Query die zwei Spalten mit dem gleichen Namen enthält, dann mekert der
Reporting Services Designer “The query contains more than one unnamed or duplicated
field name. Please specify unique column aliases.” 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_thumb.png" width="377" height="114" />
          </a>
        </p>
        <p>
In der MDX-Abfrage Aliase zu vergeben ist mir nicht gelungen. Glücklicherweise gibt
es aber einen einfacheren Weg das Problem zu lösen. Man geht einfach in die Eigenschaften
des Datasets und dort auf “Fields”. Hier kann man nun einfach einen eindeutigen Alias
angeben.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_thumb_1.png" width="490" height="382" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0925f337-10ae-4d31-ac59-64731aa0ff97" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Daten als Balken in Reporting Services Konfigurieren</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</id>
    <published>2009-10-13T02:26:45.6974042+02:00</published>
    <updated>2009-10-13T02:26:45.6974042+02:00</updated>
    <category term="SQL" label="SQL" scheme="http://www.artiso.com/ProBlog/CategoryView,category,SQL.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Oft möchte man Werte, z.B. Prozentwerte als kleine Balken in einem Report darstellen:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb.png" width="244" height="102" />
          </a>
        </p>
        <p>
Wie man das mit Hilfe der Reporting Services bewerkstelligt, ist im Folgenden kurz
beschrieben. 
</p>
        <ul>
          <li>
Zunächst erstellt man sich eine Grafik mit dem gewünschten Verlauf</li>
          <li>
Dann fügt man eine neue Spalte mit dieser Grafik in den Report ein. Der Grafik gibt
man ein günstige Breite, z.B. 100px.</li>
          <li>
Für die Grafik stellt man nun ein Padding für den rechten Rand ein und zwar über eine
Expression:</li>
        </ul>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb_1.png" width="244" height="204" />
          </a>
        </p>
        <ul>
          <li>
In der Expression gibt man nun eine Formel ein, die den rechten Rand so berechnet,
dass er bei 0 die Breite des Bildes erreicht und beim Maximalwert 0.</li>
        </ul>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb_2.png" width="466" height="424" />
          </a>
        </p>
        <ul>
          <li>
In obigem Beispiel hat das Bild eine Breite von 100pt und soll einen Maximalwert von
1.5 anzeigen, so dass bei 1.5 der Wert für das Padding 0 ist und bei 0 ist er 100
(1,5 * 75). Damit zeigt der Balken die Werte grafisch an. Auf Wunsch kann man natürlich
den Wertebereich auch min Min() und Max() ermitteln.</li>
        </ul>
        <p>
          <a href="http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx">http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=491eeae7-9f86-429d-9030-5ccda523ef86" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Datenbanktabelle Suspect</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</id>
    <published>2009-10-12T08:31:01.4858174+02:00</published>
    <updated>2009-10-12T08:31:01.4858174+02:00</updated>
    <category term="SQL" label="SQL" scheme="http://www.artiso.com/ProBlog/CategoryView,category,SQL.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Meinem SQL-Server kam bei einer meiner Datenbank-Tabellen was supekt vor jedenfalls
zeigte er in Klammern hinter der Tabelle ein (Suspect) an und ich konnte auf die Tabelle
nicht mehr zugreifen. Ärgerlich war, dass es sich dabei um die Config-Datenbenk meines
SharePoint-Servers handelte und damit mein kompletter SharePoint-Srever lahm gelegt
war. Glücklicherweise fand ich ein kleines Script, das das Problem in Sekunden behoben
hat.
</p>
        <p>
          <span style="color: #ff0000">
            <em>
              <font color="#0000a0">EXEC sp_resetstatus 'DBname'<br /><br />
ALTER DATABASE DBname SET EMERGENCY<br /><br />
DBCC checkdb('DBname')<br /><br />
ALTER DATABASE DBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE<br /><br />
DBCC CheckDB ('DBname', REPAIR_ALLOW_DATA_LOSS)<br /><br />
ALTER DATABASE DBname SET MULTI_USER</font>
            </em>
          </span>
          <br />
          <br />
Dort habe ich einfach meinen Datenbanknamen entsprechend eingesetzt und schon lief
der SharePoint wieder. Vielen Dank an der Stelle an Mohamad.
</p>
        <p>
          <a href="http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html">http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e8b7ec65-7928-4aa0-8c85-67ecb405c54e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TFS f&amp;uuml;r kleine Teams</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</id>
    <published>2009-10-10T00:45:53.4620954+02:00</published>
    <updated>2009-10-10T00:45:53.4620954+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit Team Foundation Server 2010 wird der TFS nun auch für kleinere Teams noch interessanter
als bisher. Es gibt eine Reihe von Vorteilen gegenüber der aktuellen Version:
</p>
        <ul>
          <li>
            <strong>Preis</strong>
            <br />
Es gibt im Moment noch keine abschließenden Informationen über das Pricing, aber voraussichtlich
wird der Preis zukünftig wohl kaum noch ein Argument sien, den TFS nicht zu nutzen.</li>
          <li>
            <strong>Systemanforderungen</strong>
            <br />
Die Anforderungen an das System sind deutlich geringer als bei TFS 2008. So kann der
TFS nun auf einem Domänen-Controller und sogar auf Client-Betriebssystemen installiert
werden. Zudem können nun einige Komponenten wie SharePoint und Reporting optional
installiert werden.</li>
          <li>
            <strong>Installation</strong>
            <br />
Der Installationsvorgang wurde deutlich vereinfacht.</li>
        </ul>
        <p>
Damit kommt Microsoft dem Slogen “ALM for the masses” einen großen Schritt näher.
</p>
        <p>
Weitere Details gibt es auf dem Blog von Brian Harry:<br /><a href="http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx">http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Leere Toolbox f&amp;uuml;r TFS Process Template Editor</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</id>
    <published>2009-09-29T17:12:01.4338106+02:00</published>
    <updated>2009-09-29T17:12:01.4338106+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem Work Item Type Designer (WIT Designer) können Work Item Type Definitionen
einfach und bequem angepasst werden. Der WIT Designer ist Bestandteil der <a href="http://msdn.microsoft.com/de-de/tfs2008/bb980963.aspx">TFS
Power Tools</a>. 
</p>
        <p>
Mit dem WIT Designer kann man auch die Workflows auf den Work Item Types grafisch
bearbeiten. Dazu kann man aus der Toolbox einfach neue States und Transistions auf
das Workflow-Diagramm ziehen … zumindest wenn die Toolbox Elemente enthält. Sollte
die Toolbox einmal leer sein, dann gibt es eine nicht ganz elegante aber wirksame
Methode, man löscht einfach alle toolbox*.tdb Dateien und zwar au dem Ordner 
</p>
        <p>
C:\Users\&lt;USERNAME&gt;\AppData\Local\Microsoft\VisualStudio\8.0.
</p>
        <p>
Danach erscheinen die Elemente ganz normal.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e71ec982-e864-4dcb-ab28-b1a6c007ee9a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Neue .NET Usergroup in Augsburg</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</id>
    <published>2009-09-18T19:22:53.143+02:00</published>
    <updated>2009-10-14T09:38:54.801155+02:00</updated>
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_thumb.png" width="558" height="146" />
          </a>
        </p>
        <p>
Wir haben einen neuen Nachbarn bekommen :-) 
</p>
        <p>
In Augsburg gibt es nun auch eine .net Usergroup. Diese wird von Tobias Schmid geleitet.
Damit ist nun also die Lücke zwischen München und Ulm geschlossen und ich freue mich
auf eine gute Zusammenarbeit. 
</p>
        <p>
Apropos Zusammenarbeit, ganz besonders freut es mich, dass ich am 14.10.2009 beim
Gründungstreffen einen Vortrag zum Thema “Durchgängige Entwicklungsprozesse mit Visual
Studio Team System” halten darf.
</p>
        <p>
Dann auf gute Nachbarschaft :-)
</p>
        <p>
          <a href="http://www.ug-augsburg.net/" target="_blank">http://www.ug-augsburg.net/</a>
          <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1a712560-d999-4ed2-bddf-e8a203867d35" />
        </p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Build Automation in TFS 2010 &amp;ndash; Vortrag bei TSUG-VE</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</id>
    <published>2009-09-16T09:55:59.161993+02:00</published>
    <updated>2009-09-16T09:55:59.161993+02:00</updated>
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Mit Martin Woodward haben wir einen der weltweit bekanntesten Team System MVPs zu
Gast der in seinem Vortrag über die neuen Möglichkeiten des Build Systems im TFS 2010
informieren wird. Dass sich beim Build in TFS2010 einiges getan hat, wird bereits
aus der Auflistung der Hauptpunkte von Martins Vortrag ersichtlich. Es wird um Private
Builds, Gated Checkins und um die neuen workflow-basierten Builddefinitionen gehen. 
</p>
        <p>
Über TSUG-VE<br />
Die Team System User Group – Virtual Edition ist eine weltweite Usergroup zum Thema
Team System. Die Treffen finden virtuell in Live Meeting statt. Weitere Informationen
gibt’s unter <a href="http://www.tsug-ve.com">http://www.tsug-ve.com</a>. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60432774-4bef-49f4-80c0-6b358b74d6ef" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Kostenloser Info-Tag zu Visual Studio Team System 2010 bei .net Developer-Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</id>
    <published>2009-09-16T09:13:46.1147496+02:00</published>
    <updated>2009-09-16T09:13:46.1147496+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="headerImage" border="0" alt="headerImage" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_thumb.png" width="553" height="129" />
          </a>
        </p>
        <p>
Am 27.10.09 veranstaltet die .net Developer Group eine kostenlose Informationsveranstaltung
rund um Visual Studio Team System 2010. Ein Tag voll gepackt mit wertvollen Informationen
rund um die neue Version der Microsoft ALM-Plattform.
</p>
        <blockquote>
          <p>
Mit Visual Studio Team System 2010 führt Microsoft voraussichtlich Anfang nächsten
Jahres eine neue Version seiner Entwicklungsplattform ein, die mit zahlreichen Neuerungen
aufwartet. Diese neue Version wartet mit einer großen Zahl umfangreicher Neuerungen
auf wie z.B.: 
</p>
          <ul>
            <li>
Architektur-Diagramme und UML-Support 
</li>
            <li>
Erweiterte Funktionen für Test-Planung und Test-Durchführung 
</li>
            <li>
Unterstützung von UI-Tests 
</li>
            <li>
Verbesserte Verwaltung von Builds 
</li>
            <li>
Verbesserte Verwaltung von Work Items 
</li>
            <li>
Neue Reporting-Funktionen speziell für kleinere Teams 
</li>
            <li>
Und vieles mehr</li>
          </ul>
          <p>
Um diese Umfangreichen Neuerungen alle vorstellen zu können, veranstaltet die .Net
Developer-Group Ulm erstmalig einen ganztägigen Event um damit der Fülle von Funktionen
auch gerecht zu werden. Dabei werden die beiden Referenten Christian Binder (<a href="http://blogs.msdn.com/cbinder">http://blogs.msdn.com/cbinder</a>)
und Thomas Schissler (<a href="http://www.artiso.com/problog">http://www.artiso.com/problog</a>)
nicht nur die neuen Funktionen vorstellen, sondern auch aufzeigen, welche Probleme
aus dem Entwickler-Alltag damit gelöst werden können. Der Vortrag richtet sich dabei
nicht nur an Entwickler und Projektleiter die bereits mit Team System arbeiten, sondern
erläutert auch grundsätzliche Konzepte und bereits bestehenden Funktionen der Tools
Visual Studio Team System und Team Foundation Server und bietet damit auch denjenigen
einen guten Einstieg, die sich noch nicht intensiv mit Microsofts ALM-Plattform auseinandergesetzt
haben. 
</p>
        </blockquote>
        <p>
Für die Veranstaltung ist eine Registrierung erforderlich. Interessenten können sich
unter <a href="http://www.dotnet-ulm.de/vsts2010">http://www.dotnet-ulm.de/vsts2010</a> kostenlos
registrieren.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=62057eac-7921-4660-9638-3140ab701ea2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Problem beim Installieren eines TFS 2010 Beta 1 mit einem separaten SharePoint Server</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</id>
    <published>2009-07-14T22:18:47.2933685+02:00</published>
    <updated>2009-07-14T22:18:47.2933685+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Beim Installieren eines Team Foundation Server 2010 Beta 1 habe ich einen Fehler TF254038
bekommen. Beim Anlegen einer SharePoint Web Application auf dem TFS hat der Wizard
behauptet ich hätte die SharePoint Extensions nicht installiert.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="170" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_thumb.png" width="394" border="0" />
          </a>
        </p>
        <p>
Ich habe für den TFS und den SharePoint Server zwei getrennte Maschinen. Das Problem
lag letztendlich darin, dass die Firewall auf der SharePoint Maschine den Zugriff
auf die SharePoint Central Administration (Port 17012) geblockt hat. Nachdem ich den
freigegeben habe, lief die Installation problemlos durch.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=65a4bd4a-1ae4-47cc-88a3-bad499634762" />
      </div>
    </content>
  </entry>
  <entry>
    <title>UI-Automation ServerSide Provider &amp;ndash; 3rd Party Controls accessible machen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</id>
    <published>2009-07-03T14:10:58.8788293+02:00</published>
    <updated>2009-07-03T14:13:13.1160554+02:00</updated>
    <category term="UI Automation" label="UI Automation" scheme="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie in diesem Blog bereits an <a href="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx">anderen
Stellen</a> erläutert, eignet sich das UIA (UI Automation Framework) sehr gut, um
UI-Tests aufzubauen. Wer sich mit dieser Möglichkeit beschäftigt wird aber früher
oder später auf das Problem stoßen, dass UIA Support bei WinForms Controls nicht flächendeckend
gegeben ist, vor allem bei 3rd Party Controls sieht es da oft eher mau aus.
</p>
        <p>
Ich habe <a href="http://www.artiso.com/ProBlog/PermaLink,guid,35d09c0e-d00b-4025-b896-af96007c8a2f.aspx">hier</a> beschrieben,
wie man mit einem ServerSide Provider diese Lücken selbst schließen kann. Das Standardvorgehen
sieht dabei vor, dass man ein eigenes Control erstellt, das man dann von dem Ausgangscontrol
ableitet. Diese Vorgehen ist in der Praxis allerdings nicht unproblematisch. Zum einen
muss man die abgeleiteten Controls für jedes neue Release der Ausgangscontrols aktualisieren
und zum zweiten ist es nicht gerade schön in einer bestehenden Anwendung alle Controls
gegen die abgeleitete Variante austauschen zu müssen. 
</p>
        <p>
Deshalb möchte ich hier einen alternativen Weg vorstellen. Die Idee beruht darauf,
dass die Controls, denen es an Accesibility fehlt jeweils in ein Panel platziert werden
und auf diesem Panel dann die entsprechenden Patterns implementiert werden. Das Panel
kann die Operationen dann an das Control in seinem Bauch weiterleiten. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_thumb.png" width="439" height="241" />
          </a>
        </p>
        <p>
Ich habe mal ein Beispiel für Janus Calendar Controls gebaut. Zunächst habe ich mir
ein UIA-Panel erstellt, von dem ich dann die weiteren Panels für die spezifischen
Controls ableiten kann.
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">using</span> System;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">using</span> System.Drawing;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">using</span> System.Security.Permissions;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">using</span> System.Windows.Automation;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">using</span> System.Windows.Automation.Provider;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">using</span> System.Windows.Forms;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">namespace</span> WindowsFormsApplication1</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> UIAPanel
: Panel, IRawElementProviderSimple</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">public</span> UIAPanel()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">this</span>.BackColor
= Color.Yellow;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">this</span>.Height
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">this</span>.Width
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">this</span>.AutoSize
= <span style="color: #0000ff">true</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span> [PermissionSetAttribute(SecurityAction.Demand,
Unrestricted = <span style="color: #0000ff">true</span>)]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">protected</span>
              <span style="color: #0000ff">override</span>
              <span style="color: #0000ff">void</span> WndProc(<span style="color: #0000ff">ref</span> Message
m)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 23:</span>
              <span style="color: #008000">//
0x3D == WM_GETOBJECT</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 24:</span> Int32
param = 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">if</span> (Int32.TryParse(m.LParam.ToString(), <span style="color: #0000ff">out</span> param))</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">if</span> ((m.Msg
== 0x3D) &amp;&amp; (param == AutomationInteropProvider.RootObjectId))</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 28:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 29:</span> m.Result
= AutomationInteropProvider.ReturnRawElementProvider(</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 30:</span> Handle,
m.WParam, m.LParam, (IRawElementProviderSimple)<span style="color: #0000ff">this</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 31:</span>
              <span style="color: #0000ff">return</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 32:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 33:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 34:</span>
              <span style="color: #0000ff">base</span>.WndProc(<span style="color: #0000ff">ref</span> m);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 35:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 36:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 37:</span>
              <span style="color: #cc6633">#region</span> IRawElementProviderSimple
Members</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 38:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 39:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">object</span> GetPatternProvider(<span style="color: #0000ff">int</span> patternId)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 40:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 41:</span>
              <span style="color: #0000ff">if</span> (patternId
== ValuePatternIdentifiers.Pattern.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 42:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 43:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">this</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 44:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 45:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 46:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 47:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">null</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 48:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 49:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 50:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 51:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">object</span> GetPropertyValue(<span style="color: #0000ff">int</span> propertyId)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 52:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 53:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ClassNameProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 54:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 55:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"CalendarPanel"</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 56:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 57:</span>
              <span style="color: #0000ff">else</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ControlTypeProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 58:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 59:</span>
              <span style="color: #0000ff">return</span> ControlType.MenuBar.Id;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 60:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 61:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 62:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.HelpTextProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 63:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 64:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Help
for CalendarPanel"</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 65:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 66:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 67:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.AutomationIdProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 68:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 69:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">this</span>.Name; </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 70:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 71:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 72:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.IsEnabledProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 73:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 74:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">true</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 75:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 76:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 77:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 78:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 79:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">null</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 80:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 81:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 82:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 83:</span>
              <span style="color: #0000ff">public</span> IRawElementProviderSimple
HostRawElementProvider</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 84:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 85:</span> get</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 86:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 87:</span>
              <span style="color: #0000ff">return</span> AutomationInteropProvider.HostProviderFromHandle(Handle);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 88:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 89:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 90:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 91:</span>
              <span style="color: #0000ff">public</span> ProviderOptions
ProviderOptions</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 92:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 93:</span> get</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 94:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 95:</span>
              <span style="color: #0000ff">return</span> ProviderOptions.ServerSideProvider;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 96:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 97:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 98:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 99:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 100:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 101:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 102:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Dieses Panel stellt einen ServerSide Provider zur Verfügung. Wir können nun von diesem
Control ableiten und ein entsprechendes Pattern, z.B. das SetValue Pattern implementieren:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">using</span> System;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">using</span> System.Windows.Automation.Provider;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">using</span> System.Windows.Forms;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">namespace</span> WindowsFormsApplication1</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> CalendarPanel
: UIAPanel, IValueProvider</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">private</span> Janus.Windows.Schedule.Calendar
control;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">public</span> Janus.Windows.Schedule.Calendar
Control</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span> get</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">if</span> (control
== <span style="color: #0000ff">null</span>)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.Controls.Count
&gt; 0 &amp;&amp; <span style="color: #0000ff">this</span>.Controls[0].GetType() == <span style="color: #0000ff">typeof</span>(Janus.Windows.Schedule.Calendar))</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span> control
= (Janus.Windows.Schedule.Calendar)<span style="color: #0000ff">this</span>.Controls[0];</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">return</span> control;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 23:</span>
              <span style="color: #cc6633">#region</span> IValueProvider
Members</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 24:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> IsReadOnly</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 27:</span> get </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 28:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 29:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">false</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 30:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 31:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 32:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 33:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SetValue(<span style="color: #0000ff">string</span><span style="color: #0000ff">value</span>)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 34:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 35:</span>
              <span style="color: #0000ff">this</span>.BeginInvoke((MethodInvoker)<span style="color: #0000ff">delegate</span>()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 36:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 37:</span> DateTime
date = DateTime.Parse(<span style="color: #0000ff">value</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 38:</span> Control.SelectionRange
= <span style="color: #0000ff">new</span> Janus.Windows.Schedule.DateRange(date, date);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 39:</span> });</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 40:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 41:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 42:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> Value</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 43:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 44:</span> get </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 45:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 46:</span>
              <span style="color: #0000ff">return</span> Control.SelectionRange.End.ToShortDateString(); </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 47:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 48:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 49:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 50:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 51:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 52:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Wenn wir nun das Calendar_Control nicht direkt auf unserer Form platzieren, sondern
in einem solchen CalendarPanel ablegen, können wir eine Automatisierung über die UIA
gegen dieses Panel implementieren. Was nun noch optimiert werden soll, ist dass die
ganzen Controls nicht händisch in die jeweiligen Panels platziert werden sollen, sondern
dies soll nach Möglichkeit automatisiert werden. der Ansatz hierbei ist, dass alle
Controls auf der Form beim Laden untersucht werden und für die gewünschten Controls
dynamisch entsprechende Panels erzeugt werden sollen, in die dann die Controls platziert
werden. Dieser Ansatz bietet zudem den Vorteil, dass man die UIA-Panels nur dann nutz,
wenn man UI-Test ausführen möchte. Bei der Release-Version sind diese dann nicht enthalten.
Zwar unterscheidet sich dadurch Release und Test-Version geringfügig, jedoch sollten
diese Implikationen vernachlässigbar sein, vor allem dann, wenn beim Entwickeln komplett
auf die Panels verzichtet wird und diese wirklich nur für die UI-Tests genutzt werden.
</p>
        <p>
Der Code dazu sieht dann so aus:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> PlaceControlsIntoPanel(Control.ControlCollection
controls)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> Panel
uiaPanel;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">foreach</span> (Control
automationControl <span style="color: #0000ff">in</span> controls.OfType&lt;Control&gt;().ToList())</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">switch</span> (automationControl.GetType().ToString())</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">case</span>
              <span style="color: #006080">"Janus.Windows.CalendarCombo.CalendarCombo"</span>:</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> uiaPanel
= <span style="color: #0000ff">new</span> CalendarComboPanel();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">break</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">case</span>
              <span style="color: #006080">"Janus.Windows.Schedule.Calendar"</span>:</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span> uiaPanel
= <span style="color: #0000ff">new</span> CalendarPanel();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">break</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">default</span>:</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">if</span> (automationControl.HasChildren)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 23:</span> PlaceControlsIntoPanel(automationControl.Controls);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 24:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">continue</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 26:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 27:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 28:</span> uiaPanel.Name
= <span style="color: #006080">"p_"</span> + automationControl.Name;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 29:</span> uiaPanel.Top
= automationControl.Top;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 30:</span> uiaPanel.Left
= automationControl.Left;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 31:</span> uiaPanel.Controls.Add(automationControl);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 32:</span> automationControl.Top
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 33:</span> automationControl.Left
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 34:</span> controls.Add(uiaPanel);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 35:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 36:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Wird die Anwendung dann inkl. Test-Client ausgeführt, sieht das so aus:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_thumb_1.png" width="397" height="491" />
          </a>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:b7242b04-359d-4031-997a-4b96134ac8f8" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/UIAPanelDemo.zip" target="_blank">Download
Demo-Code</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=17f081a9-c7fe-4c59-946e-ad63eacae539" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Einf&amp;uuml;hrung von VSTS bei Infragistics &amp;ndash; Vortrag bei TSUG-VE</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</id>
    <published>2009-06-04T00:02:14.9232269+02:00</published>
    <updated>2009-06-04T00:02:57.0953718+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Im Juni werden wir beim EMEA-Meeting der Team System User Group Virtual Edition Ed
Blankenship als Sprecher haben. Ed ist MVP für Team System und Release Manager bei <a href="http://www.infragistics.com">Infragistics</a>,
dem führenden Hersteller von UI-Komponenten. Er wird in seinem Vortrag über die Erfahrungen
bei der Einführung von VSTS bei Infragistics berichten. Dabei werden die verschiedenen
Bereiche wie Versionsverwaltung, Build Management, Work Item tracking, das Management
globaler Teams, automatisiertes Testen und vieles mehr aus einer Anwendersicht beleuchtet.
Ein wirklich sehenswerter Erfahrungsbericht aus der Praxis.
</p>
        <p>
Weitere Informationen unter <a href="http://www.tsug-ve.com">www.tsug-ve.com</a>. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Kostenloses Tool zur Auswertung der Historie von TFS Work Items</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx</id>
    <published>2009-06-03T16:06:35.9453585+02:00</published>
    <updated>2009-06-03T16:27:14.5626606+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im Team Foundation Server werden Änderungen an den Inhalten der Workitems in einer
Historie festgehalten. Diese Historie kann man auf jedem einzelnen Workitem einsehen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenlosesToolzurAuswertungderHostoriev_E58B/image_2.png">
            <img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="398" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenlosesToolzurAuswertungderHostoriev_E58B/image_thumb.png" width="313" border="0" />
          </a>
        </p>
        <p>
Mit einem kostenlosen Excel-Addin können diese Auswertungen auch massenhaft durchgeführt
und so über ganze Projekte Auswertungen über die Historie erstellt werden. Dazu wird
zunächst ein Zeitraum und ein Intervall ausgewählt (alternativ kann man auch einen
bestimmten Zeitpunkt wählen):
</p>
        <p>
          <img src="http://www.almtools.de/contentImages/screenshots/Period.png" />
        </p>
        <p>
Nun werden für jeden gewählten Zeitpunkt die Work Items in dem jeweiligen Zustand
in eine Excel-Tabelle eingetragen. Diese kann nun sehr schön über eine Pivot-Tabelle
oder ein Pivot-Chart ausgewertet werden um so den zeitlichen Verlauf bestimmter Kennwerte
abzubilden.
</p>
        <p>
          <img src="http://www.almtools.de/contentImages/screenshots/PivotTableAndChart.png" />
        </p>
        <p>
Natürlich lassen sich solche Ergebnisse auch über das DataWarehouse im TFS ermitteln,
jedoch besitzt dieses Tool zwei Vorteile:
</p>
        <ol>
          <li>
Es ist wesentlich einfacher zu bedienen und übersichtlicher, so dass damit auch Ad-Hoc
Reporting für Anwender möglich wird. 
</li>
          <li>
Es grift auf alle Workitem-Daten zurück, nicht nur auf die, die im DataWareHouse konfigurierten.
Einzige Ausnahme sind Links und Attachments, die in beiden Varianten nicht Teil der
Historie sind.</li>
        </ol>
        <p>
Weitere Informationen und den kostenlosen Download gibtes unter <a href="http://www.alm-tools.de/?Product=5">http://www.alm-tools.de/?Product=5</a></p>
        <p>
Ein Video das die Fuinktionsweise des Tools demonstriert kann <a href="http://www.alm-tools.de/VideoPlayer.aspx?tag=http://www.almtools.de/video/WorkitemHistoryTool.wmv">hier</a> agezeigt
werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1715549c-3e4c-49f1-8e43-052f9c86bf27" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Neue Tools rund um den Team Foundation Server unter www.alm-tools.de</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx</id>
    <published>2009-06-02T15:45:30.0759056+02:00</published>
    <updated>2009-06-02T15:45:30.0759056+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeueToolsrundumdenTeamFoundationServe.de_DD40/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeueToolsrundumdenTeamFoundationServe.de_DD40/image_thumb.png" width="993" height="102" />
          </a>
        </p>
        <p>
Eigentlich versuche ich meinen Blog weitgehend werbefrei zu halten. Diesesmal möchte
ich aber doch kurz auf die Seite <a href="http://www.alm-tools.de">www.alm-tools.de</a> hinweisen,
die mein Arbeitgeber artiso betreibt. Hier haben wir vor Kurzem eine Reihe neuer Tools
rund um das Thema TFS und ALM (Application Lifecycle Management) veröffentlich, zum
Teil kostenlos. Zudem gibt es hier inzwischen auch ein kleines Archiv mit Videos rund
um das Thema das wir kontinuierlich ausbauen. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9bebf3b3-b620-4217-9dc5-95fc17e5ac52" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TF14087 Fehler beim Mergen in der TFS Versionsverwaltung</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx</id>
    <published>2009-06-02T08:39:21.3341417+02:00</published>
    <updated>2009-06-02T08:39:21.3341417+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF14087FehlerbeimMergeninderTFSVersionsv_135DF/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF14087FehlerbeimMergeninderTFSVersionsv_135DF/image_thumb.png" width="858" height="203" />
          </a>
        </p>
        <p>
Mein Kollege Mark Bulmahn hat in einem Screencast ein Problem näher untersucht, das
beim Merge in der TFS Source Countrol auftreten kann. Dabei geht es vor allem darum,
dass Verschiebe-Operationen im Visual Studio Solution Explorer in der Source Control
nicht als Verschiebe-Operation sondern als Delete und Add ausgeführt wird. Das führt
dann zu Problemen bei einem späteren Merge.In dem Screencast sieht man, wie dieses
Problem vermieden und auch wieder repariert werden kann.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:a0099499-965d-40d0-b4f4-98ea2ad05322" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF14087FehlerbeimMergeninderTFSVersionsv_135DF/Tips_BranchingAndMergingScreencast.wmv" target="_blank">Download
Video</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=888a0ead-fcf6-43a9-9253-af7db4d7340c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TFS 2010 Beta 1 auf Windows 2008 Server R2 RC</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx</id>
    <published>2009-05-23T14:27:30.0598099+02:00</published>
    <updated>2009-05-23T14:27:30.0598099+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wenn schon mit Pre-Releases arbeiten, dann richtig habe ich mir gedacht und versucht
den Team Foundation Server 2010 Beta 1 auf dem Windows 2008 Server R2 RC zu installieren.
Nach einer kurzen Recherche im Internet bin ich auf diesen <a href="http://blogs.msdn.com/dstfs/archive/2009/05/15/installing-tfs-2010-on-windows-server-2008-r2-rc.aspx">Blog-Post</a> gestoßen.
Mit den Informationen dort ist es mir tatsächlich gelungen, den TFS 2010 Beta1 und
VSTS 2010 Beta1 auf dem Win2008R2 RC zu installieren. Damit komme ich nun auch auf
meiner Demo-Maschine in den Genuss der Desctop-Experience von Win2008R2 :-) 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFS2010Beta1aufWindows2008ServerR2RC_CAFC/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="413" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFS2010Beta1aufWindows2008ServerR2RC_CAFC/image_thumb.png" width="497" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ebb91709-b2e4-45df-b35b-abffba6ee998" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Mai-Treffen der Team System User Group Virtual Edition</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx</id>
    <published>2009-05-20T14:42:09.664973+02:00</published>
    <updated>2009-05-20T14:42:09.664973+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Im Mai haben wir bei der TSUG-VE Ian Ceicis als Sprecher zum Thema Projekt Management
mit TFS 2010. Er wird in seinem Vortrag die Neuerungen rund um das Workitem-Tracking
in TFS 2010 vorstellen.
</p>
        <blockquote>
          <p>
Want to get the skinny on the latest enhancements coming in TFS 2010, come see demos
of the updated MSF Agile template, the new Agile workbooks, the new Excel reports,
and the Microsoft Project client improvements such as Hierarchical work items, rollups,
and project summary tasks. This session will be packed with demos from  Beta
1 and will be a great way to start getting familiar with the new tools coming in 2010.
Bring your hardest questions, join the conversation, and walk away with the ability
to see how your next project will run smoothly if you start using TFS 2010. 
</p>
          <p>
This month's meeting is being presented by Ian Ceicys.  Ian is a member of Microsoft's
Global ALM Practice and an active member of the VSTS Rangers. 
</p>
          <p>
 
</p>
        </blockquote>
        <p>
Das Treffen findet am Donnerstag, 21.05.2009 um 19:00 statt.
</p>
        <p>
Weitere Infos unter <a href="http://www.tsug-ve.com">http://www.tsug-ve.com</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=afcc8eaf-9677-433f-9aff-ec3e45d3119d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>MSDN Dokumentation zu Visual Studio 2010 Beta 1 online</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx</id>
    <published>2009-05-19T08:15:59.5613188+02:00</published>
    <updated>2009-05-19T08:15:59.5613188+02:00</updated>
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MSDNDokumentationzuVisualStudio2010Beta1_73EB/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="71" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MSDNDokumentationzuVisualStudio2010Beta1_73EB/image_thumb.png" width="543" border="0" />
          </a>
        </p>
        <p>
Unter <a title="http://msdn.microsoft.com/en-us/library/dd831853(VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd831853(VS.100).aspx">http://msdn.microsoft.com/en-us/library/dd831853(VS.100).aspx</a> steht
inzwischen auch die Dokumentation für das .Net Framework 4 Beta 1 und Visual Studio
2010 Beta 1 zur Verfügung. Für die Beta 1 wird es nur eine Online-Version der Dokumentation
geben, eine lokale Installation wird erst mit einer späteren Version verfügbar sein,
was sicher bei einer Beta-Dokumentation auch Sinn macht.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0b5253e6-bc40-46be-b074-1b26f6453d22" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 Beta 1 ab heute verf&amp;uuml;gbar &amp;ndash; jetzt offiziell</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx</id>
    <published>2009-05-18T16:50:56.415+02:00</published>
    <updated>2009-05-18T21:39:04.1982973+02:00</updated>
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Nachdem es bisher nur Gerüchte gab, nun ist es offiziell. Visual Studio 2010 Beta
1 wird noch heute für MSDN-User verfügbar sein. Für die Öffentlichkeit gibt es den
Download dann ab Mittwoch. 
</p>
        <p>
Diesmal aus einer verlässlichen Quelle (Soma Somasegar, Corporate Vice President Microsofts)
</p>
        <p>
          <a title="Visual Studio 2010 and .NET FX 4 Beta 1 ships!" href="http://blogs.msdn.com/somasegar/archive/2009/05/18/visual-studio-2010-and-net-fx-4-beta-1-ships.aspx">Visual
Studio 2010 and .NET FX 4 Beta 1 ships!</a>
        </p>
        <p>
Update: Ich habe die Bits inzwischen runtergeladen. Da haben die Jungs wirklich noch
einiges reingepackt gegenüber den früheren CTPs. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c241402e-d7da-4e21-8080-a7798c44ab7d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Expression Blend 3 und Team Foundation Server</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx</id>
    <published>2009-05-15T00:49:23.116+02:00</published>
    <updated>2009-05-18T21:43:09.3404912+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="WPF / Silverlight" label="WPF / Silverlight" scheme="http://www.artiso.com/ProBlog/CategoryView,category,WPF%2B%2f%2BSilverlight.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_2.png">
            <img title="image" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="79" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_thumb.png" width="208" border="0" />
          </a>    <font size="7"><strong>&amp; </strong></font> <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/Untitled_2.png"><img title="Untitled" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="123" alt="Untitled" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/Untitled_thumb.png" width="204" border="0" /></a></p>
        <p>
Mit der Version 3 des Design-Tools für WPF und SilverLight, <a href="http://www.microsoft.com/expression/try-it/blendpreview.aspx">Expression
Blend</a> bekommt nun endlich die Unterstützung für den Team Foundation Server um
die Source-Dateien in der Versionsverwaltung abzulegen. Hierzu muss ein entsprechendes <a href="http://code.msdn.microsoft.com/KB967483">Hotfix</a> installiert
werden. Dann hat man im Project-View zusätzliche Icons die den Auscheck-Status der
Dateien anzeigt und im Kontext-Menü befinden sich entsprechende Kommandos für die
Versionsverwaltung.
</p>
        <p>
          <strong>Hinweis:</strong> Damit das beim ersten Start auch wirklich funktioniert,
muss man im Visual Studio den Team Explorer wenigstens einmal gestartet haben und
dort den Server registrieren. Sonst bekommt man die Meldung "Unable to determine workspace"
im Expression Blend.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_10.png">
            <img title="image" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="469" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_thumb_4.png" width="289" border="0" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Beim Checkin ist auch die sehr nützliche Funktion zur Verknüpfung von Workitems beim
Checkin verfügbar.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_12.png">
            <img title="image" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="338" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_thumb_5.png" width="552" border="0" />
          </a>
        </p>
        <p>
Damit kann Expression Blend nun endlich in den Entwicklungs-Prozess von Software-Anwendungen
integriert werden und steht nicht nur als separates Design-Tool bereit.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=be03acd8-8066-4143-aaf0-1f44b8490902" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Bereits &amp;uuml;ber 30 Anmeldungen zum .Net Open Space S&amp;uuml;d 2009</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx</id>
    <published>2009-05-13T16:19:20.5921913+02:00</published>
    <updated>2009-05-13T16:19:20.5921913+02:00</updated>
    <category term=".Net Openspace S&amp;#252;d 2009" label=".Net Openspace S&amp;#252;d 2009" scheme="http://www.artiso.com/ProBlog/CategoryView,category,.Net%2BOpenspace%2BS%c3%bcd%2B2009.aspx" />
    <category term="News" label="News" scheme="http://www.artiso.com/ProBlog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/ct.ashx?id=201d2d6f-99dc-4525-9097-b5a60d70e4f5&amp;url=http%3a%2f%2fulm.netopenspace.de%2f">
            <img alt=".NET Open Space vom 11.07. bis 12.07.2009 in Ulm" src="http://ulm.netopenspace.de/2009/GetFile.aspx?File=Logos/nos-logo-1-2009.png" border="0" />
          </a>
        </p>
        <p>
Nach rund einer Woche ist bereits die Hälfte der Plätze beim <a href="http://ulm.netopenspace.de/">.Net
Open Space Süd 2009</a> vergeben. Stand heute haben wir 33 Anmeldungen und es sind
ein paar hochkarätige .Net Experten darunter. Wer also noch dabei sein will, sollte
nicht zögern, sondern sich gleich auf die Teilnehmerliste eintragen.
</p>
        <p>
Wir sehen uns am 11/12. Juli in Ulm!
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=57d4f32e-190a-4b11-aca8-61f3522b00f0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Problem beim Anlegen eines Team-Projektes</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx</id>
    <published>2009-05-13T16:15:29.1219599+02:00</published>
    <updated>2009-05-13T16:15:29.1219599+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Auf einer neuen TFS-Instanz hatte ich eben ein seltsames Phänomen. Ich konnte das
erste Team-Projekt problemlos anlegen. Dazu verwendete ich einen Team_Explorer mit
einer Visual Studio Shell Installation auf dem Server. Als ich allerdings das zweite
Projekt anlegen wollte, kam eine Fehlermeldung, dass mir die Berechtigungen auf den
Reporting Services fehlen. Seltsam nur, dass es beim ersten Projekt geklappt hat und
dazwischen nichts geändert wurde. Mit einem kleinen Trick konnte ich dann doch ein
zweites Projekt anlegen, nämlich indem ich alle Projekte aus dem Team-Explorer entfernt
habe. Dann konnte ich wieder genau ein neues anlegen. 
</p>
        <p>
Die eigentliche Lösung für das Problem brachte aber die Installation des SP1 auf dem
Server. Dabei ist zu beachten, dass das SP1 für den Team-Explorer nicht Bestandteil
des Team Foundation Server SP1 ist, sondern des Visual Studio SP1. Also das Visual
Studio SP1 installiert und danach lief es wunderbar.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=76ab8eb0-6591-4c5d-897a-52fbf5cdaf75" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Vortrag bei der .Net Developer Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx</id>
    <published>2009-05-12T22:15:05.6097672+02:00</published>
    <updated>2009-05-12T22:15:05.6097672+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/ct.ashx?id=376e0002-8e9e-4b3a-8cb7-1fc652294b63&amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fSilverlightbeider.NetDeveloperGroupUlm_D13E%2fclip_image001_2.gif">
            <img title="clip_image001" border="0" alt="clip_image001" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Silverlightbeider.NetDeveloperGroupUlm_D13E/clip_image001_thumb.gif" width="617" height="85" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Letzte Woche habe ich bei der .Net Developer-Group Ulm einen Vortrag zum Thema “10
Gründe warum Software-Projekte fehlschlagen – und was hilft ALM"?” gehalten. Es gab
zu diesem Vortrag eine reihe interessanter Diskussionen. Die Folien gibt’s hier zum
herunterladen:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:6030f78c-be1a-4590-881f-ea534d557a54" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Vortragbeider.NetDeveloperGroupUlm_13813/10%20Gr%C3%BCnde%20f%C3%BCr%20fehlgeschlagene%20Software-Projekte.pptx" target="_blank">Download
Folien</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0910e995-aebe-4471-87c0-47195c3c52ea" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Vortrag auf der TeamConf</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx</id>
    <published>2009-05-12T22:04:56.2777425+02:00</published>
    <updated>2009-05-12T22:04:56.2777425+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://www.teamconf.de/images/teamconf468x60.jpg" />
        </p>
        <p>
Bei der TeamConf handelt es sich um eine Konferenz mit dem Focus auf Themen rund um
VSTS und TFS. Da durfte ich natürlich nicht fehlen ;-)
</p>
        <p>
Leider war mein Vortrag der letzte der Konferenz und dazu noch parallel zum VSTS 2010
Vortrag von <a href="http://blogs.msdn.com/cbinder">Christian Binder</a>. Dennoch
fand sich eine interessierte Runde zum Thema “<a href="http://www.teamconf.de/downloads/Tag2/Paris/5_artiso.pdf">Requirements
Management in leichtgewichtigen Prozessen</a>” zusammen. Hier noch meine Folien zum
Download:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:FF7EC618-8FBE-49a5-B908-2339AF2ABCDF:19303996-2395-45f2-9742-583e9e3425a4" class="wlWriterEditableSmartContent">
          <div>Download File - <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VortragaufderTeamConf_13582/tmp6328.zip" target="_self">TFSRequirementManagement</a></div>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2449450d-d4ee-4c71-85bf-f7ff98b8f5f3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>F# ist dasThema beim n&amp;auml;chsten Treffen der .Net Developer-Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx</id>
    <published>2009-05-12T21:44:00.3790798+02:00</published>
    <updated>2009-05-12T22:08:54.8886446+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h4>
          <a href="http://www.artiso.com/ProBlog/ct.ashx?id=376e0002-8e9e-4b3a-8cb7-1fc652294b63&amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fSilverlightbeider.NetDeveloperGroupUlm_D13E%2fclip_image001_2.gif">
            <img title="clip_image001" border="0" alt="clip_image001" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Silverlightbeider.NetDeveloperGroupUlm_D13E/clip_image001_thumb.gif" width="617" height="85" />
          </a>
        </h4>
        <h4>Termin: 19.05.2009 - 18:00 Uhr
</h4>
        <h4>Veranstaltungsort:
</h4>
In den Räumen der artiso solutions GmbH Anfahrtsbeschreibung unter <a href="http://www.artiso.com/?Page=60">www.artiso.com</a><h4>Referent:
</h4><br /><b>Pedro Castelo Branco Lourenço</b><h4>Vortrag:
</h4><br /><b>Introducing F#</b><p>
As Developers, when we see a given demand, we always think on how to solve on a very
imperative way (first do this, then this, finally that). Why not starting thinking
on a more functional level, where we do not need to break one given task into so small
imperative steps? This session will introduce Microsoft's new language F#, a typed
functional programming language for the .NET Framework that combines the succinctness,
expressivity and compositionality of functional programming with the runtime support,
libraries, interoperability, tools, and object model of .NET. We'll take a look at
why Microsoft is adding the language to the suite of those available on .NET and at
some of simple language constructs that make programming in F# a dream. 
</p><p><b>Pedro Castelo Branco Lourenço</b> is a Brazilian guy that moved into Germany to
work as Innovation manager at Savcor IT GmbH(http://www.savcor.de), MVP (Microsoft
Most Valuable Professional) on C#, Microsoft Certified Professional Developer(Web
&amp; Windows), independent consultant to companies that build software using .Net
platform, speaker in some well known technical events such as Tech Ed 2005, 2008(Brazil),
Community Days, Developers On The Road, União.Net. Bachelor degree in computer science,
member of moderator’s team of .Net Raptors community (www.dotnetraptors.com.br). During
his free-time he is studying German to make his family life easier! <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=91dc5b5c-c2dd-4a48-82ba-ce3f986b0892" /></p></div>
    </content>
  </entry>
  <entry>
    <title>.NET Open Space</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx</id>
    <published>2009-05-04T12:35:53.9862951+02:00</published>
    <updated>2009-05-04T13:07:37.0740944+02:00</updated>
    <category term=".Net Openspace S&amp;#252;d 2009" label=".Net Openspace S&amp;#252;d 2009" scheme="http://www.artiso.com/ProBlog/CategoryView,category,.Net%2BOpenspace%2BS%c3%bcd%2B2009.aspx" />
    <content type="html">&lt;p&gt;
&lt;a title=".NET Open Space S&amp;uuml;d vom 11.07. bis 12.07.2009 in Ulm" href="http://ulm.netopenspace.de/"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" alt=".NET Open Space vom 11.07. bis 12.07.2009 in Ulm" src="http://ulm.netopenspace.de/2009/GetFile.aspx?File=Logos/nos-logo-1-2009.png" border="0"&gt; &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Zusammen mit &lt;a href="http://blog.alexonasp.net/"&gt;Alexander Zeitler&lt;/a&gt; organisiere
ich den .Net Opensapce Süd 2009. Seit heute ist die offizielle Homepage online und
ich freue mich, die Veranstaltung hier ankündigen zu dürfen.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Die besten Gespräche hat man fernab von einer festgelegten Agenda, bei einem Kaffee
und beim "du". Dort gibt es keine Rollenaufteilung in Sprecher / Zuhörer, Entwickler
/ Administrator usw. und die Themen finden sich vor Ort ganz von selbst. Das ist die
Idee vom .NET Open Space, die sich bereits &lt;a class="externallink" title="2008 in Leipzig" href="http://netopenspace.de/2008/MainPage.ashx" target="_blank"&gt;2008
in Leipzig&lt;/a&gt; bewährt hat. Hier sind alle gleich. Auch die Organisatoren halten sich
im Hintergrund und moderieren nur ab und an etwas. 
&lt;/p&gt;
&lt;p&gt;
Der .NET Open Space Süd 2009 läuft vom 11.07.2009 bis 12.07.2009. Welche Inhalte in
dieser Zeit bearbeitet werden, wird vor Ort bestimmt, denn die Veranstaltung ist &lt;a class="externallink" title="Open Space" href="http://www.openspaceworld.org/german/index.html" target="_blank"&gt;Open
Space&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Die Teilnahme ist kostenlos. Die Teilnehmer gestalten das Programm selbst. Erfahrungsaustausch
ist das A und O und steht im Vordergrund. 
&lt;/p&gt;
&lt;p&gt;
Mehr Informationen und Anmeldung unter: &lt;a title="http://ulm.netopenspace.de" href="http://ulm.netopenspace.de/2009"&gt;http://ulm.netopenspace.de&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Ich würde mich natürlich freuen, möglichst viele bekannten Gesichter und den einen
oder anderen Leser meines Blogs bei diesem Event begrüßen zu dürfen. Ausdrücklich
möchte ich betonen, dass dies nicht nur ein Event für Experten ist, sondern dass natürlich
auch Teilnehmer willkommen sind, die sich noch nicht für solche halten. 
&lt;/p&gt;
&lt;p&gt;
An dieser Stelle auch ein herzliches Dankeschön an Torsten Weber und Alexander Groß
für die Unterstützung bei der Einrichtung der Website für den .NET Open Space Süd
2009.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=201d2d6f-99dc-4525-9097-b5a60d70e4f5" /&gt;</content>
  </entry>
  <entry>
    <title>Veranstaltung zu Verteilten Systemen an der DHBW-Heidenheim &amp;ndash; 2. Teil</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx</id>
    <published>2009-04-22T07:53:51.1058476+02:00</published>
    <updated>2009-04-22T07:54:14.1528701+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="Duale Hochschule" alt="" src="http://www.ba-heidenheim.de/fileadmin/template/images/dhbw-hdh-web.gif" border="0" />
        </p>
        <p>
Im zweiten Teil wurde anhand eines kleinen Demos die konkrete Implementierung von
WCF-Anwendungen erläutert. Es wurde ein Chat-System auf Basis der WCF erstellt. Das
Demo gibt es hier zum Download. Außerdem möchte ich hier noch auf eine Einführung
in die WCF hinweisen die man <a href="http://www.artiso.com/ProBlog/PermaLink,guid,65e7a0c8-12bf-4ee9-bf7e-6de06370113e.aspx">hier
findet</a></p>
        <div class="wlWriterEditableSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:2096bb7a-3e16-4c59-b6de-4c2cda223ed7" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VeranstaltungzuVerteiltenSystemenan.Teil_6EA3/WCFChat.zip" target="_blank">Download
Demo</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e908ebcc-6e71-471f-b40e-a53a5459503f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Infos zur Veranstaltung Verteilte Systeme an der DHBW Heidenheim</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx</id>
    <published>2009-04-14T11:41:50.5468871+02:00</published>
    <updated>2009-04-14T12:25:31.2196766+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="Duale Hochschule" alt="" src="http://www.ba-heidenheim.de/fileadmin/template/images/dhbw-hdh-web.gif" border="0" />
        </p>
        <p>
Beim ersten Termin wurden die Grundlagen zu verteilten Anwendungen im allgemeinen
und der WCF im speziellen vermittelt.
</p>
        <div class="wlWriterEditableSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:aa9321a6-0b53-4ad1-b33e-325eaaf294ed" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/InfoszurVeranstaltungVerteilteSystemeand_A3B4/Demos.zip" target="_blank">Folien</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/InfoszurVeranstaltungVerteilteSystemeand_A3B4/Verteilte%20Anwendungen.zip" target="_blank">Demos</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=57206e9d-0d67-4d69-b6cb-27948acbd0f8" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Problem Steps Recorder in Windows 7</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx</id>
    <published>2009-04-08T02:07:35.9126995+02:00</published>
    <updated>2009-04-08T02:07:35.9126995+02:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Eines der coolsten Features in Windows 7 ist für mich der Problem Steps Recorder.
Damit lassen sich Benutzeraktionen aufzeichnen und als MHT-File mit Screenshoots ausgeben.
Diese Funktion eignet sich sehr gut um z.B. Installationsanleitungen oder auch Dokumentationen
von Testdurchläufen zu erstellen. Hierzu wird einfach der Problem Steps Recorder über
den Befehl PSR gestartet. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_thumb.png" width="436" height="71" />
          </a>
        </p>
        <p>
Nach einem Klick auf Start Record werden nun die Benutzeraktionen aufgezeichnet. Heraus
kommt dann ungefähr so etwas:
</p>
        <p>
          <b>Problem Step 15:</b> User left double click on "Name (editable text)" in "WorkItem_Manager_Open_1.0.0_Installer[1]" 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_8.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_thumb_3.png" width="691" height="433" />
          </a>
        </p>
        <p>
          <a href="file:///C:\Users\Thomas\Desktop\screenshot_0015.jpeg">
          </a>
        </p>
        <p>
          <a href="#ProblemStep15">Previous</a>
          <a href="#ProblemStep17">Next</a>
        </p>
        <p>
          <b>Problem Step 16:</b> User left click on "Run (push button)" in "Open File - Security
Warning" 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_6.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_thumb_2.png" width="686" height="432" />
          </a>
        </p>
        <p>
          <a href="file:///C:\Users\Thomas\Desktop\screenshot_0016.jpeg">
          </a>
        </p>
        <p>
          <a href="#ProblemStep16">Previous</a>
          <a href="#ProblemStep18">Next</a>
        </p>
        <p>
          <b>Problem Step 17:</b> User left click on "Next &gt; (push button)" in "artiso Workitem
Manager Open" 
</p>
        <p>
          <a href="file:///C:\Users\Thomas\Desktop\screenshot_0017.jpeg">
          </a>
        </p>
        <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_4.png">
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_thumb_1.png" width="683" height="428" />
        </a>
        <p>
        </p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:066e2bee-242e-4044-b418-a190e1a1f87c" class="wlWriterEditableSmartContent">
          <div>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/Problem_20090407_2211.mht" target="_blank">Das
komplette Ergebnis kann hier heruntergeladen werden</a>
          </div>
        </div>
        <p>
          <br />
Diese Aufzeichnungen funktionieren sowohl mit Web- als auch Windows-Anwendungen. Und
natürlich können die erzeugten MHT-Files in Word oder anderen Editoren noch bearbeitet
werden. So können z.B. überflüssige Zwischenschritte entfernt und Texte editiert werden.
Es können auch währen des Aufzeichnungsvorgangs Kommentare erfasst und diesen ein
bestimmter Bildausschnitt zugeordnet werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=eef081c2-f672-459d-9e7e-5ce49099fe65" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Brian Harry bei der TSUG-VE EMEA</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx</id>
    <published>2009-04-06T23:13:52.2561945+02:00</published>
    <updated>2009-04-06T23:13:52.2561945+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Grade erst wurden die EMEA-Meetings der Team System User Group Virtual Edition ins
Leben gerufen, schon können wir mit einem Highlight aufwarten. Für unser April-Meeting
konnten wir Brian Harry als Sprecher gewinnen. Brian wird über die Internal Adoption
von VSTS sprechen. Brian ist Technical Fellow und Manager der Product Unit für den
team Foundation Server. 
</p>
        <p>
Also gleich als Mitglied registrieren und am 16. April dabei sein!
</p>
        <p>
Weitere Informationen zum Meeting gibt’s unter <a href="http://www.tsug-ve.com">www.tsug-ve.com</a>. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=acb5279c-cafe-45ca-bf98-be7a2c4097e7" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Silverlight bei der .Net Developer-Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx</id>
    <published>2009-04-03T14:54:00.1229495+02:00</published>
    <updated>2009-04-03T14:54:32.0604495+02:00</updated>
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <category term="WPF / Silverlight" label="WPF / Silverlight" scheme="http://www.artiso.com/ProBlog/CategoryView,category,WPF%2B%2f%2BSilverlight.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Silverlightbeider.NetDeveloperGroupUlm_D13E/clip_image001_2.gif">
            <img title="clip_image001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="85" alt="clip_image001" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Silverlightbeider.NetDeveloperGroupUlm_D13E/clip_image001_thumb.gif" width="617" border="0" />
          </a>
        </p>
        <table cellspacing="0" cellpadding="0" border="0">
          <tbody>
            <tr>
              <td valign="top">
                <p>
                  <b>Am 07. April um 18:00 Uhr findet das nächste Treffen der .Net Developer-Group Ulm
statt. Diesesmal geht es im Rhamen der Microsoft Usergroup-Tour um das Thema Silverlight.</b>
                </p>
                <p>
                  <strong>
                  </strong>  
</p>
                <p>
                  <b>Referent:</b> Philipp Bauknecht 
</p>
                <p>
                  <b>Vortrag:</b> Web &amp; Silverlight 
</p>
                <p>
Der Referent Philipp Bauknecht zeigt anhand eines E-Commerce-Szenarios, welche neuen
Möglichkeiten in Silverlight und den Microsoft-Webtechnologien stecken. Er gibt Einblicke
in die Bildbearbeitung mit Expression Design und in das Arbeiten und Programmieren
mit Expression Blend. Weitere Themenschwerpunkte sind die Veröffentlichung von Videos
sowie die wesentlichen Silverlight-Entwicklungsgrundlagen in Visual Studio. Anhand
praktischer Beispiele demonstriert Philipp Bauknecht, wie sich die letzte Meile zum
Anwender mithilfe von Silverlight durch interaktive Methoden überwinden lässt. 
</p>
                <p>
Weitere Infos finden Sie  <a href="http://www.dotnet-ulm.de/Treffen.aspx#07042009">hier…</a></p>
                <p>
  
</p>
                <p>
Freue mich auf zahlreiche Teilnehmer. Es gibt diesesmal wieder einen leckeren Imbiss
der von der <a href="http://www.sos-software.com">Fa. SOS Software Services</a> gesponsort
wird. 
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=376e0002-8e9e-4b3a-8cb7-1fc652294b63" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio Team Test 2008 Quick Reference Guide</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx</id>
    <published>2009-04-02T08:33:23.0404873+02:00</published>
    <updated>2009-04-02T08:33:23.0404873+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Tatsache, dass Testen eine wichtige Bedeutung in der Software-Entwicklung hat,
trägt Microsoft ja bereits seit einiger Zeit Rechnung indem eine spezielle Edition
des Visual Studio für Tester generiert wurde. Diese Edition besitzt umfangreiche Funktionenzu
verschiedenen Test-Methoden. Das Ranger-Team hat nun einen Quick Reference Guide veröffentlicht
der auf 83 Seiten diese Funktionen beschreibt und verschiedene Best Practices anbietet.
Hierbei sind die Erfahrungen eingeflossen, die Service Labs, ein großes Test-Center,
bei der Adaption von Team Test gemacht hat. Das Dokument enthält viele wertvolle Hinweise,
wie VSTT in der Praxis eingesetzt und individuell erweitert werden kann.
</p>
        <p>
Definitiv lesenswert für jeden, der etwas mehr über dieses Toolset erfahren möchte.
</p>
        <p>
          <a href="http://vstt2008qrg.codeplex.com/">Download VSTT 2008 Quick Reference Guide</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=596283b1-eb27-4c67-851f-eac0dc720efe" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TDD Quickstart</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</id>
    <published>2009-04-01T02:10:53.3107395+02:00</published>
    <updated>2009-04-01T02:22:00.5294895+02:00</updated>
    <category term="Eigene Tutorials" label="Eigene Tutorials" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Eigene%2BTutorials.aspx" />
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Thema Test Driven Development oder auch Test First Developent gewinnt immer mehr
an Beachtung. Keine Konferenz, keine Zeitschrift, kein Sprecher der was auf sich hält
kommt um das Thema herum. Doch nach dem überzeugenden Vortrag sitzt man zu Hause im
Büro vor einem leeren Project und wie nun anfangen? Hier scheitern bereits die ersten,
weil entsprechende Publikationen oft zwar die Vorteile ausführlich schildern, aber
nicht den Einstieg darstellen. Deshalb möchte ich hier einen entsprechenden Einstieg
geben und mit einem wirklich leeren Projekt beginnen. 
</p>
        <p>
Die Theorie um TDD will ich hier einfach weglassen. Hierzu gibt es bereits Informationen
genug. Und wir werden verschiedene Vereinfachung vornehmen, über die Profis etwas
die Nase rümpfen werden, aber damit erhalten wir ein einfaches und praktikable Einstiegsszenario. 
</p>
        <p>
Zum Einsatz kommen hierbei die Testfunktionen von Visual Studio 2008 die ab der Professional
Edition enthalten sind. Wir beginnen mit einer komplett leeren Solution.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="245" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb.png" width="359" border="0" />
          </a>
        </p>
        <p>
Die Frage, die nun im Raum steht, ist: Wie schreibe ich einen Test ohne eine Methode
zu haben. Ein Unit-Test besteht ja im Prinzip darin, dass wir eine Methode aufrufen
und den Rückgabewert mit einem Erwartungswert vergleichen. Der Test wird aber nicht
einmal kompilieren, solange die Methode nicht definiert ist. Der Workaround an dieser
Stelle sieht dann oft so aus, dass man von der Methode und ihrer Klasse erst einmal
einen Stub anlegt der im wesentlichen eine “ThrowNotImplemented”-Exception wirft.
Damit haben wir aber eigentlich schon mehr implementiert als nach dem TDD uns lieb
ist.
</p>
        <p>
Ein etwas eleganterer Ansatz geht über die Definition von Interfaces. Diese Vorgehensweise
eignet sich besonders gut bei einer komponentenorientierten Architektur mit einem
Contract First Ansatz. Dabei werden die Schnittstellen der einzelnen Komponenten erst
über Contracts (Interfaces) beschrieben bevor diese implementiert werden. Den TDD-Ablauf
Rot &gt; Grün &gt; Refactor erweitern wir ein wenig. Damit ergibt sich folgende Abfolge:
</p>
        <p>
Contract definieren &gt; Test implementieren &gt; Rot &gt; Funktion implementieren
&gt; Grün &gt; Refactor
</p>
        <p>
D.h. wir erstellen in einem ersten Schritt einen Contract (genau genommen machen wir
damit kein TDD sondern ein Test First. Beim TDD ist der Test das erste was erstellt
werden muss, aber das ist in meinen Augen eher Haarspalterei, so funktioniert es einfach
in der Praxis). Wir erstellen ein neues ClassLibrary-Projekt und erstellen dort ein
Interface.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">namespace</span> Contracts</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">interface</span> IOrderCalculator</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">decimal</span> CalculateShippinghCosts(<span style="color: #0000ff">decimal</span> sum, <span style="color: #0000ff">decimal</span> freeShippingMin, <span style="color: #0000ff">decimal</span> shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> }</pre>
          </div>
        </div>
        <p>
        </p>
        <p>
Wir wollen hier ein überschaubares, aber auch nicht zu triviales Beispiel verwenden.
Die Methode CalculateShippingCosts soll zu einem gegebenen Rechnungsbetrag Versandkosten
hinzuaddieren, wenn ein bestimmter Mindestbetrag nicht erreicht ist. So damit haben
wir den Contract erstellt. Nun wollen wir einen Test dazu erstellen. Das geht am schnellsten
durch einen Rechts-Klick auf die Methode und dann “Create Unit-Tests”.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_8.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="187" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb_3.png" width="385" border="0" />
          </a>
        </p>
        <p>
Hier wird standardmäßig ein neues Test-Projekt angelegt. Darin wird ein entsprechender
Unit-Test generiert.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCostsTest()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> IOrderCalculator
target = CreateIOrderCalculator(); <span style="color: #008000">// TODO: Initialize
to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> Decimal
sum = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Decimal
freeShippingMin = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> Decimal
shippingCosts = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> Decimal
expected = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> Assert.Inconclusive(<span style="color: #006080">"Verify
the correctness of this test method."</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
Damit können wir den Test bereits zum ersten mal ausführen und er geht wie erwartet
auf Rot. Aber Moment, wie funktioniert das. Wie kann der Test eine Methode auf einem
Interface aufrufen? Es gibt ja noch keine Implementierung des Interfaces und ein Interface
selbst lässt sich ja nicht instanziieren. Hier baut Visual Studio einen kleinen Workaround.
In Zeile 4 im obigen Code sieht man, dass eine Instanz des target-Objektes über die
Methode CreateIOrderCalculator() erstellt wird. Diese Methode wollen wir mal etwas
genauer anschauen.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">internal</span>
              <span style="color: #0000ff">virtual</span> IOrderCalculator
CreateIOrderCalculator()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">//
TODO: Instantiate an appropriate concrete class.</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> IOrderCalculator
target = <span style="color: #0000ff">null</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">return</span> target;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> }</pre>
          </div>
        </div>
        <p>
        </p>
        <p>
Hier wird das Objekt einfach mit null initialisiert. Ein einfacher, aber wirkungsvoller
Workaround. Damit erreichen wir unser Ziel, dass der Test kompiliert aber fehlschlägt.
Nach der Implementierung ersetzen wir das null einfach durch die entsprechende Initialisierung.
Damit können wir nun unsere Testcases Implementieren.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCosts_Sum_Below_FreeShippingMin()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> IOrderCalculator
target = CreateIOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> Decimal
sum = 1;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Decimal
freeShippingMin = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> Decimal
shippingCosts = 5;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #008000">//
We are below min, so we have to add shippingCosts</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> Decimal
expected = 6;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCosts_Sum_Above_FreeShippingMin()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> IOrderCalculator
target = CreateIOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> Decimal
sum = 20;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> Decimal
freeShippingMin = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> Decimal
shippingCosts = 5;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #008000">//
We are above min, so we don't add shippingCosts</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> Decimal
expected = 20;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCosts_Sum_Equal_FreeShippingMin()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 32:</span> IOrderCalculator
target = CreateIOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 33:</span> Decimal
sum = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 34:</span> Decimal
freeShippingMin = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 35:</span> Decimal
shippingCosts = 5;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 36:</span>
              <span style="color: #008000">//
We are equal min, so we don't add shippingCosts</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 37:</span> Decimal
expected = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 38:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 39:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 40:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 41:</span> }</pre>
          </div>
        </div>
        <p>
Damit haben wir unser Szenario ausreichend beschrieben. Wir können nun an die Implementierung
gehen.Dazu legen wir ein neues Projekt an in dem wir eine Klasse definieren die wir
von unserem Interface ableiten.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">namespace</span> Components</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cOrderCalculator
: IOrderCalculator</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">decimal</span> CalculateShippinghCosts(<span style="color: #0000ff">decimal</span> sum, <span style="color: #0000ff">decimal</span> freeShippingMin, <span style="color: #0000ff">decimal</span> shippingCosts)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #008000">//
If sum is greater than Min then don't add shipping costs</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">if</span> (sum
&gt; freeShippingMin)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">return</span> sum;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #008000">//
else add shipping costs</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">return</span> sum
+ shippingCosts;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
          </div>
        </div>
        <p>
Nun müssen wir unbedingt noch daran denken, die Initialisierung des Testobjektes in
unserer Testmethode anzupassen.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">internal</span>
              <span style="color: #0000ff">virtual</span> IOrderCalculator
CreateIOrderCalculator()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> IOrderCalculator
target = <span style="color: #0000ff">new</span> cOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span> target;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> }</pre>
          </div>
        </div>
        <p>
Nun können wir die Tests ausführen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_10.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="130" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb_4.png" width="574" border="0" />
          </a>
        </p>
        <p>
Oh, ein Test schlägt fehl. Bei genauerer Betrachtung stellen wir fest, dass wir bei
der Implementierung den Fall dass die Summe gleich der Grenze ist nicht richtig berücksichtigt
haben. Also hat sich hier der TDD-Ansatz schon bewährt und wir können den Fehler beheben.
Damit sind alle Tests grün und wir können weiter fortfahren. Wir könnten nun z.B.
auf unserem Interface weitere Methoden definieren und dafür Tests anlegen. 
</p>
        <p>
Also eigentlich gar nicht so schwer das mit dem TDD, oder? Freue mich auf euer Feedback.
</p>
        <p>
Die Solution gibt es zum Download.
</p>
        <p>
Happy Testing!
</p>
        <div class="wlWriterEditableSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:ff5bd5c7-cf5f-44fa-b8f6-de296f6342f9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/TDDQuickStart.zip" target="_blank">Download
Demo-Solution</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b142c6d-f285-4697-ad77-9914a8bd3cfe" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team System Camp</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx</id>
    <published>2009-04-01T00:04:06.4513645+02:00</published>
    <updated>2009-04-01T00:04:06.4513645+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemCamp_14696/002.jpg">
            <img title="002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="327" alt="002" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemCamp_14696/002_thumb.jpg" width="435" border="0" />
          </a>
        </p>
        <p>
Letzte Woche war ich als Trainer beim Team System Camp. Eine wirklich bemerkenswerte
Veranstaltung! Schon der Veranstaltungsort selbst war bemerkenswert. Das <a href="http://www.haeckers-kurhotel.com/bad-ems/de/index.htm">Häckers
Kurhotel</a> in Bad Ems stellte einen durchaus würdigen Rahmen für die Veranstaltung
dar und auch der Seminarraum hatte durchaus Stil:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemCamp_14696/002_1.jpg">
            <img title="002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="330" alt="002" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemCamp_14696/002_thumb_1.jpg" width="438" border="0" />
          </a>
        </p>
        <p>
Die Verpflegung war dem Ambiente angemessen, Mittags und Abends ein vorzügliches 3-Gänge-Menü
und auch das Rahmenprogramm passte. Mit Kart-Fahren, Casino-Besuch und weiteren Aktivitäten
konnte ein paar Momente entspannt werden. Das war auch dringend nötig. Denn trotz
all dieser Annehmlichkeiten kamen natürlich die Inhalte nicht zu kurz. Zwei Trainer
auf 5 Teilnehmer ist sicher schon ein ungewöhnlicher Schnitt. Aber dass die Trainings
von 9:00 Uhr bis 23:00 gehen ist schon heftig. Also wurde nach dem Kart-Fahren noch
was gegessen und dann ging’s im Seminar-Raum weiter. So konnten die Teilnehmer sicher
einen sehr guten Überblick über den Team Foundation Server und VSTS bekommen. Und
durch die kleine Gruppengröße konnte auch auf individuelle Fragen ausführlich eingegangen
werden.
</p>
        <p>
Mir hat’s jedenfalls viel Spaß gemacht und bin beim nächsten mal gerne wieder dabei.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=efb41ce4-aba2-4071-bca7-d53e1f1410a4" />
      </div>
    </content>
  </entry>
  <entry>
    <title>VSTO Community Day in Wien</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx</id>
    <published>2009-03-31T17:21:45.3102145+02:00</published>
    <updated>2009-03-31T17:21:45.3102145+02:00</updated>
    <category term="News" label="News" scheme="http://www.artiso.com/ProBlog/CategoryView,category,News.aspx" />
    <content type="html">&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;&lt;font face="Calibri" size="3"&gt;Für alle die entweder in
der Nähe von Wien leben oder die entsprechend großes Interesse am Thema VSTS haben
um diese schöne Stadt auch mal zu besuchen, hier eine Ankündigung:&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;&lt;font face="Calibri" size="3"&gt;Am 8. Mai 2009 wird im
Microsoft Innovation Center (MIC) in Wien der &lt;/font&gt;&lt;a href="http://www.vsto-taskforce.de/wikis/ocd/hauptseite.aspx"&gt;&lt;u&gt;&lt;font face="Calibri" color="#800080" size="3"&gt;Office
(VSTO) Community Day&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="Calibri" size="3"&gt; statt finden. Hierbei
geht es 1 Tag lang rund um Office Business Applications. Die Veranstaltung wird von &lt;/font&gt;&lt;a href="http://blog.lars-keller.net/"&gt;&lt;u&gt;&lt;font face="Calibri" color="#0000ff" size="3"&gt;Lars
Keller&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="Calibri" size="3"&gt; und &lt;/font&gt;&lt;a href="http://www.vb-magazin.de/forums/blogs/mario_meir-huber/default.aspx"&gt;&lt;u&gt;&lt;font face="Calibri" color="#0000ff" size="3"&gt;Mario
Meir-Huber&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; geführt.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;
&lt;o:p&gt;
&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Die Themen sind:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;
&lt;o:p&gt;
&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d; font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Einführung
in die VSTO 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d; font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;OpenXML:
Das neue Office Format 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d; font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;VSTO
Deployment 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d; font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Sharepoint
Workflows und Integration 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d; font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Interaktionen
in der "Office-Welt" mit .NET 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d; font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font size="3"&gt;·&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #1f497d"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Office
plus Services&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 36pt; text-indent: -18pt; mso-list: l0 level1 lfo1"&gt;
&lt;span style="color: #1f497d"&gt;
&lt;o:p&gt;
&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt"&gt;
&lt;span style="color: #1f497d"&gt;&lt;font face="Calibri" size="3"&gt;Die Veranstaltung ist frei
zugänglich, jedoch gibt es eine Limitierung auf 35 Teilnehmer. Anmelden kann man sich
in dem extra für das Event aufgesetzten Wiki (&lt;/font&gt;&lt;a href="http://www.vsto-taskforce.de/wikis/ocd/teilnehmer.aspx"&gt;&lt;u&gt;&lt;font face="Calibri" color="#0000ff" size="3"&gt;http://www.vsto-taskforce.de/wikis/ocd/teilnehmer.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;).&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cd5e41ae-03c8-433f-9ad1-4780b8810d6b" /&gt;</content>
  </entry>
  <entry>
    <title>Neuerungen im TFS 2008 MSSCCI-Provider</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx</id>
    <published>2009-03-31T17:18:04.0445895+02:00</published>
    <updated>2009-03-31T17:18:04.0445895+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die Integration von Visual Studio 2005 / 2008 mit dem TFS ist ideal gelöst. Jedoch
gibt es auch noch andere Entwicklungs-Plattformen die keine direkte Integration mit
dem Team-Explorer erlauben wie z.B. ältere Visual Studio Versionen und leider auch
immer noch das SQl Server Management Studio. Diese IDEs überstützen doch recht häufig
den sog. MSSCCI-Standard und es gibt bereits seit längerer Zeit einen entsprechenden <a href="http://www.microsoft.com/downloads/details.aspx?familyid=FAEB7636-644E-451A-90D4-7947217DA0E7&amp;displaylang=en">MSSCCI-Provider
für den TFS 2008</a>. Dieser hatte bisher immer noch den nachteil, dass er reine Sourcecontrol
Features unterstützt hat und z.B. das Verknüpfen von Workitems beim Checkin nicht
möglich war. In der neuesten Version ist dies nun auch möglich und somit ist auch
bei IDEs die den Team Explorer nicht integrieren ein komfortables Arbeiten mit dem
TFS möglich. Ich habe hier mal ein Beispiel für das SSMS 2008.
</p>
        <p>
Zunächst muss der TFS MSSCCI-Provider unter Optionen eingestellt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="310" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_thumb.png" width="536" border="0" />
          </a>
        </p>
        <p>
Legt man nun ein Datenbankprojekt an, dann kann man das in gewohnter Art und Weise
mit der Source Control verbinden und man erhält Fenster “Pending Checkins”.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_4.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="286" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_thumb_1.png" width="542" border="0" />
          </a>
        </p>
        <p>
Führt man hier nun den Checkin aus, kommt der aus dem Team-Explorer bekannte Dialog
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_6.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="335" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_thumb_2.png" width="548" border="0" />
          </a>
        </p>
        <p>
Hier können nun z.B. Checkin-Kommentare angegeben oder Workitems verknüpft werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_8.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="342" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_thumb_3.png" width="559" border="0" />
          </a>
        </p>
        <p>
Sogar die Checkin-Plicies funktionieren hier wie gewohnt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_10.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="240" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_thumb_4.png" width="372" border="0" />
          </a>
        </p>
        <p>
Damit ist ein komfortables und problemloses Arbeiten auch mit solchen Umgebungen möglich,
die den Team-Explorer nicht direkt integrieren. Und damit wieder ein Grund mehr, nun
endlich auf den TFS zu setzen und SourceSafe und Konsorten endlich in Rente zu schicken.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f2c45e90-5d4d-4187-a7fc-9846e9daa8dc" />
      </div>
    </content>
  </entry>
  <entry>
    <title>EMEA-Freundliche Zeiten f&amp;uuml;r Treffen der TSUG-VE</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx</id>
    <published>2009-03-30T08:55:00+02:00</published>
    <updated>2009-03-30T09:08:49.9582645+02:00</updated>
    <category term="News" label="News" scheme="http://www.artiso.com/ProBlog/CategoryView,category,News.aspx" />
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Bei der <a href="http://www.tsug-ve.com/">Team System Usergroup – Virtual Edition
(TSUG-VE)</a> handelt es sich um eine weltweite Online-Community die sich auf die
Themen Visual Studio Team System und Team Foundation Server konzentriert hat. Die
Treffen finden dabei zeitgleich in SecondLife und LiveMeeting statt. SecondLife bietet
den Vorteil, die sozialen Aspekte einer Community besser in der Online-Welt abzubilden,
LiveMeeting wird als Präsentationssystem genutzt. Die virtuellen Treffen unterscheiden
sich vom Ablauf und Inhalt kaum von denen entsprechender Offline-Communities. Während
und nach den Vorträgen können ganz normal Fragen gestellt werden. Die Vorträge werden
aufgezeichnet und stehen Mitgliedern im nachhinein im LiveMeeting-Portal zur Verfügung.
</p>
        <p>
Um die Vortragszeiten für die Teilnehmer rund um den Globus komfortabler zu gestalten,
wurde nun eine europäische Sektion der TSUG-VE ins Leben gerufen. Diese Sektion organisiert
Meetings in einer komfortablen Zeit für die EMEA-Zone (19:00 Uhr deutscher Zeit).
Natürlich steht den Mitgliedern jederzeit die Möglichkeit offen, an den Treffen der
US-Sektion oder für den Bereich Asian-Pacific (momentan im Aufbau) teilnehmen zu können
oder die Videos nachträglich abzurufen ohne sich hierfür separat registrieren zu müssen.
Alle Treffen werden in englischer Sprache abgehalten.
</p>
        <p>
Die Leitung der EMEA-Zone habe ich übernommen und würde mich freuen, in Zukunft mehr
Mitglieder aus dem Europa begrüßen zu dürfen. Kritik und Anregungen zur Organisation
sind sehr willkommen, da wir im Moment noch dabei sind Erfahrungen im Betreiben einer
Online-Community sammeln.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=93ccba86-4694-4688-8ed8-bd542f099898" />
      </div>
    </content>
  </entry>
  <entry>
    <title>VISIfire - Silverlight / WPF Charts</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx</id>
    <published>2009-03-20T09:31:45.5127145+01:00</published>
    <updated>2009-03-20T09:31:45.5127145+01:00</updated>
    <category term="Komponenten und Bibliotheken" label="Komponenten und Bibliotheken" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Komponenten%2Bund%2BBibliotheken.aspx" />
    <category term="WPF / Silverlight" label="WPF / Silverlight" scheme="http://www.artiso.com/ProBlog/CategoryView,category,WPF%2B%2f%2BSilverlight.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.visifire.com/popup.php?url=Combi6.xml">
            <img alt="Silverlight 2D Combination Chart" src="http://www.visifire.com/images/gallery/Combination/Combi6.jpg" border="0" />
          </a>
        </p>
        <p>
VISfire sit eine Charting-Komponente für Silverlight und WPF. Das coole daran ist,
dass die Charts animiert werden können.  Einen schnellen Eindruck bekommnt man
über die <a href="http://www.visifire.com/silverlight_charts_gallery.php">Silverlight
Chart Gallery</a>. Die componente ist unter GPL und einer kommerziellen Lizenz verfügbar. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e64c01e2-50b1-41dc-a2d8-05fe896f4d24" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Flash oder Silverligh &amp;ndash; was ist besser?</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx</id>
    <published>2009-03-15T07:41:00+01:00</published>
    <updated>2009-03-13T08:42:54.1159295+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FlashoderSilverlighwasistbesser_7A45/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="83" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FlashoderSilverlighwasistbesser_7A45/image_thumb.png" width="244" border="0" />
          </a>
        </p>
        <p>
Wie so oft lautet die Antwort es kommt darauf an. Un hier bietet die Seite ShineDraw
eine gute Vergleichsmöglichkeit. In der Gallery befinden sich zahlreiche Beispiele
die sowohl in Silverlight als auch in Flash implementiert sind. Da kann man nicht
nur das Ergebnis in beiden Varianten vergleichen sondern auch den Code der in der
jeweiligen Technologie erforderlich ist. Darüber hinaus kann man sich den einen oder
anderen effekt abschauen und sieht auch gleich wie der implementiert wird. Der Quellcode
ist unter der GNU General Public License, Version 3 bereitgestelt.
</p>
        <p>
          <a href="http://www.shinedraw.com/flash-vs-silverlight-gallery/">http://www.shinedraw.com/flash-vs-silverlight-gallery/</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=be7b3523-38a8-442d-9af8-7f8337d8553c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Clean Code Developer bei .Net Usergroup Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx</id>
    <published>2009-03-14T02:00:33+01:00</published>
    <updated>2009-03-13T03:13:03.4041345+01:00</updated>
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="" src="http://www.clean-code-developer.de/chrome/site/logo.jpg" />
        </p>
        <p>
Die Initiative Clean Code Developer (CCD) (<a href="http://www.clean-code-developer.de/">http://www.clean-code-developer.de/</a>)
hat sich zum Ziel gesetzt bestimmte Grundsätze bei der Entwicklung von Software bei
den Entwicklern besser zu verankern. Bei diesen Grundsätzen handelt es sich um Prinzipien,
Regeln und Praktiken deren Einhaltung zu qualitativ höherwertigem Code führt. Grundsätzlich
ist eine Schrittweise Einführung dieser Prinzipien, regeln und Praktiken unterteilt
in Grade vorgesehen. Zu jedem Grad gibt es ein farbiges Armband, das den Träger zum
Einen als CCD ausweist und ihn zudem stets daran erinnert diese Grundsätze in seiner
täglichen Arbeit zu befolgfen. Mit Sefan Lieser und Ralf Westphal stehen hinter diesem
Projekt zwei ausgewiesene Experten.
</p>
        <p>
Die .Net Developer-Group Ulm (<a href="http://www.dotnet-ulm.de">www.dotnet-ulm.de</a>)
möchte diese Aktion unterstützen und ruft seine Mitglieder auf sich zu beteiligen.
Beim nächsten Treffen am 19.03.09 wird diese Aktion im Detail vorgestellt und es besteht
die Möglichkeit die Armbänder zu einem vergünstigten Preis zu erwerben. Zudem ist
angedacht, dass sich die beteiligten regelmäßig nach den UG-Meetings austauschen und
gegenseitig über Erfahrungen berichten und die Konzepte des CCD miteinander diskutieren.
</p>
        <p>
Natürlich freue ich mich auf eine rege Teilnahme und natürlich sind Gäste gerne willkommen.
</p>
        <p>
Nähere Infos unter <a href="http://www.dotnet-ulm.de/Cleancodedeveloper.aspx">http://www.dotnet-ulm.de/Cleancodedeveloper.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=50e0823f-7eaa-45a3-86ae-66e2bdd6a795" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team Build Monitor &amp;ndash; Vista Sidebar Gadget</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx</id>
    <published>2009-03-13T13:34:33.1003045+01:00</published>
    <updated>2009-03-13T13:34:33.1003045+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
 <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamBuildMonitorVistaSidebarGadget_BEA0/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamBuildMonitorVistaSidebarGadget_BEA0/image_thumb.png" width="244" border="0" /></a></p>
        <p>
Mit diesem Sidebar-Gadget kann man sich den Status seiner Build schnell und einfach
anzeigen lassen.
</p>
        <p>
          <a href="http://blogs.msdn.com/jimlamb/archive/2007/06/22/team-build-monitor-vista-sidebar-gadget.aspx">Jim
Lamb : Team Build Monitor – Vista Sidebar Gadget</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f07bf10-d3cd-4168-b223-d5ddffafe52d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Treffen bei der .Net Developer-Group Ulm: Test Driven Development</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx</id>
    <published>2009-03-13T09:05:18.8034295+01:00</published>
    <updated>2009-03-13T09:05:18.8034295+01:00</updated>
    <category term="News" label="News" scheme="http://www.artiso.com/ProBlog/CategoryView,category,News.aspx" />
    <category term="Usergroup" label="Usergroup" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Usergroup.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/ct.ashx?id=c452a3fe-3660-44ca-b998-c392d0c6944b&amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fDaruiszParysbeider.NetDeveloperGroupUlm_ABBC%2fclip_image001_2.gif">
            <img title="clip_image001" height="108" alt="clip_image001" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DaruiszParysbeider.NetDeveloperGroupUlm_ABBC/clip_image001_thumb.gif" width="783" border="0" />
          </a>
        </p>
        <p>
Bei unserem nächsten Treffen am 19.03 haben wir Gregor Biswanger und Robert Walter
zu Gast. Diese werden in ihrem Vortrag verschiedene Aspekte zu Test Driven Development
beleuchten. Nähere Infos gibts hier:
</p>
        <p>
          <a href="http://www.dotnet-ulm.de/Treffen.aspx#19032009">http://www.dotnet-ulm.de/Treffen.aspx#19032009</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aaf0c40e-4974-4858-a8a8-3168b7095d71" />
      </div>
    </content>
  </entry>
  <entry>
    <title>MSDN Webcast zum Thema Team Build mit Custom Build Tasks erweitern</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</id>
    <published>2009-03-13T02:05:16.9510095+01:00</published>
    <updated>2009-03-13T02:05:16.9510095+01:00</updated>
    <category term="Eigene Tutorials" label="Eigene Tutorials" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Eigene%2BTutorials.aspx" />
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550" />
        </p>
        <p>
Am 16.03.09 geht ein neuer Webcast von mir online mit dem Thema "Team Build mit Custom
Build Tasks erweitern". Ich möchte hier schon mal die entsprechenden Infos veröffentlichen.
</p>
        <p>
In TeamBuild lassen sich eigene Build-Task integrieren. Diese können sehr einfach
erstellt werden. Hierzu wird eine Klasse erstellt und diese von Task abgeleitet. Im
folgenden Beispiel wird ein Build-Task erstellt, der im Rahmen des Builds die Version
der Anwendung setzt. Und zwar soll hier die Build-Nummer in der Versionsnummer der
Assembly abgebildet werden. Dies bietet Vorteile, wenn zu einer bestimmten Anwendungsversion
der entsprechende Build identifiziert werden soll. 
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">using</span> System;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">using</span> System.Collections.Generic;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">using</span> System.Text;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">using</span> Microsoft.Build.Utilities;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">using</span> Microsoft.Build.Framework;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">namespace</span> Artiso.BuildTasks</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #008000">///
Creates a AssemblyVersion out of a BuildNumber</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #008000">///
&lt;remarks&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #008000">///
AssemblyVersion.Minjor and AssemblyVersion.Minor will be defined fiexed in</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #008000">///
the Build-Script. If the BuildNumber is Dev_Versioning_20090305.4 we use </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">///
two digit year and month for AssemblyBuildNumber and day and 3 digit BuildRevision</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #008000">///
for AssemblyRevision. BuildRevisio </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #008000">///
&lt;/remarks&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #008000">///
&lt;example&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #008000">///
Dev_Versioning_20090305.4 =&gt; xx.yy.0903.05004</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #008000">///
&lt;/example&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> ExtractRevision
: Task</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #cc6633">#region</span> [rgn]
Fields(3)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> buildRevision;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> buildVersion;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> buildNumber;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span>
              <span style="color: #cc6633">#region</span> [rgn]
Properties(3)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span>
              <span style="color: #008000">///
Input Build Number</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 32:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 33:</span> [Required]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 34:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> BuildNumber</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 35:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 36:</span> set
{ buildNumber = <span style="color: #0000ff">value</span>; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 37:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 38:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 39:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 40:</span>
              <span style="color: #008000">///
Returns the sortened date of the build</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 41:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 42:</span> [Output]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 43:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> BuildVersion</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 44:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 45:</span> get
{ <span style="color: #0000ff">return</span> buildVersion; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 46:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 47:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 48:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 49:</span>
              <span style="color: #008000">///
Returns the Build Revision (number of build at this day</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 50:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 51:</span> [Output]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 52:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> BuildRevision</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 53:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 54:</span> get
{ <span style="color: #0000ff">return</span> buildRevision; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 55:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 56:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 57:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 58:</span>
              <span style="color: #cc6633">#region</span> [rgn]
Methods(1)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 59:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">override</span>
              <span style="color: #0000ff">bool</span> Execute()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 60:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 61:</span> buildVersion
= <span style="color: #006080">"0"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 62:</span> buildRevision
= <span style="color: #006080">"0"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 63:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 64:</span>
              <span style="color: #0000ff">if</span> (buildNumber
!= <span style="color: #0000ff">null</span> &amp;&amp; buildNumber.Contains(<span style="color: #006080">"."</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 65:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 66:</span>
              <span style="color: #0000ff">string</span>[]
buildNumberParts = buildNumber.Substring(buildNumber.LastIndexOf(<span style="color: #006080">'_'</span>)+1).Split(<span style="color: #006080">'.'</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 67:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 68:</span>
              <span style="color: #008000">//
Dev_Versioning_20090305.4 -&gt; 0903.02005</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 69:</span>
              <span style="color: #008000">//
use year (2 digits) and mont for buildversion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 70:</span> buildVersion
= buildNumberParts[0].Substring(2, 4);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 71:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 72:</span>
              <span style="color: #008000">//
use day and number of build in this day for build revision</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 73:</span> buildRevision
= buildNumberParts[0].Substring(6) + buildNumberParts[1].PadLeft(3, <span style="color: #006080">'0'</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 74:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 75:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">true</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 76:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 77:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 78:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 79:</span> }</pre>
          </div>
        </div>
        <p>
Das Property BuildNumber wird als Input-Parameter verwendet und mit dem Attribut [Required]
versehen. Darüber kann die BuildNumber in unseren Task übergeben werden. Durch das
Attribut [Output] werden die beiden Properties BuildVersion und BuildRevision als
Rückgabewerte definiert. Beim Ausführen des Builds wird die Methode Execute aufgerufen.
Hier werden nun aus der Build-Number die entsprechenden Informationen extrahiert und
diese dann in BuildVersion und BuildRevision zurückgeschrieben. Dies ist natürlich
nur ein einfaches Beispiel, aber mit diesen Grundlagen können nun beliebige Build-Tasks
definiert werden. Im nächsten Schritt schauen wir uns an, wie wir diesen Custom Build
Task nun in unseren Build-Prozess einbinden. Hierzu kopieren wir zunächst die Assembly
in einen entsprechenden Ordner. Hier bietet sich an unter c:\Program Files\MSBuild
einen entsprechenden Ordner anzulegen und dort die Assemblies abzulegen.
</p>
        <p>
Nun muss das Build-Script entsprechend angepasst werden. Diese liegt in der Quellcode-Verwaltung
und muss zum Bearbeiten zuerst aus- und danach wieder eingechecked werden. Um diesen
Vorgang zu vereinfachen empfehle ich die TFS Sidekicks (<a href="http://www.attrice.info/downloads/index.htm">http://www.attrice.info/downloads/index.htm</a>)
die direkt im Kontextmenü des TeamExplorers entsprechende Kommandos einfügt. Das nun
ausgecheckte PROJ-File kann nun bearbeitet werden.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">&lt;?</span>
              <span style="color: #800000">xml</span>
              <span style="color: #ff0000">version</span>
              <span style="color: #0000ff">="1.0"</span>
              <span style="color: #ff0000">encoding</span>
              <span style="color: #0000ff">="utf-8"</span>?<span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">&lt;!--
DO NOT EDIT the project element - the ToolsVersion specified here does not prevent
the solutions </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000"> and
projects in the SolutionToBuild item group from targeting other versions of the .NET
framework. </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000"> --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Project</span>
              <span style="color: #ff0000">DefaultTargets</span>
              <span style="color: #0000ff">="DesktopBuild"</span>
              <span style="color: #ff0000">xmlns</span>
              <span style="color: #0000ff">="http://schemas.microsoft.com/developer/msbuild/2003"</span>
              <span style="color: #ff0000">ToolsVersion</span>
              <span style="color: #0000ff">="3.5"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #008000">&lt;!--
Do not edit this --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Import</span>
              <span style="color: #ff0000">Project</span>
              <span style="color: #0000ff">="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Import</span>
              <span style="color: #ff0000">Project</span>
              <span style="color: #0000ff">="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">UsingTask</span>
              <span style="color: #ff0000">AssemblyFile</span>
              <span style="color: #0000ff">="$(MSBuildExtensionsPath)\ArtisoBuildTasks\ArtisoBuildTasks.dll"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #ff0000">TaskName</span>
              <span style="color: #0000ff">="ExtractRevision"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">&lt;!--
Assembly version properties. Adjust here Major and Minor Version--&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyMajorVersion</span>
              <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyMajorVersion</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyMinorVersion</span>
              <span style="color: #0000ff">&gt;</span>3<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyMinorVersion</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyBuildNumber</span>
              <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyBuildNumber</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyRevision</span>
              <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyRevision</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>  </pre>
...
</div>
        </div>
        <div>In Zeile 11 wird unser BuildTask entsprechend registriert. In Zeile 9 werden
noch weitere Build-Tasks registriert. Hier gereicht es uns zum Vorteil, dass Team-Build
auf MSBuild basiert. D.h. es können entsprechende Tasks für MSBuild problemlos integriert
werden. Diese gibt es in großer Zahl für sehr viele Anwendungsbereiche zum großen
Teil frei Verfügbar zum Download. Wir verwenden hier die MSBuild Community Tasks (<u><a href="http://msbuildtasks.tigris.org/">http://msbuildtasks.tigris.org/</a></u>).
Wir werden aus diesem Paket Aktionen verwenden.
</div>
        <div> 
</div>
        <div>In den Zeilen 14 bis 20 wird eine sog. PropertyGroup angelegt. Darin werden einzelne
Properties definiert und mit Default-Werten vorbelegt. Diese Properties lassen sich
mit Variablen innerhalb eines Software-Codes vergleichen. Die AssemblyMajorVersion
und AssemblyMinorVersion werden hier festgelegt. AssemblyBuildNumber und AssemblyRevision
werden wir im weiteren Verlauf überschreiben.
</div>
        <div> 
</div>
        <div>Am Ende des Scripts direkt vor dem schließenden &lt;/Project&gt;-Tag wird nun
ein Target-Block eingefügt.
</div>
        <div> 
</div>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> ...</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Target</span>
              <span style="color: #ff0000">Name</span>
              <span style="color: #0000ff">="AfterGet"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyInfoFiles</span>
              <span style="color: #ff0000">Include</span>
              <span style="color: #0000ff">="$(SolutionRoot)\**\assemblyinfo.cs"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="Get
Revision Number from BuildNumber &amp;quot;$(BuildNumber)&amp;quot;."</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ExtractRevision</span>
              <span style="color: #ff0000">BuildNumber</span>
              <span style="color: #0000ff">="$(BuildNumber)"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Output</span>
              <span style="color: #ff0000">TaskParameter</span>
              <span style="color: #0000ff">="BuildRevision"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #ff0000">PropertyName</span>
              <span style="color: #0000ff">="AssemblyRevision"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Output</span>
              <span style="color: #ff0000">TaskParameter</span>
              <span style="color: #0000ff">="BuildVersion"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #ff0000">PropertyName</span>
              <span style="color: #0000ff">="AssemblyBuildNumber"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">ExtractRevision</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">&lt;!--
Update all the assembly info files with generated version info --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="Modifying
AssemblyInfo files under &amp;quot;$(SolutionRoot)&amp;quot;."</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Attrib</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(AssemblyInfoFiles)"</span>
              <span style="color: #ff0000">Normal</span>
              <span style="color: #0000ff">="true"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(AssemblyInfoFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #ff0000">Regex</span>
              <span style="color: #0000ff">="AssemblyVersion\(&amp;quot;.*&amp;quot;\)\]"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="AssemblyVersion(&amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;quot;)]"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(AssemblyInfoFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #ff0000">Regex</span>
              <span style="color: #0000ff">="AssemblyFileVersion\(&amp;quot;.*&amp;quot;\)\]"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="AssemblyFileVersion(&amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;quot;)]"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="AssemblyInfo
files updated to version &amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;quot;"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Target</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Project</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <div>Über den Namen des Target-Blocks mit "AfterGet" wird festgelegt, dass dieser
Block ausgeführt wird, nachdem der Build-Prozess die Quelldateien aus der Versionsverwaltung
geholt hat. Genau zu diesem Zeitpunkt wollen wir unsere Versionierung anpassen. In
den Zeilen 3 bis 5 erstellen wir eine ItemGroup die alle assemblyinfo.cs Dateien unserer
Solution enthält. In diesen Dateien wollen wir die Version anpassen. In Zeile 7 wird
eine Meldung in das Build-Log geschrieben. Dies ist hilfreich, um Fehler im Ablauf
des Scriptes besser einordnen zu können. 
</div>
        <div>In den Zeilen 8 bis 13 wird nun unser Build-Task aufgerufen. Wir übergeben die
Buildnummer $(BuildNumber) in den Parameter BuildNumber und lesen die Output-Parameter
aus und schreiben diese in AssemblyRevision bzw. AssemblyBuildNumber (die Properties
die wir weiter oben definiert hatten). In Zeile 17 heben wir den Schreibschutz der
AssemblyInfo-Dateien auf und in den folgenden Zeilen wird mit Hilfe eines Ersetzen-Vorgangs
die Version in den AssemblyInfo-Dateien ersetzt. Für diese Aktionen nutzen wir die
Community Build Tasks.
</div>
        <div>Damit können wir nun die Version unserer Anwendung bei jedem Build entsprechend
setzen.
</div>
        <div>In einem nächsten Schritt wollen wir den Build-Task nun noch erweitern um das
Build-Result in einer ZIP-Datei zu verpacken und diese anschließend per Mail zu versenden.
Auch hierbei greifen wir auf die MSBuild Community Tasks zurück. Das entsprechende
Target-Tag fügen wir einfach nach dem zuvor definierten ein. Als Name geben wir "AfterCompile"
an so dass diese Aktionen nach dem Kompilieren ausgeführt werden. 
</div>
        <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
          <span style="color: #606060"> 1:</span>
          <span style="color: #0000ff">&lt;</span>
          <span style="color: #800000">Target</span>
          <span style="color: #ff0000">Name</span>
          <span style="color: #0000ff">="AfterCompile"</span>
          <span style="color: #0000ff">&gt;</span>
        </pre>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">CreateItem</span>
              <span style="color: #ff0000">Include</span>
              <span style="color: #0000ff">="..\Binaries\Release\**\*.*"</span>
              <span style="color: #ff0000">Exclude</span>
              <span style="color: #0000ff">="..\Binaries\Release\**\*.pdb;..\Binaries\Release\**\*codeanalysis*"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Output</span>
              <span style="color: #ff0000">ItemName</span>
              <span style="color: #0000ff">="ZipFiles"</span>
              <span style="color: #ff0000">TaskParameter</span>
              <span style="color: #0000ff">="Include"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">CreateItem</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="Zipping
Buildresult to \\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Zip</span>
              <span style="color: #ff0000">ZipFileName</span>
              <span style="color: #0000ff">="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ZipFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #ff0000">WorkingDirectory</span>
              <span style="color: #0000ff">="..\Binaries\Release\"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Mail</span>
              <span style="color: #ff0000">SmtpServer</span>
              <span style="color: #0000ff">="tfs"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #ff0000">To</span>
              <span style="color: #0000ff">="tschissler@tfs"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #ff0000">From</span>
              <span style="color: #0000ff">="build@tfs"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #ff0000">Subject</span>
              <span style="color: #0000ff">="BuildDemo
v$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)
released"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #ff0000">Body</span>
              <span style="color: #0000ff">="A
new version of the BuildDemo was released. Please find the newest files attached to
this mail. You can also download them from the download folder."</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #ff0000">Attachments</span>
              <span style="color: #0000ff">="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Target</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <p>
Hier sammeln zunächst alle Dateien aus dem Build-Drop-Verzeichnis exklusive der PDB-
und Codeanalyse-Dateien In Zeilen 8-10 werden diese Dateien in ein ZIP-File verpackt
dem wir im datei-Name die Version mitgeben. Anschließend versenden wir eine e-Mail
der wir dieses ZIP-File als Attachment anhängen. 
</p>
        <p>
Als zweite Variante wollen wir im Rahmen des Builds ein Click-Once Paket erstellen.
Die Herausforderung bei der Erstellung des ClickOnce-Paketes ist dass dort die Deployment-Url
hinterlegt werden muss. Vor allem wenn verschiedene Pakete für unterschiedliche Kunden
erstellt werden sollen, ist dies nur durch eine Automatisierung im Rahmen des Builds
sinnvoll handelbar. Hierzu ersetzen wir den AfterCompile-Target durch folgendes Script:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Target</span>
              <span style="color: #ff0000">Name</span>
              <span style="color: #0000ff">="AfterCompile"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">&lt;!--
Publish using ClickOnce --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="modify
Publish directory for $(SolutionRoot)"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000">&lt;!--
Update directory where to publish the project --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ProjectFiles</span>
              <span style="color: #ff0000">Include</span>
              <span style="color: #0000ff">="$(SolutionRoot)\Source\Dev\BuildDemo\BuildDemo.csproj"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">PublishDir</span>
              <span style="color: #0000ff">&gt;</span>\\tfs\Deploy\BuildDemo\ClickOnce\<span style="color: #0000ff">&lt;/</span><span style="color: #800000">PublishDir</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">InstallUrl</span>
              <span style="color: #0000ff">&gt;</span>\\tfs\Deploy\BuildDemo\ClickOnce\<span style="color: #0000ff">&lt;/</span><span style="color: #800000">InstallUrl</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Attrib</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
              <span style="color: #ff0000">Normal</span>
              <span style="color: #0000ff">="true"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>      <span style="color: #ff0000">Regex</span><span style="color: #0000ff">="&amp;lt;PublishUrl&amp;gt;.*&amp;lt;/PublishUrl&amp;gt;"</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="&amp;lt;PublishUrl&amp;gt;$(PublishDir)&amp;lt;/PublishUrl&amp;gt;"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #ff0000">Regex</span>
              <span style="color: #0000ff">="&amp;lt;InstallUrl&amp;gt;.*&amp;lt;/InstallUrl&amp;gt;"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="&amp;lt;InstallUrl&amp;gt;$(InstallURL)&amp;lt;/InstallUrl&amp;gt;"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">MSBuild</span>
              <span style="color: #ff0000">Projects</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #ff0000">Properties</span>
              <span style="color: #0000ff">="PublishDir=$(PublishDir);ApplicationVersion=$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #ff0000">Targets</span>
              <span style="color: #0000ff">="Publish"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Target</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <p>
In den Zeilen 5 bis 7 lesen wir das csproj-File der Anwendung in eine ItemGroup. Anschließend
definieren wir zwei Properties für PublishDir und InstallUrl. Diese werden dann über
eine Ersetzung in die csproj-Datei eingefügt. Anschließend wird ein MSBuild-Task gestartet
der das ClickOnce-Paket erstellt und an der angegebenen PublishDir und mit der Versionsnummer
veröffentlicht.
</p>
        <p>
Das Ganze wird in dem genannten Webcast Live demonstriert. Über Feedback würde ich
mich sehr freuen.
</p>
        <p>
          <a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405249">Details
zur Veranstaltung: Team Build mit Custom Build Tasks erweitern [1032405249] - Microsoft
Deutschland GmbH</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=70ff6e02-8a52-4d96-86b1-cb1029b2a362" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Thomas @ MVP-Summit</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx</id>
    <published>2009-03-12T00:22:12.9984245+01:00</published>
    <updated>2009-03-12T00:22:12.9984245+01:00</updated>
    <category term="News" label="News" scheme="http://www.artiso.com/ProBlog/CategoryView,category,News.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Letzte Woche war ich auf dem MVP-Summit in Seattle. Für mich war es die erste Veranstaltung
dieser Art und so wusste ich nicht genau, was mich erwarten würde. Ich wurde aber
auf jeden Fall positiv überrascht. Es war für mich eine Woche voller neuer Infos und
Eindrücke und es war auch sehr cool, die anderen Team System MVPs persönlich zu treffen
und sich mit denen auszutauschen. 
</p>
        <p>
Gerade im Bereich Team System tut sich momentan extrem viel und so hatten wir ein
Non-Stop Programm und um VSTS 2010. Non Stop heißt, dass es bereits am Sonntag Nachmittag
mit einer MVP 2 MVP Session losging, wo einige MVPs Erfahrungen aus ihrer Praxis darstellten.
Das war extrem interessant und ich konnte viele neue Ideen mitnehmen. Am Montag und
Dienstag hatten wir dann von 8:00 bis 18:00 Uhr volles Programm. Verschiedene Mitglieder
der Product-Group stellten die einzelnen Bereiche von VSTS 2010 vor. Volles Programm
heißt in diesem Fall Sessions ohne Pause (wir hatten selbst Lunch-Sessions, wo man
sich am Buffet etwas zu Essen holte und dann sich setzte um der aktuellen Session
zu folgen). Neno hat wirklich ein anspruchsvolles Programm für uns zusammen mit der
Product-Group zusammengestellt. Da war wirklich extrem viel Content drin. Am Mittwoch
waren dann Key-Notes angesagt, die ich allerdings etwas enttäuschend fand und damit
wirklich keine Zeit verschwendet war, hatten wir am Mittwoch Nachmittag nochmals Sessions
bei denen wir mit Sam Guckenheimer über die zukünftige Entwicklung diskutierten. 
</p>
        <p>
Eine wirklich extrem interessante Woche mit vielen neuen Eindrücken. Es wird wohl
etwas dauern, bis ich das alles verarbeitet habe, der geneigte Leser wird aber dann
die Ergebnisse an dieser Stelle lesen können ;-) Im Moment kann ich das Ganze nur
so zusammenfassen: VSTS 2010 is a realy big, big  thing!
</p>
        <p>
Hier noch ein paar Impressionen:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020645.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="P1020645" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020645_thumb.jpg" width="244" border="0" />
          </a>
        </p>
        <p>
Blick von der Space Needle auf Seattle
</p>
        <p>
          <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="P1020686" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020686_thumb.jpg" width="244" border="0" />
        </p>
        <p>
Die Team-System MVPs 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020691.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="P1020691" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020691_thumb.jpg" width="244" border="0" />
          </a>
        </p>
        <p>
Sam Guckenheimer 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020704.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="P1020704" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020704_thumb.jpg" width="244" border="0" />
          </a>
        </p>
        <p>
Brian Harry 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020686.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="P1020726" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020726_thumb.jpg" width="244" border="0" /> </a>
        </p>
        <p>
Karaoke mit Live-Band bei der Party
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020754.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="P1020754" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020754_thumb.jpg" width="244" border="0" />
          </a>
        </p>
        <p>
Steve Balmer bei seiner Key-Note
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020726.jpg">
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Meine Vortr&amp;auml;ge auf der BASTA</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx</id>
    <published>2009-02-24T21:52:49.3268835+01:00</published>
    <updated>2009-02-24T21:52:49.3268835+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderBASTA_1325D/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="78" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderBASTA_1325D/image_thumb.png" width="244" border="0" />
          </a>
        </p>
        <p>
Gestern und heute hatte ich auf der <a href="http://www.basta.net">BASTA</a> zwei
Vorträge. Hier die Folien dazu:
</p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:720246ab-1eb1-4ac3-92e6-5f98d0159bbc" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderBASTA_1325D/Testing%20Practices.pptx" target="_blank">10
Gründe für das Fehlschlagen von Software-Projekten</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderBASTA_1325D/10%20Gr%C3%BCnde%20f%C3%BCr%20fehlgeschlagene%20Software-Projekte.pptx" target="_blank">Testing
Practices</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7a927529-07d5-43ff-8d18-1465cd936b1f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>MSDN WebCast zu PEX</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx</id>
    <published>2009-02-24T21:06:26.7173135+01:00</published>
    <updated>2009-02-24T21:06:26.7173135+01:00</updated>
    <category term="PEX" label="PEX" scheme="http://www.artiso.com/ProBlog/CategoryView,category,PEX.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550" /> 
</p>
        <p>
Zusammen mit <a href="http://blogs.msdn.com/cbinder/">Christian Binder</a> habe ich
einen WebCast aufgenommen in dem wir <a href="http://research.microsoft.com/en-us/projects/pex">PEX</a> vorstellen.
Der WebCast wird ab 12.03 online sein. 
</p>
        <p>
          <a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405246">Details
zur Veranstaltung: Unit-Test Generierung mit PEX [1032405246] - Microsoft Deutschland
GmbH</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6325d79d-45fb-4e1c-8120-f4e34cd7a246" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Meine Vortr&amp;auml;ge auf der VSOne</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx</id>
    <published>2009-02-20T08:03:56.818+01:00</published>
    <updated>2009-02-20T08:37:01.4119734+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="html">&lt;p&gt;
&lt;img height="167" alt="Visual Studio, Visual Studio 2005, Konferenz, VS 2005, VS Konferenz, SQL Konferenz, Agile, .NET 2.0, .NET 3.0, .NET, ASP .NET, ASP .NET 2.0, Marquardt, Loje, Dr&amp;ouml;ge, Westphal, ADC, Avanced Developers Conference, ASP konferenz, Business Compact, LINQ, T-SQL, Health Care,  ,NET 3.5 Framework, Windows 2008 Server, Visual Studio 2008, SQL Server 2008, SQL Server, SQL Server 2005, ASP .NET AJAX, AJAX, Business Intelligence, SharePoint 2007, 3D, Windows Forms,  IMAX, ADO .NET, Agile Projekte, Agile, Analysis Services 2008, WPF, WF, WCF, Silverlight, Service Broker 2008, Data Mining, BizTalk Server, XML, Integration Services, VB.NET, XAML,  Blend, Performance-Optimierung 2005, Visual Studio Team System, SCD Transformations,  OLAP, MDX, PowerShell, Web 2.0, Windows Web Server 2008, ppedv AG, Vista, Microsoft, MS, Windows" src="http://www.vsone.de/Images09/StartNEU.jpg" width="530"&gt;
&lt;/p&gt;
&lt;p&gt;
Ich bin reichlich spät dran, die VSOne ist schon seit einer Woche vorbei. Hier aber
nun endlich meine Folien zu meinen Vorträgen
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:27953e29-d39b-476f-834f-75a06214bdd6" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderVSOne_147F8/UI%20Driven%20Development.zip" target="_blank"&gt;UI
Driven Development&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:48ab7c00-9169-47ba-b7f0-b4fe6319ac0a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderVSOne_147F8/PEX.pptx" target="_blank"&gt;Automatisierte
Generierung von Unit-Tests mit PEX&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:1ea8f79c-5804-4b1a-bf06-079ba0c67f35" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderVSOne_147F8/Organisation%20von%20Entwickler-Teams.zip" target="_blank"&gt;Organisation
von Entwickler-Teams&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:f3d21b9e-7e2e-486c-8d6a-d0667a86100d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderVSOne_147F8/TDD%20QuickStart.zip" target="_blank"&gt;TDD
Quick Start&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0" /&gt;</content>
  </entry>
  <entry>
    <title>Neuer Web-Cast zu Testing Practices</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx</id>
    <published>2009-02-20T07:12:30+01:00</published>
    <updated>2009-02-20T08:14:51.0237779+01:00</updated>
    <category term="PEX" label="PEX" scheme="http://www.artiso.com/ProBlog/CategoryView,category,PEX.aspx" />
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550" />
        </p>
        <p>
Zusammen mit <a href="http://blogs.msdn.com/cbinder">Christian</a> habe ich einen
Webcast zum Thema Testing Practices aufgenommen. In dem Webcast werden zunächst verschiedene
Testmethoden vorestellt und anschließend werden verschiedene Aspekte einer Teststrategie
diskutiert wie z.B. Methoden zur Testfall-Ermittlung.
</p>
        <p>
Der komplette Abstract lautet:
</p>
        <blockquote>
          <p>
Qualität spielt in Software-Projekten eine immer größere Rolle. Ein wesentlicher Aspekt
für Software-Qualität ist das Testen. Der Webcast stellt zunächst kurz die verfügbaren
Testmethoden in Visual Studio vor und zeigt anschließend Aspekte einer Test-Strategie
auf. Darüber hinaus wird die Integration mit dem Team Foundation Server kurz beleuchtet
und es werden Methoden zur Testfallermittlung beschrieben.
</p>
        </blockquote>
        <p>
Über ein Feedback zum Webcast würde ich mich freuen.
</p>
        <p>
          <a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405240">http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405240</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3165d52b-b393-4eb6-9046-692783a3d704" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Asserts in parametrisierten Unit-Tests mit PEX</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx</id>
    <published>2009-02-20T01:20:23.6781568+01:00</published>
    <updated>2009-02-20T01:20:23.6781568+01:00</updated>
    <category term="PEX" label="PEX" scheme="http://www.artiso.com/ProBlog/CategoryView,category,PEX.aspx" />
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
An einem kleinen Beispiel möchte ich kurz erläutern, wie PEX parametrisierte Unit-Tests
nutzt und wie man diese nutzen kann um bestimmte Test-Szenarien abzubilden. Wir nehmen
einen kleinen Codeausschnitt um uns das mal anzusehen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> TotalSum</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">double</span> total
= 0;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">double</span> CalculateTotals(List&lt;cOrderPosition&gt;
OrderPositions, <span style="color: #0000ff">double</span> Rebate)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (OrderPositions
== <span style="color: #0000ff">null</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span> 0;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">foreach</span> (cOrderPosition
orderPos <span style="color: #0000ff">in</span> OrderPositions)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">if</span> (orderPos.Amount
&gt; 0 &amp;&amp; orderPos.SinglePrice &gt; 0)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> total
+= orderPos.Amount * orderPos.SinglePrice; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">if</span> (Rebate
&gt; 0)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> total
= total * (1 - Rebate);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">return</span> total;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cOrderPosition</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">int</span> ProductID
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">double</span> Amount
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">double</span> SinglePrice
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Auf den ersten Blick scheint da alles OK zu sein. Mal sehen was PEX daraus jetzt macht.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_4.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="166" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_thumb_1.png" width="594" border="0" />
          </a>
        </p>
        <p>
Zunächst sehen wir, dass PEX 3 Probleme mit Object Creations hat. Für den ersten Fall
lassen wir PEX einfach automatisiert eine Factory erstellen indem wir auf "Accept/Edit
factory" klicken. Für die Liste müssen wir ebenfalls eine Factory erstellen. Diese
Factory wollen wir jetzt noch anpassen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [PexFactoryMethod(<span style="color: #0000ff">typeof</span>(List&lt;TotalSum.cOrderPosition&gt;))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">static</span> List&lt;TotalSum.cOrderPosition&gt;
Create(<span style="color: #0000ff">int</span> NumberOfItems)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> List&lt;TotalSum.cOrderPosition&gt;
list = <span style="color: #0000ff">new</span> List&lt;TotalSum.cOrderPosition&gt;(NumberOfItems);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (NumberOfItems
&gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> NumberOfItems
= 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i
= 0; i &lt; NumberOfItems; i++)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> list.Add(<span style="color: #0000ff">new</span> TotalSum.cOrderPosition()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> ProductID
= i + 1,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> SinglePrice
= <span style="color: #0000ff">new</span> Random().NextDouble() * 10,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> Amount
= <span style="color: #0000ff">new</span> Random().NextDouble() * 10</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> });</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">return</span> list;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Abhängig von der Anzahl Items die als Parameter übergeben wird, wird die Liste mit
entsprechend vielen Elementen befüllt. Nun erhalten wir Ergebnisse bei der Exploration.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_6.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="175" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_thumb_2.png" width="591" border="0" />
          </a>
        </p>
        <p>
Und es sind alle grün. Also alles OK? Jetzt kommt der parametrisierte Unit-Test in's
Spiel. Dazu müssen wir erst mal die Test generieren. Dazu einfach alle Einträge markieren
und rechts auf "Save..." klicken.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_8.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="147" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_thumb_3.png" width="597" border="0" />
          </a>  
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(TotalSumTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateTotals04()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> TotalSum
totalSum;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> List&lt;TotalSum.cOrderPosition&gt;
list;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">double</span> d;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> totalSum
= TotalSumFactory.Create();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> list
= ListFactory.Create(1);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> d
= <span style="color: #0000ff">this</span>.CalculateTotals(totalSum, list, 0);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> Assert.AreEqual&lt;<span style="color: #0000ff">double</span>&gt;(42.232177096754121,
d);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> }</pre>
          </div>
        </div>
        <p>
Wenn wir uns eine der generierten Testmethoden mal genauer anschauen, dann erkennen
wir dass in Zeile 9 unsere ListFactory aufgerufen wird und in Zeile 10 wird eine Methode
CalculateTotals aufgerufen. Bei dieser Methode handelt es sich um unseren parameterisierten
Unit-Test der in der .cs-Datei abgelegt ist. Dieser parametrisierte Unit-Test nimmt
Input-Werte engegen und ruft damit die eigentliche Funktion auf. Man kann den parametrisierten
Unit-Test eigentlich mit einem datengetriebenen Test vergleichen, mit dem Unterschied
dass die Daten nicht aus einer Datenquelle kommen sondern von den jeweiligen Testmethoden
übergeben werden.
</p>
        <p>
Wir können den parametrisierten Unit-Test selbst anpassen und auch Asserst einfügen.
Was wir nun hier tun wollen, ist die eigentliche Test-Methode zwei mal aufzurufen
und zu prüfen, ob beide Ergebnisse übereinstimmen. Bei gleichen Eingangswerten sollte
dies ja der Fall sein. Der parametrisierte Unit-test sieht dann ungefähr so aus.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestClass]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexClass(<span style="color: #0000ff">typeof</span>(TotalSum))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> [PexAllowedExceptionFromTypeUnderTest(<span style="color: #0000ff">typeof</span>(ArgumentException),
AcceptExceptionSubtypes = <span style="color: #0000ff">true</span>)]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> [PexAllowedExceptionFromTypeUnderTest(<span style="color: #0000ff">typeof</span>(InvalidOperationException))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> TotalSumTest</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> [PexMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">double</span> CalculateTotals(</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> [PexAssumeUnderTest]TotalSum
target,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> List&lt;TotalSum.cOrderPosition&gt;
OrderPositions,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">double</span> Rebate</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> )</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">double</span> result
= target.CalculateTotals(OrderPositions, Rebate);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">double</span> result2
= target.CalculateTotals(OrderPositions, Rebate);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> Assert.AreEqual(result,
result2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">return</span> result;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Diese Prüfung wird nun für alle Testmethoden ausgeführt. Und wie sieht das Ergebnis
aus?
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_10.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="260" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_thumb_4.png" width="695" border="0" />
          </a>
        </p>
        <p>
Wir erhalten nun einen Fehlerfall. Wenn man sich den Code der Test-Methode nochmals
genauer anschaut, stellt man fest, dass die lokale Variable total beim erneuten Aufruf
nicht zurückgesetzt wird - ein klassischer Fehler. Wenn wir die Variable in der Methode
zurücksetzen, dann werden unsere Testfälle auch alle erfolgreich sein. 
</p>
        <p>
Somit haben wir mit Hilfe von PEX einen gängigen Fehler gefunden der in Real-World-Projekten
sicher im Code selbst nicht so offensichtlich wäre.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=051e943e-0c34-48ef-ac5d-ae55777af6f0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Overflow Exceptions mit PEX finden</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx</id>
    <published>2009-02-19T20:54:48.8416268+01:00</published>
    <updated>2009-02-19T20:54:48.8416268+01:00</updated>
    <category term="PEX" label="PEX" scheme="http://www.artiso.com/ProBlog/CategoryView,category,PEX.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ich habe in einem <a href="http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx">früheren
Post</a> bereits einige Beispiele für den Einsatz von PEX beschrieben. ich möchte
nun in loser Reihe weitere Erkenntnisse die ich beim Experimentieren mit PEX gewinne
hier veröffentlichen. Heute möchte ich mich mit Overflow-Exceptions beschäftigen.
Anlass war eine Diskussion mit <a href="http://www.nfranze.de/">Nico</a>. Als erstes
Beispiel wollen wir uns mal folgenden Code ansehen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">decimal</span> Calc(<span style="color: #0000ff">decimal</span> Value, <span style="color: #0000ff">bool</span> Increase)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">if</span> (Increase)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span> Value+1;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span> Value-1;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> }</pre>
          </div>
        </div>
        <p>
Für eine komplette Codeabdeckung muss PEX eigentlich nur den Boolean-Parameter Increase
berücksichtigen. Der Parameter Value kann eigentlich beliebig gewählt werden, auf
die Code-Abdeckung hat der keinen Einfluss. Aber natürlich erkennt man dass es natürlich
auch Fälle gibt in denen die Methode eine OverflowException wirft, nämlich bei value
= decimal.MaxValue, Increase = true und value = decimal.MinValue, Increase = false. 
</p>
        <p>
Das erfreuliche ist, dass mit der aktuellen Version (0.9.40105.0) PEX zusätzlich zur
Codeabdeckung auch Grenzwerte berücksichtigt:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/OverflowExceptionsmitPEXfinden_11AC8/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="171" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/OverflowExceptionsmitPEXfinden_11AC8/image_thumb.png" width="770" border="0" />
          </a>
        </p>
        <p>
Bei einem anderen Beispiel funktioniert das leider (noch) nicht. 
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">decimal</span> ToDecimal(<span style="color: #0000ff">double</span> Value)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">return</span> (<span style="color: #0000ff">decimal</span>)Value;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> }</pre>
          </div>
        </div>
        <p>
Hier wird leider keine Grenzwertbetrachtung gemacht, die ja zu einer Exception führen
würde da der Wertebereich von decimal kleiner ist als der von double.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/OverflowExceptionsmitPEXfinden_11AC8/image_4.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="172" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/OverflowExceptionsmitPEXfinden_11AC8/image_thumb_1.png" width="779" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c80d260c-fed8-4c69-90a8-7ca55851616c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Testliste exportieren - Variante 2</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx</id>
    <published>2009-02-19T00:43:08.6696268+01:00</published>
    <updated>2009-02-19T00:43:34.0133768+01:00</updated>
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx">Hier</a> hatte
ich beschrieben, wie man die Test-Results aus Visual Studio nach Excel übertragen
kann. Heute möchte ich ein Tool vorstellen, das es erlaubt, TRX-Files nach HTML zu
konvertieren.
</p>
        <p>
Zunächst speichert man das Test-Result in ein TRX-File. Dies geht über den Button
"Export Test Run Results".
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="197" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_thumb.png" width="657" border="0" />
          </a>
        </p>
        <p>
Anschließend kann man mit dem Tool <a href="http://www.codeplex.com/trx2html">trx2html</a> das
HTML-File erstellen. trx2html ist ein Open-Source Projekt von CodePlex. Es wird als
Commandozeilen-Tool ausgeführt und als Parameter wird einfach das TRX-File angegeben.
Als Ergebnis wird nun ein HTML-File erstellt das die Testergebnis entsprechend dokumentiert
und auch einige Drill-Down-Funktionen bietet:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_4.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="462" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_thumb_1.png" width="662" border="0" />
          </a>
        </p>
        <p>
Durch einen Klick auf das rote Kreis-Icon neben einem der Test kann z.B. ein Stack-Trace
eingeblendet werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_6.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="464" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_thumb_2.png" width="658" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.codeplex.com/trx2html">trx2html - Home</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0f381ed8-5c83-4682-8c70-a35abafb9491" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Code Coverage f&amp;uuml;r manuelle Tests</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx</id>
    <published>2009-02-18T23:02:18+01:00</published>
    <updated>2009-02-26T23:04:17.8256745+01:00</updated>
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Testing" label="Testing" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Testing.aspx" />
    <category term="VS 2008" label="VS 2008" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2008.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bei Unit-Tests bietet die Code-Coverage eine gute und einfache Möglichkeit zu prüfen,
ob durch die definierten Test-Cases alle Code-Pfade in einer Methode wirklich durch
Tests ausgeführt werden. Dies hilft beispielsweise dabei, noch fehlende Test-Cases
zu identifizieren.
</p>
        <p>
Auch mit manuellen Tests ist es möglich, eine Code-Coverage Analyse durchzuführen
um auch hier fehlende Test-Cases zu ergänzen. Das folgende Beispiel zeigt eine mögliche
Vorgehensweise.
</p>
        <p>
Zunächst wird davon ausgegangen, dass ein maueller Test spezifiziert ist. Dieser kann
z.B. so aussehen:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_4.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="413" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_thumb_1.png" width="352" border="0" />
          </a>
        </p>
        <p>
Nun wird ein Unit-Test erzeugt. Im Unit-Test wird eine Test-Methode angelegt die der
Main-Methode der zu testenden Anwendung entspricht:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [STAThread]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> FrmMainConstructorTest()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> Application.EnableVisualStyles();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Application.SetCompatibleTextRenderingDefault(<span style="color: #0000ff">false</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> Application.Run(<span style="color: #0000ff">new</span> FrmMain());</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Anschließend muss geprüft werden, ob die Code Coverage analyse für die gewünschten
Assemblies aktiviert ist (Menü Test / Edit Test Run Configurations / Local Test Run)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_6.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="274" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_thumb_2.png" width="384" border="0" />
          </a>
        </p>
        <p>
Wird nun der Test gestartet, öffnet sich die Testanwendung. Hier werden nun die einzelnen
Test-Schritte gemäß Testspezifikation ausgeführt. Anschließend wird die Test-Anwendung
beendet. Dies schließt automatisch auch den Test ab. Nun cann die Code-Coverage ausgewertet
werden:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_8.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="228" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_thumb_3.png" width="502" border="0" />
          </a>
        </p>
        <p>
Und natürlich lassen sich auch die durchlaufenen und nicht durchlaufenen Code-Zeilen
farblich kennzeichnen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_10.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="300" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_thumb_4.png" width="435" border="0" />
          </a>
        </p>
        <p>
Den ganzen Ablauf wird in folgendem Video auch nochmals detailliert gezeigt:
</p>
        <object style="width: 639px; height: 476px" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" type="application/x-oleobject" height="476" standby="Loading Microsoft Windows Media Player components..." width="639" classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" name="Video">
          <param name="URL" value="http://content.screencast.com/users/TSchissler/folders/Default/media/1178b9cb-5334-4c72-967a-bd312d7238d6/ManualTestsCodeCoverage.wmv" />
          <param name="rate" value="1" />
          <param name="balance" value="0" />
          <param name="currentPosition" value="0" />
          <param name="defaultFrame" value="" />
          <param name="playCount" value="1" />
          <param name="autoStart" value="0" />
          <param name="currentMarker" value="0" />
          <param name="invokeURLs" value="-1" />
          <param name="baseURL" value="" />
          <param name="volume" value="50" />
          <param name="mute" value="0" />
          <param name="uiMode" value="full" />
          <param name="stretchToFit" value="0" />
          <param name="windowlessVideo" value="0" />
          <param name="enabled" value="-1" />
          <param name="enableContextMenu" value="-1" />
          <param name="fullScreen" value="0" />
          <param name="SAMIStyle" value="" />
          <param name="SAMILang" value="" />
          <param name="SAMIFilename" value="" />
          <param name="captioningID" value="" />
          <param name="enableErrorDialogs" value="0" />
          <param name="_cx" value="16907" />
          <param name="_cy" value="12594" />
          <embed name="Video" type="application/x-mplayer2" src="http://content.screencast.com/users/TSchissler/folders/Default/media/1178b9cb-5334-4c72-967a-bd312d7238d6/ManualTestsCodeCoverage.wmv" autostart="0" showcontrols="1" uimode="full" playcount="1" currentposition="0" width="800" height="665">
          </embed>
        </object>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=df19cbe3-5daf-4bef-b47f-c2979f0073e2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Daruisz Parys bei der .Net Developer-Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx</id>
    <published>2009-02-13T12:13:52.5609068+01:00</published>
    <updated>2009-02-13T12:13:52.5609068+01:00</updated>
    <category term=".Net 3.5" label=".Net 3.5" scheme="http://www.artiso.com/ProBlog/CategoryView,category,.Net%2B3.5.aspx" />
    <category term="ADO.Net" label="ADO.Net" scheme="http://www.artiso.com/ProBlog/CategoryView,category,ADO.Net.aspx" />
    <category term="Architektur" label="Architektur" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Architektur.aspx" />
    <category term="Know-How" label="Know-How" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Know-How.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DaruiszParysbeider.NetDeveloperGroupUlm_ABBC/clip_image001_2.gif">
            <img title="clip_image001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="108" alt="clip_image001" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DaruiszParysbeider.NetDeveloperGroupUlm_ABBC/clip_image001_thumb.gif" width="783" border="0" />
          </a>
        </p>
        <p>
Beim nächsten Treffen der .Net Developer-Group Ulm dürfen wir diesesmal Dariusz Parys
begrüßen, der zum Thema “Architektur der Datenanbindungsschicht, insbesondere ADO.NET
Data Services und Entity Framework” spricht. Der Abstract verspricht schon mal einen
sehr spannenden Abend:
</p>
        <blockquote>
          <p>
LINQ to SQL, ADO.NET, Entity Framework, Entity Data Model, REST mit ADO.NET Data Services
oder Serialisierung mit WCF ? – neben einem Überblick über die Alternativen und detailliertere
Darstellung des Entity Frameworks wird darauf eingegangen, welche Kriterien beim O/R-Mapping
zur Bewertung zur Verfügung stehen und diskutiert, welcher Nutzen darin liegt, die
Datenanbindung von einer technischen Ebene auf eine logische zu heben.
</p>
        </blockquote>
        <p>
Ích glaube das dürfte ein Themengebiet sein mit dem im Moment jeder Entwickler in
irgendeiner Weise käpft und so dürfte sich Dariusz schon mal auf eine ganze Reihe
von Fragen einstellen (Mir selbst fallen da schon eine ganze Reihe ein). 
</p>
        <p>
Wer also Interesse an dem Thema hat, ist herzlich eingeladen am Dienstag 17.02.2008
um 18:00 zu uns zu kommen.
</p>
        <p>
Weitere Infos unter:
</p>
        <p>
          <a href="http://www.dotnet-ulm.de">http://www.dotnet-ulm.de</a>
        </p>
        <p>
 
</p>
        <p>
          <font face="Times New Roman" size="3"> </font>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c452a3fe-3660-44ca-b998-c392d0c6944b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Testliste drucken</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx</id>
    <published>2009-02-11T16:38:50.8023818+01:00</published>
    <updated>2009-02-11T17:04:32.0367568+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <category term="VS 2008" label="VS 2008" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2008.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In manchen Fällen ist es wünschenswert, eine Liste mit den Tests aus einem Projekt
auszudrucken. Leider gibt es hierzu in Visual Studio keine direkte Funktion, aber
ein kleiner Trick hilft hier:
</p>
        <p>
1.) Im TestView die gewünschten Spalten einblenden
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="211" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_thumb.png" width="562" border="0" />
          </a>
        </p>
        <p>
2.) Gewünschte Tests markieren und dann im Kontext-Menü "Copy" auswählen
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_6.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_thumb_2.png" width="182" border="0" />
          </a>
        </p>
        <p>
3.) In Excel einfügen, fertig!
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_8.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="122" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_thumb_3.png" width="571" border="0" />
          </a>
        </p>
        <p>
Das selbe funktioniert übrigens auch aus den Test Results, leider ohne Icons :-( 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_9.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="128" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_thumb_1.png" width="787" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f84dc952-b410-4e7d-9357-2550025bde2a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sorry</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx</id>
    <published>2009-02-09T19:16:13.8720518+01:00</published>
    <updated>2009-02-09T19:16:13.8720518+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Als Blogger freut man sich natürlich immer über Kommentare. Das ist bei diesem Medium
eine der wenigen Möglichkeiten Feedback zu bekommen. Und nun musste ich feststellen,
dass auf meinem Blog leider seit einger Zeit die Kommentare nicht mehr richtig zugestellt
werden. Dafür ein großes <font size="5"><strong>Entschuldigung </strong></font><font size="2">an
alle, die in letzte Zeit sich die Mühe gemacht haben und meine Beiträge kommentiert
haben. Sorry, das ihr keine Antwort erhalten habt. Lasst euch nicht entmutigen, ich
freue mich über jeden Kommentar und jetzt sollten die auch wieder bei mir ankommen.</font></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f76897aa-1624-49f7-b83f-c352cec8ca69" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team System User Group - Virtual Edition</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx</id>
    <published>2009-02-06T08:50:50.3339518+01:00</published>
    <updated>2009-02-06T08:51:43.0839518+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemUserGroupVirtualEdition_7C24/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="67" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemUserGroupVirtualEdition_7C24/image_thumb.png" width="756" border="0" />
          </a>
        </p>
        <p>
Die Team System User Grroup - VE ist eine virtuelle Usergroup die zwei mal im Monat
ein Treffen hat in deren Rahmen Vorträge rund um das Thema Team System gehalten werden.
Die Treffen finden virtuell in Second Life und über Live Meeting statt. Für Europäer
ist das jeweils zweite Treffen zeitlich günstig am Samstag Nachmittag.  
</p>
        <p>
          <a href="http://www.tsug-ve.com/">Team System User Group - Virtual Edition</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b0630ec-91cb-4132-bf01-d4cd244e7adc" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Neue MSDN-Seite zu Team System</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx</id>
    <published>2009-02-06T08:47:08.2245768+01:00</published>
    <updated>2009-02-06T08:47:08.2245768+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeueMSDNSeitezuTeamSystem_797E/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="64" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeueMSDNSeitezuTeamSystem_797E/image_thumb.png" width="487" border="0" />
          </a>
        </p>
        <p>
Auf MSDN gibt es einen neuen Bereich zu Team System. Die Seite ist in einer ersten
Iteration veröffentlicht und wird nun kontinuierlich mit weiterem Content ergänzt.
Hier sind die Inhalte wesentlich übersichtlicher aufbereitet als auf den alten Seiten.
Wer also mit Team System arbeitet oder das vorhat, einfach mal vorbeischauen. Feedback
zu der Seite ist sehr willkommen und kann <a href="http://blogs.msdn.com/selkins/archive/2009/02/04/team-system-web-site-feedback.aspx">hier</a> abgegeben
werden.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/teamsystem/default.aspx">Team System Home
auf MSDN</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7325ca50-3d10-4bf4-9837-f5d975dc1055" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Kommerzielle Lizenz f&amp;uuml;r PEX endlich verf&amp;uuml;gbar</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx</id>
    <published>2009-01-14T12:05:22.826936+01:00</published>
    <updated>2009-01-14T12:05:22.826936+01:00</updated>
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://research.microsoft.com/en-us/projects/pex/default.aspx">
            <img src="http://research.microsoft.com/en-us/projects/pex/pexweb.png" />
          </a>
        </p>
        <p>
Endlich gibt es von PEX nun auch eine kommerziell nutzbare Lizenz. Bisher stand nur
eine Academic License zur Verfügung, mit der nur “gespielt” werden durfte. Aber welche
Aussagekraft hat denn eine Bewertung des Tools mit Demo-Projekten? Jetzt kann man
PEX nun endlich auch auf Real-World-Projekte loslassen.
</p>
        <p>
          <a href="http://research.microsoft.com/en-us/projects/pex/downloads.aspx">http://research.microsoft.com/en-us/projects/pex/downloads.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=15b8739d-8ca4-4b66-8d4f-7b5bbf7259af" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Signaturen in Outlook kopieren</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx</id>
    <published>2009-01-12T09:38:45.802986+01:00</published>
    <updated>2009-01-12T09:38:45.802986+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bisher war für mich das Pflegen meiner verschiedenen Signaturen im Outlook immer ein
Horror. Wenn ein neuer Rechner eingerichtet wurde, musstden die Signaturen wieder
mühsam angelegt werden und wenn es Änderungen gab, dann grauste es mich schon davor,
diese auf allen Instanzen anzupassen.
</p>
        <p>
Dank <a href="http://blog.lars-keller.net/">Lars</a> kenne ich nun aber einen einfacheren
Weg. Die Signaturen werden nämlich einfach im Filesystem abgelegt und zwar unter %UserProfile%\AppData\Roaming\Microsoft\Signatures.
Diese Files lassen sich einfach auf einen neuen Rechner kopieren (sogar bei laufendem
Outlook sind die Signaturen dann sofort verfüpgbar!) oder sie können zwischen mehreren
Rechnern einfach synchronisiert werden.
</p>
        <p>
Super cool. Vielen Dank Lars, du hast mir das Leben wirklich erleichtert!
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=09a28b0c-7120-4456-92bc-2d9965dc046b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>WLAN aus Hyper-V VMs nutzen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx</id>
    <published>2009-01-09T22:12:23.762691+01:00</published>
    <updated>2009-01-09T22:12:23.762691+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Standardmäßig kann aus einer Hyper-V VM die WLAN-Verbindung des Host-Systems nicht
mit genutzt werden. Das ist allerdings gerade bei Notebooks eine Einschränkung. Es
gibt allerdings 3 verschiedene Wege, dieses Problem zu umgehen. 
</p>
        <p>
Ich selbst komme momentan mit <a href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/09/using-hyper-v-with-a-wireless-network-adapter.aspx">dieser</a> Lösung
ganz gut zurecht. Einen ausführlichen Artikel mit den beiden anderen Lösungen gibt
es <a href="http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx">hier</a>.
</p>
        <p>
          <a href="http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx">http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=95206195-1338-4f62-aa25-42e6171ee89f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Windows 2008 Server im Vista-Kleid</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx</id>
    <published>2009-01-09T21:52:32.778316+01:00</published>
    <updated>2009-01-09T21:52:32.778316+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Inzwischen gibt es eine verstärkte Diskussion, ob der Windows 2008 Server nicht die
bessere Workstation ist. Sicher hängt das vom jeweiligen Einsatzgebiet ab. Bei mir
war es so, dass ich für den Team Foundation Server einen Server als Betriebssystem
auf meinem Demo-Rechner benötigt habe. Dabei wollte ich aber nicht auf den Komfort
und das Design von Vista verzichten und auch Features wie z.B. den Sidebar nutzen.
Die erste gute Nachricht ist, dass man Win2008 so anpassen kann, dass es sich optisch
kaum von Vista unterscheiden lässt und die zweite gute Nachricht ist, dass es mit
Hilfe eines kleinen Tools ganz einfach ist und schnell geht. Selbst Aero ist damit
möglich.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Windows2008ServerimVistaKleid_13347/Win2008Aero_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Win2008Aero" border="0" alt="Win2008Aero" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Windows2008ServerimVistaKleid_13347/Win2008Aero_thumb.jpg" width="567" height="356" />
          </a>  
</p>
        <p>
          <a href="http://www.win2008workstation.com/wordpress/2008/07/17/windows-server-2008-workstation-converter/">http://www.win2008workstation.com/wordpress/2008/07/17/windows-server-2008-workstation-converter/</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6f7aaabf-60a5-42a5-8396-51ea474bd080" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Aktualisierte Vortragsthemen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,97827056-5bf5-4654-8d5f-e0cbc7bbf7ed.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,97827056-5bf5-4654-8d5f-e0cbc7bbf7ed.aspx</id>
    <published>2008-12-05T15:59:39.0514034+01:00</published>
    <updated>2008-12-05T15:59:39.0514034+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In den letzten Wochen war ich recht viel mit Vorträgen auf Tour. Inzwischen hat sich
eine stattliche Anzahl von Vortragsthemen angesammelt. Unten sieht man eine Übersicht.
Wer Interesse hat, dass ich einen Vortrag halte, darf sich gerne bei mir melden. Über
das INEATA Speaker Bureau bin ich für INEATA UserGroups auch kostenlos zu buchen.
Ansonsten würde ich mich auch über Feedback freuen. Sollte ich noch ein Thema mit
aufnehmen, wer hat schon einen Vortrag von mir gehört und wie hat er gefallen etc.
</p>
        <p>
          <table style="width: 100%; border-collapse: collapse" cellspacing="0" cellpadding="0" width="100%" border="0">
            <colgroup>
              <tbody>
                <tr style="height: 15pt" height="20">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 700; font-size: 11pt; background: #4f81bd; border-left: white 0.5pt solid; width: 230pt; color: white; border-top-color: #f0f0f0; border-bottom: white 1.5pt solid; font-family: calibri; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #4f81bd none" width="306" height="20">
Titel</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 700; font-size: 11pt; border-left-color: #f0f0f0; background: #4f81bd; width: 121pt; color: white; border-top-color: #f0f0f0; border-bottom: white 1.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #4f81bd none" width="167">
Dauer</td>
                  <td class="xl65" style="font-weight: 700; font-size: 11pt; border-left-color: #f0f0f0; background: #4f81bd; width: 718pt; color: white; border-top-color: #f0f0f0; border-bottom: white 1.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #4f81bd none" width="405">
Abstract</td>
                </tr>
                <tr style="height: 75pt" height="100">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 75pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="100">
Qualitätsmanagement mit VSTS und TFS</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
1 Std - 3 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
Qualität spielt bei Software eine immer stärkere Rolle. Gleichzeitig werden immer
effizientere<span style="mso-spacerun: yes">  </span>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.</td>
                </tr>
                <tr style="height: 75pt" height="100">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 75pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="100">
Agile Development Process - Ein Architekturbasierter Entwicklungsprozess</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
1 Std Vortrag, 
<br />
1 Std. Demo</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
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.<span style="mso-spacerun: yes"> </span></td>
                </tr>
                <tr style="height: 45pt" height="60">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 45pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="60">
Mehrschichtige Architekturen mit .Net</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
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.</td>
                </tr>
                <tr style="height: 45pt" height="60">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 45pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="60">
Build-Management mit Team Foundation Server</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
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.</td>
                </tr>
                <tr style="height: 90pt" height="120">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 90pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="120">
Testing Practices mit VSTS und TFS</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
1 Std. - 3 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
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.</td>
                </tr>
                <tr style="height: 105pt" height="140">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 105pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="140">
UI-Testing mit UI Automation</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
1 Std. - 1,5 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
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.</td>
                </tr>
                <tr style="height: 75pt" height="100">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 75pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="100">
Closing Tool-Gaps in your Development Process with the TFS API</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
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.</td>
                </tr>
                <tr style="height: 90pt" height="120">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 90pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="120">
Lücken in der Tool-Unterstützung für IhrenEntwicklungsprozess mit der TFS API schließen</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
Die Effizienz eines Entwicklungsprozesses hängt stark von einer leistungsfähigen und
integrierten Entwicklungsplattform ab. Aber Entwicklungsprozesse sind individuell
an keien Standardsoftware kann eine 100%ige Integration gewährleisten. Mit der Team
Foundation Server API steht eine leistungsfähige Technologie zur Verfügung, die es
erlaubt, die Standard-Funktionen des Team Foundation Servers bedarfsgerecht zu erweitern.
Als Beispiel wird in dieser Session ein live ein Tool erstellt, das eine hierarchische
Organisation von Workitems ermöglicht. Und es wird erläutert, wie damit Entwicklungsprozesse
verbessert werden können. Darüber hinaus werden verschiedene Visionen aufgezeigt wie
man mit Hilfe der TFS Extensibility richtig coole Sachen für den TFS machen kann.</td>
                </tr>
                <tr style="height: 90pt" height="120">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 90pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="120">
Durchgängige Entwicklungsprozesse mit Visual Studio Team System</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
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.</td>
                </tr>
                <tr style="height: 60pt" height="80">
                  <td class="xl64" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 60pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="80">
Reporting mit dem TFS</td>
                  <td class="xl64" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
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.</td>
                </tr>
                <tr style="height: 90pt" height="120">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 90pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="120">
UI Driven Development - Von der UI zur Anwendung</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
0,5 Std. - 1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
Missverständnisse und unterschiedliche Interpretation von Spezifikationen sind in
Software-Projekten heute an der Tagesordnung. Was also tun, um dieses zu vermeiden?
Die Spezifikation noch detaillierter formulieren? Einen anderen Ansatz geht UI Driven
Development. Hierbei wird die Oberfläche einer Anwendung als Spezifikationsbestandteil
aufgefasst. Der Clou dabei ist, das bei diesem Vorgehensmodell nicht irgendwelche
Prototypen entstehen, die die spätere Funktionalität und Aufbau nur vage wiedergeben,
sondern "erlebbare" Oberflächen. Und diese Oberflächen können in das Finale Projekt
1:1 übernommen werden, so dass der Investierte Aufwand direkt dem Projekt zugute kommt.
Der Vortrag erläutert Architekturkonzepte und Vorgehensmodelle die UI Driven development
ermöglichen.</td>
                </tr>
                <tr style="height: 60pt" height="80">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 60pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="80">
Organisation von Entwickler-Teams</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
0,5 Std. - 1,5 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
Dieser Vortrag ist als Interactive Session konzipiert. Die Teilnehmer können in einer
moderierten Diskussionsrunde sich austauschen über verschiedene Erfahrungen mit unterschiedlichen
Modellen der Team-Organisation. Der Moderator stellt dabei im Laufe der Veranstaltung
verschiedene Aspekte der Team-Organisation und mögliche Vorgehensweisen vor und stellt
diese zur Diskussion. Dabei werden Themen wie Generalisten vs Spezialisten, Kommunikation
im Team, Mitarbeitermotivation und vieles mehr ausführlich diskutiert.</td>
                </tr>
                <tr style="height: 60pt" height="80">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 60pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="80">
Automatisierte Generierung von Unit-Tests mit PEX</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
0,5 Std.<span style="mso-spacerun: yes"> </span></td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
PEX - ein Tool von Microsoft Research verspricht nichts weniger als die automatisierte
Generierung von Unit-Tests und zwar mit dem Ziel einer möglichst vollständigen Code-Abdeckung.
Wie PEX funktioniert und inwieweit dieses Versprechen eingehalten werden kann, zeigt
dieser Vortrag. Darüber hinaus wird auch beleuchtet, in welchen Szenarien PEX eine
wirklich sinnvolle Unterstützung bei Real-Projekten sein kann und wie man es einsetzen
kann.</td>
                </tr>
                <tr style="height: 45pt" height="60">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #dbe5f1; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; height: 45pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="306" height="60">
10 Gründe warum Software-Projekte fehlschlagen können – und was hilft ALM?</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 121pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="167">
1 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #dbe5f1; width: 718pt; color: black; border-top-color: #f0f0f0; border-bottom: white 0.5pt solid; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="405">
Für Probleme in Software-Projekten gibt es vielfältige Gründe. Viele dieser Gründe
können jedoch auf suboptimale oder gar nicht vorhandene Prozesse zurückgeführt werden.
Der Vortrag analysiert die häufigsten Ursachen für fehlgeschlagene Projekte und zeigt
mögliche Lösungen auf. Dabei wird auch beleuchtet wie Application Lifecycle Management
organisiert sein muss um hier zu unterstützen.</td>
                </tr>
                <tr style="height: 75pt" height="100">
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; background: #b8cce4; border-bottom-color: #f0f0f0; border-left: white 0.5pt solid; width: 230pt; color: black; border-top-color: #f0f0f0; font-family: calibri; height: 75pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="306" height="100">
TDD Quick Start</td>
                  <td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; border-bottom-color: #f0f0f0; width: 121pt; color: black; border-top-color: #f0f0f0; font-family: calibri; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="167">
0,5 Std.</td>
                  <td class="xl65" style="font-weight: 400; font-size: 11pt; border-left-color: #f0f0f0; background: #b8cce4; border-bottom-color: #f0f0f0; width: 718pt; color: black; border-top-color: #f0f0f0; font-family: calibri; text-decoration: none; border-right-color: #f0f0f0; text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" width="405">
Test Driven Development - Eines der häufigsten Buzz-Wörter wenn es um das Thema Software-Testing
geht. Umso erstaunlicher, dass es in der Praxis aber relativ selten zum Einsatz kommt.
Häufig liegt es auch daran, dass TDD an gewisse Vorbedingungen in Bezug auf Architektur,
Prozesse etc. gebunden ist. Der Vortrag versucht einen Schnelleinstieg in TDD zu geben,
wobei versucht wird diese Vorbedingungen weitgehend auszublenden um dem Zuhörer einen
möglichst schnellen und unkomplizierten Einstieg zu bieten. Die hierzu erforderlichen
Kompromisse werden jedoch am Ende des Vortrages aufgezeigt und ein Ausblick auf optimierte
Lösungen gegeben.</td>
                </tr>
              </tbody>
            </colgroup>
          </table>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=97827056-5bf5-4654-8d5f-e0cbc7bbf7ed" />
      </div>
    </content>
  </entry>
  <entry>
    <title>User Group-Kompass</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,8fafece1-c003-4a59-8ff3-92836d939613.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,8fafece1-c003-4a59-8ff3-92836d939613.aspx</id>
    <published>2008-12-05T09:33:16.1061585+01:00</published>
    <updated>2008-12-05T09:33:16.1061585+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wo finde ich eine User-Group in meiner Nähe? Diese Frage beantwortet der Usergroup-Kompass.
Eine wirglich schöne Idee wie ich finde.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UserGroupKompass_861F/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UserGroupKompass_861F/image_thumb.png" width="230" border="0" />
          </a>  
</p>
        <p>
          <a href="http://www.microsoft.com/germany/community/kompass/default.mspx">User Group-Kompass</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8fafece1-c003-4a59-8ff3-92836d939613" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Architektur-Vortrag bei User-Groups</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,790badae-2fbf-4c0b-8ef8-f417de4b1d58.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,790badae-2fbf-4c0b-8ef8-f417de4b1d58.aspx</id>
    <published>2008-12-01T08:03:58.6441063+01:00</published>
    <updated>2008-12-01T08:03:58.6441063+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In der vergangenen Woche war ich bei gleich 3 User-Groups in Bonn, Stuttgart und bei
uns in Ulm und habe dort meinen Vortrag zu architekturbasierten Entwicklungsprozessen
gehalten. Dabei ging es im Kern darum, dass moderne Software.Projekte bestimmte Anforderungen
an Prozesse haben. Der Vortrag zeigte hier zunächst verschiedene dieser Anforderungen
an Testbarkeit, Team-Arbeit und die Definition von Spezifikationen. Anschließend wurden
verschiedene Architekturkonzepte vorgestellt um dann aufzuzeigen, wie diese Konzepte
die Prozessanforderungen erfüllen können. Zum Abschluss wurde dann das Ganze mit einem
Demo-Projekt anschaulicher dargestellt.
</p>
        <p>
Die Folien und das Demo kann hier heruntergeladen werden:
</p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:0e628034-8c9d-4490-acb9-e3be00330274" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ArchitekturVortragbeiUserGroups_14A30/Architekturgest%C3%BCtzter%20Entwicklungsprozes_compressed.zip" target="_blank">Download
Folien</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ArchitekturVortragbeiUserGroups_14A30/UCMessageSample.zip" target="_blank">Download
Demo</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=790badae-2fbf-4c0b-8ef8-f417de4b1d58" />
      </div>
    </content>
  </entry>
  <entry>
    <title>patterns &amp;amp; practices: Application Architecture Guide 2.0</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,8cff1937-f4d1-41a4-8124-64efde3d5e2a.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,8cff1937-f4d1-41a4-8124-64efde3d5e2a.aspx</id>
    <published>2008-11-26T14:21:26.8122447+01:00</published>
    <updated>2008-11-26T14:21:26.8122447+01:00</updated>
    <category term="Architektur" label="Architektur" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Architektur.aspx" />
    <category term="B&amp;#252;cher" label="B&amp;#252;cher" scheme="http://www.artiso.com/ProBlog/CategoryView,category,B%c3%bccher.aspx" />
    <category term="Know-How" label="Know-How" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Know-How.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="ApplicationArchitectureGuidev2.GIF" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=AppArchGuide&amp;DownloadId=47591" />
        </p>
        <p>
Das patterns &amp; practices Team hat einen Application Architect Guide veröffentlicht.
Das 365 Seiten umfassende Dokument kann kostenlos von CodePlex heruntergeladen werden
und beschreibt Architekturansätze für Windows, Web, Mobile und andere Anwendungen.
Neben theoretischen Grundlagen werden auch explizite Guidelines für verschiedene Design-Aspekte
einer Anwendung beschrieben. 
</p>
        <p>
Absolut empfehlenswert!
</p>
        <p>
          <a href="http://www.codeplex.com/AppArchGuide">patterns &amp; practices: Application
Architecture Guide 2.0 (The Book) - Home</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8cff1937-f4d1-41a4-8124-64efde3d5e2a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TechEd TechTalk zu hierarchische Workitems</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,ccf39b28-dc2b-4c2d-ab3b-52ed9e838929.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,ccf39b28-dc2b-4c2d-ab3b-52ed9e838929.aspx</id>
    <published>2008-11-20T23:58:01.8249898+01:00</published>
    <updated>2008-11-21T00:01:26.232548+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TechEdTechTalkzuhierarchischeWorkitems_150CE/TechEdOnline_2.gif">
          <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="56" alt="TechEdOnline" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TechEdTechTalkzuhierarchischeWorkitems_150CE/TechEdOnline_thumb.gif" width="125" border="0" />
        </a>    
<p></p><p>
Zusammen mit <a href="http://blogs.msdn.com/cbinder">Christian Binder</a> habe ich
auf der TechEd einen TechTalk zum Thema hierarchische Workitems aufgezeichnet. Das
Video steht auf der TechEd Online Library unter <a href="http://msdn.microsoft.com/en-us/events/teched/cc561184.aspx">http://msdn.microsoft.com/en-us/events/teched/cc561184.aspx</a> zur
Verfügung, oder alternativ einfach auf das Bild unten clicken. 
</p><p><a href="http://mfile.akamai.com/14853/wmv/microsofttec.download.akamai.com/14853/TechEdOnline/Videos/449_low.asx"><img src="http://microsofttech.fr.edgesuite.net/TechEdOnline/Pictures/449.jpg" border="0" /></a></p><img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ccf39b28-dc2b-4c2d-ab3b-52ed9e838929" /></div>
    </content>
  </entry>
  <entry>
    <title>Vortrag bei der .Net Usergroup Braunschweig</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,90780df7-a4b7-44b4-96af-0f18d2b337ff.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,90780df7-a4b7-44b4-96af-0f18d2b337ff.aspx</id>
    <published>2008-11-20T17:44:13.3910647+01:00</published>
    <updated>2008-11-20T18:00:54.0380938+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt=".NET Developer Group Braunschweig Logo" src="http://www.dotnet-braunschweig.de/App_Themes/Default/images/logo.gif" />
        </p>
        <p>
Gestern Abend habe ich bei der .Net Developer Group Braunschweig einen Vortrag zu
Agile Development Process - Ein architekturbasierter Entwicklungsprozess gehalten.
Während des Vortrages und vor allem am Ende gab es eine sehr gute und interessante
Diskussion.
</p>
        <p>
Bei dem Vortrag habe ich demonstriert wie wir bei uns im Unternehmen verschiedene
Architekturpatterns verwenden um Prozessanforderungen zu unterstützen. Dabei kommen
bewährte Konzepte wie Komponentenorientierung, Contract First und mehrschichtige Architektur
zum Einsatz, aber auch von uns angepasste bzw. neu entwickelte Methoden.
</p>
        <p>
Die Folien und das Demo kann hier heruntergeladen werden:
</p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:ec1306b1-8316-4fa1-b365-5c3c7d090ef2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Vortragbeider.NetUsergroupBraunschweig_F8E8/Architekturgest%C3%BCtzter%20Entwicklungsprozes_compressed_1.pptx" target="_blank">Download
Slides</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Vortragbeider.NetUsergroupBraunschweig_F8E8/UCMessageSample%20(2)_1.zip" target="_blank">Download
Demos</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=90780df7-a4b7-44b4-96af-0f18d2b337ff" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team Foundation Server Build Project Files eleganter bearbeiten</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx</id>
    <published>2008-11-18T01:49:56.6986516+01:00</published>
    <updated>2008-11-18T01:49:56.6986516+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Tools" label="Tools" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tools.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Team Foundation Server verwendet in den Versionen bis 2008 eine XML-Datei um den
Build-Prozess zu steuern. Diese Datei wird Build Project File genannt und wird in
der Versionsverwaltung abgelegt um vom Buildcomputer genutzt werden zu können. Jeder
der diese Datei aber schon manuell bearbeitet hat, kennt das umständliche Vorgehen
umd die Date erst aus der Quellcode-Verwaltung auszuchecken, und nach dem Bearbeiten
wieder einzuchecken. Einfacher geht das mit den <a href="http://www.attrice.info/cm/tfs/index.htm">TFS
Sidekicks</a>, die direkt im Context-Menü des Team-Explorers eine Checkout und Checkin-Funktion
für das Project-File anbietet.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamFoundationServerBuildProjectFilesele_197A/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="273" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamFoundationServerBuildProjectFilesele_197A/image_thumb.png" width="232" border="0" />
          </a>
        </p>
        <p>
Darüber hinaus bieten die TFS Sidekicks noch weitere sehr nützliche Funktionen, auf
jeden Fall ist das Tool einen näheren Blick wert. 
</p>
        <p>
          <a href="http://www.attrice.info/cm/tfs/index.htm">Attrice Corporation - Team Foundation
Sidekicks</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=48ea5bb9-ec43-40b9-a7db-079d130bd345" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Closing Tool Gaps in your Developemnt Process using TFS API - My talk on TechEd EMEA</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,70f995f5-1e1a-4f05-a47f-6023a254303a.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,70f995f5-1e1a-4f05-a47f-6023a254303a.aspx</id>
    <published>2008-11-12T11:35:29.7909732+01:00</published>
    <updated>2008-11-12T11:35:29.7909732+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="html">&lt;p class="MsoNormal" style="margin: 0cm 0cm 10pt"&gt;
&lt;span lang="EN-US" style="mso-ansi-language: en-us"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Today
I had my second talk on the TechEd in Barcelona. It was about closing tool gaps in
development processes and using the TFS API. Thanks to all attendees joined my session.
We had some very interesting discussion at the end, and I got a lot of positive feedback
like “This was what I was looking for”. For all here comes the promised downloads
for the slides and demos. Feel free to use them in either way.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:9fb17d2e-7e50-4861-a739-2713024ebbfa" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ClosingToolGapsinyourDevelopemntProcessu_A087/WIM%20Lite.zip" target="_blank"&gt;Download
Slides&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ClosingToolGapsinyourDevelopemntProcessu_A087/DVP305%20-%20Closing%20Tool%20Gaps.zip" target="_blank"&gt;Download
Demos&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 10pt"&gt;
&lt;span lang="EN-US" style="mso-ansi-language: en-us"&gt;&lt;font face="Calibri" size="3"&gt;And
here the link to download WorkitemManager. At &lt;/font&gt;&lt;a href="http://www.alm-tools.com/"&gt;&lt;u&gt;&lt;font face="Calibri" color="#0000ff" size="3"&gt;www.alm-tools.com&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; you
can download the Open version which is free and also the source code. And if you are
interested in one of the tools I showed, please just send me an e-Mail to tschissler
(at) artiso (.) com. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=70f995f5-1e1a-4f05-a47f-6023a254303a" /&gt;</content>
  </entry>
  <entry>
    <title>UI-Testing with UI Automation Framework - My talk on TechEd EMEA</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,d3195557-b784-4a43-8c58-4e0aa0c0c260.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,d3195557-b784-4a43-8c58-4e0aa0c0c260.aspx</id>
    <published>2008-11-11T16:27:49.639+01:00</published>
    <updated>2009-07-31T18:37:54.7993809+02:00</updated>
    <category term="UI Automation" label="UI Automation" scheme="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p class="MsoNormal" style="margin: 0cm 0cm 10pt; vertical-align: top; line-height: normal; mso-margin-bottom-alt: auto">
          <span lang="EN-US" style="font-size: 8.5pt; color: black; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: en-us; mso-fareast-language: de">Ok,
not to confuse you, I'm not going to blog English from now on. But I did a session
on UI-Testsing with the UI Automation Framework and to provide slides and demo-code
to the attendees I use this blog post. The session went fairly well from my point
of view and I had some really interesting discussions on this topic after the session.
I hope those who have joined me got some good information about how you can do UI-testing
today with completely free tools. </span>
        </p>
        <p class="MsoNormal" style="margin: 0cm 0cm 10pt; vertical-align: top; line-height: normal; mso-margin-bottom-alt: auto">
          <span lang="EN-US" style="font-size: 8.5pt; color: black; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: en-us; mso-fareast-language: de">I'll
provide some pictures later because I cannot read them from my camera right now.</span>
        </p>
        <p class="MsoNormal" style="margin: 0cm 0cm 10pt; vertical-align: top; line-height: normal; mso-margin-bottom-alt: auto">
          <span lang="EN-US" style="font-size: 8.5pt; color: black; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: en-us; mso-fareast-language: de">Here
comes the downloads:</span>
        </p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:f1e93ebb-79cc-41ac-b0c1-5378f06b17c9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UITestingwithUIAutomationFrameworkMytalk_E717/UISpy.zip" target="_blank">Download
Demo-Code</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UITestingwithUIAutomationFrameworkMytalk_E717/DVP313%20-%20UI%20Testing%20with%20UI%20Automation%20Framework_FINAL.zip" target="_blank">Download
UI Spy</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UITestingwithUIAutomationFrameworkMytalk_E717/UITests%20(2).zip" target="_blank">Download
Slides</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d3195557-b784-4a43-8c58-4e0aa0c0c260" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team Foundation Power Tools October 2008 Release ver&amp;ouml;ffentlicht</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,3a692ab0-5ba0-47f8-a54b-e067c9111767.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,3a692ab0-5ba0-47f8-a54b-e067c9111767.aspx</id>
    <published>2008-11-09T19:33:36.3250278+01:00</published>
    <updated>2008-11-09T19:33:36.3250278+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit ein wenig Verspätung wurden die TFS Power Tools October 2008 nun released. Dafür
wurden aber noch ein paar wichtige Bugs gefixed. Damit stehen nun die größten Power-Tools
zur verfügung, die jemals veröffentlicht wurden. Über die Features habe ich bereits <a href="http://www.artiso.com/ProBlog/PermaLink,guid,cd9aef8b-2608-4e63-b5d7-ea509c454830.aspx">hier
gebloggt</a>. 
</p>
        <p>
ich denke damit werden ein paar wichtige Lücken geschlossen und durch die Explorer
Integration wird TFS für weitere Szenarien interessant. 
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBD14EEA-781F-45A1-8C46-9F6BA2F68BF0&amp;displaylang=en">Download
details: Team Foundation Power Tools</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3a692ab0-5ba0-47f8-a54b-e067c9111767" />
      </div>
    </content>
  </entry>
  <entry>
    <title>artiso Workitem Manager Open ver&amp;ouml;ffentlicht</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx</id>
    <published>2008-10-31T01:14:31.0447282+01:00</published>
    <updated>2008-10-31T01:14:31.0447282+01:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <category term="Tools" label="Tools" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tools.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der <a href="http://www.alm-tools.de/">artiso Workitem Manager</a> ist ein Tool mit
dem sich Workitems hierarchisch organisieren lassen. Diese hierarchische Organisation
bietet verschiedene Vorteile. Neben einer besseren Strukturierung und einer erhöhten
Übersichtlichkeit vor allem auch eine visuelle Traceability. Damit ist gemein, dass
durch die Hierarchie sichtbar wird welche Tests und Implementierungsaufgaben einem
Feature zugeordnet sind. Die ist z.B. sehr hilfreich, wenn sich das Feature ändert
zu erkennen, welche Workitems auf mögliche Auswirkungen überprüft werden können. Wie
hierarchische Workitems in Projekten hilfreich eingesetzt werden, habe ich zusammen
mit <a href="http://blogs.msdn.com/cbinder">Christian Binder</a> in diesem <a href="http://www.artiso.com/ProBlog/PermaLink,guid,667a97e1-6d04-4744-935f-7b796f621643.aspx">MSDN-Webcast</a> erörtert.
</p>
        <p>
Leider bringt der TFS in der Version 2008 diese Hierarchie nicht von Haus aus mit.
Deshalb hat <a href="www.artiso.com">artiso</a> den Workitem Manager entwickelt. Diesen
gibt es nun auch als Open-Version. Die Open-Version ist kostenlos und wird auch als
Source-Code bereitgestellt. Wie sich der Workitem Manager Open zur Vollversion unterscheidet
kann man der unten stehenden Funktionsmatrix entnehmen. Weiter unten gibt's noch eine
Screenshot. 
</p>
        <p>
Den Donload für das Setup und den Source-Code findet man unter <a href="http://www.alm-tools.de">http://www.alm-tools.de</a>.
Gerne freue ich mich über euer Feedback zu dem Tool.
</p>
        <p>
          <img src="http://www.alm-tools.com/contentImages/WIM_FeatureComparison.jpg" />
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/artisoWorkitemManagerOpenverffentlicht_1111/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="469" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/artisoWorkitemManagerOpenverffentlicht_1111/image_thumb.png" width="673" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3bc7e8bd-5052-4be2-96db-e8e7d80cf9da" />
      </div>
    </content>
  </entry>
  <entry>
    <title>&amp;quot;HID data has stopped working&amp;quot; - Problem mit HP Notebook und wireless Maus</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,2ae36192-13b3-40f5-88dd-e6ed598dc848.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,2ae36192-13b3-40f5-88dd-e6ed598dc848.aspx</id>
    <published>2008-10-29T10:08:31.8338331+01:00</published>
    <updated>2008-10-29T10:08:31.8338331+01:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Seit kurzem bin ich stolzer Besitzer einer Microsoft Wireless Notebook Presenter Mouse
8000 (was für ein Name!). Auf meinem Notebook hatte ich aber ständig das Problem dass
die Meldung "HDI data has stopped working" kam. Zwar funktionierte das System ohne
Probleme aber die Meldung war extrem nervig, vor allem bei Demos und Vorträgen. Nach
einigem suchen bin ich dann auf einen <a href="http://forums.techarena.in/vista-hardware-devices/1023595.htm">Forum-Thread</a> gestossen
der genau für dieses Problem eine Lösung beschreibt. Der entscheidende Post hier nochmals
kurz zitiert:
</p>
        <blockquote>
          <p>
I was having the same problem with my bluetooth microsoft wireless notebook presenter
mouse 8000. The problem is created by an application in the HP quick launch Buttons.
I removed the application from the launch buttons.<br /><br />
go to:<br /><br />
C:\Program Files\Hewlett-Packard\HP Quick Launch Buttons<br /><br />
move the following files to a backup folder on your computer:<br /><br />
HidActn.dll<br />
Hiddata<br />
PushHid.dll<br /><br />
Then restart you computer and you should not have the errors and the other things
on your laptop should still be available. 
</p>
        </blockquote>
        <p>
          <a href="http://forums.techarena.in/vista-hardware-devices/1023595.htm">"HID data
has stopped working" - bluetooth mouse error - Vista Hardware Devices</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2ae36192-13b3-40f5-88dd-e6ed598dc848" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Antworten zum Merge von Visual Studio Team System Development Edition und Database Edition</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,6fda0869-62d0-417e-b707-7805c2ac336b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,6fda0869-62d0-417e-b707-7805c2ac336b.aspx</id>
    <published>2008-10-29T08:47:01.0837825+01:00</published>
    <updated>2008-10-29T08:47:01.0837825+01:00</updated>
    <category term="VS 2005" label="VS 2005" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2005.aspx" />
    <category term="VS 2008" label="VS 2008" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2008.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie ich <a href="http://www.artiso.com/ProBlog/PermaLink,guid,4ddd794c-ebd4-4cee-9bd5-011e039e96b0.aspx">hier</a> bereits
gepostet habe, verschmilzt Microsoft die Visual Studio Team System Development Edition
mit der Database Edition, aus meiner Sicht eine wirklich gute Lösung. Um dieses Thema
treten aber immer wieder Fragen auf, so dass ich hier mal die wichtigsten gesammelt
habe und natürlich auch beantworte.
</p>
        <p>
          <strong>F:</strong> Wie installiere ich die zusätzliche Edition?<br /><strong>A:</strong> Auf MSDN steht den Abonenten die jeweils andere Edition nun zusätzlich
zum Download zur Verfügung. Diese kann hier heruntergeladen und dann einfach zusätzlich
zur bestehenden Installation installiert werden. Die zusätzlichen Funktionen integrieren
sich dann in die bestehende Installation. Ein gemeinsames Installationspaket ist momentan
nicht geplant. Mit VS2010 werden die beiden Editionen dann als gemeinsames Paket ausgeliefert.
</p>
        <p>
          <strong>F:</strong> Für welche Editionen gilt diese Option?<br /><strong>A:</strong> Die Option gilt sowohl für die 2005er als auch für die 2008er
Editionen, im Detail also für:<br />
Visual Studio 2005 Team Edition for Software Developers with MSDN Premium Subscription<br />
Visual Studio 2005 Team Edition for Database Professionals with MSDN Premium Subscription<br />
Visual Studio Team System 2008 Development Edition with MSDN Premium Subscription 
<br />
Visual Studio Team System 2008 Database Edition with MSDN Premium Subscription<br /></p>
        <p>
          <strong>F:</strong> Wie verhält sich das mit Servicepacks?<br /><strong>A:</strong> Nach der Installation der zusätzlichen Edition müssen die Servicepacks
erneut installiert werden.
</p>
        <p>
Weitere Informationen finden sich auch auf der <a href="http://msdn.microsoft.com/en-us/vsts2008/products/cc990295.aspx">FAQ-Seite</a> zum
Merge.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/vsts2008/products/cc990295.aspx">FAQ - MSDN
Subscribers with Visual Studio Team System Development Edition or Database Edition</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6fda0869-62d0-417e-b707-7805c2ac336b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 CTP verf&amp;uuml;gbar</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,84d5f97b-40cb-4a88-b1e2-d0b13f441128.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,84d5f97b-40cb-4a88-b1e2-d0b13f441128.aspx</id>
    <published>2008-10-28T08:14:49.7866775+01:00</published>
    <updated>2008-10-28T08:14:49.7866775+01:00</updated>
    <category term="VS 2010" label="VS 2010" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2010.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das neueste CTP zu Visual Studio 2010 (Codename Rosario) steht nun zum Download bereit.
Das CTP wird als VPC Image bereitgestellt.
</p>
        <p>
Mit Visual Studio 2010 kommen viele neue interessante Features. Vor allem im Bereich
Testing und Architektur hat sich hier vieles getan. Ich werde mit diesem CTP beginnen,
die einzelnen Funktionen näher zu beleuchten und sicher in nächster Zeit den einen
oder andern Blogbeitrag zu diesem Thema schreiben.
</p>
        <p>
Es gibt mit dem CTP verschiedene Aktivierungs-Meldungen. Diese können jedoch meistens
einfach ignoriert werden, das Image läuft ganz normal weiter.
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&amp;displaylang=en">Download
details: Visual Studio 2010 and .NET Framework 4.0 CTP</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=84d5f97b-40cb-4a88-b1e2-d0b13f441128" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio Team System 2010 Week on Channel 9!</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,02b04850-c0f2-49d3-96da-5165c0ee764c.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,02b04850-c0f2-49d3-96da-5165c0ee764c.aspx</id>
    <published>2008-10-24T19:16:54.3891531+02:00</published>
    <updated>2008-10-24T19:16:54.3891531+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Auf Channel 9 gibt es eine ganze Reihe von Videos zu Visual Studio 2010 (Codename
Rosario). 
</p>
        <p>
Monday, September 29th:<br />
- <a href="http://channel9.msdn.com/posts/Dan/Norman-Guadagno-Announcing-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Announcing
Visual Studio Team System 2010</font></u></a><br /><br /><strong>Architecture Day</strong> (Tuesday, September 30th):<br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Cameron-Skinner-Visual-Studio-Team-System-2010-Architecture/"><u><font color="#0066cc">Cameron
Skinner: Visual Studio Team System 2010 - Architecture</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Top-down-design-with-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">"Top-down"
design with Visual Studio Team System 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Bottom-up-Design-with-Visual-Studio-Team-System-2010-Architect/"><u><font color="#0066cc">"Bottom-up"
Design with Visual Studio Team System 2010 Architect</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Peter-Provost-on-whats-coming-for-Architects-in-Visual-Studio-Team-System/"><u><font color="#0066cc">ARCast.TV
- Peter Provost on what’s coming for Architects in Visual Studio Team System</font></u></a><br /><br /><strong>Business Alignment </strong>(Wednesday, October 1st):<br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Achieving-Business-Alignment-with-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Achieving
Business Alignment with Visual Studio Team System 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Agile-Planning-Templates-in-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Agile
Planning Templates in Visual Studio Team System 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Enterprise-Project-Management-with-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Enterprise
Project Management with Visual Studio Team System 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Requirements-Management-and-Traceability-with-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Requirements
Management and Traceability with Visual Studio Team System 2010</font></u></a><br /><br /><strong>Software Quality</strong> (Thursday, October 2nd):<br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Better-Software-Quality-with-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Better
Software Quality with Visual Studio Team System 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Manual-Testing-with-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Manual
Testing with Visual Studio Team System 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Historical-Debugger-and-Test-Impact-Analysis-in-Visual-Studio-Team-System-2010/"><u><font color="#0066cc">Historical
Debugger and Test Impact Analysis in Visual Studio Team System 2010</font></u></a><br /><br /><strong>Team Foundation Server </strong>(Friday, October 3rd):<br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Brian-Harry-Team-Foundation-Server-2010/"><u><font color="#0066cc">Brian
Harry: Team Foundation Server 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Branching-and-Merging-Visualization-with-Team-Foundation-Server-2010/"><u><font color="#0066cc">Branching
and Merging Visualization with Team Foundation Server 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Enterprise-Team-Foundation-Server-Management-with-Mario-Rodriguez/"><u><font color="#0066cc">Enterprise
Team Foundation Server Management with Mario Rodriguez</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Team-Foundation-Server-2010-Setup-and-Administration/"><u><font color="#0066cc">Team
Foundation Server 2010 Setup and Administration</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/An-early-look-at-Team-Foundation-Build-2010-with-Jim-Lamb/"><u><font color="#0066cc">An
early look at Team Foundation Build 2010 with Jim Lamb</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/A-first-look-at-Visual-Studio-Team-System-Web-Access-2010/"><u><font color="#0066cc">A
first look at Visual Studio Team System Web Access 2010</font></u></a><br />
- <a id="ctl00_MainPlaceHolder_Starter_TitleLink" href="http://channel9.msdn.com/posts/VisualStudio/Update-on-Team-Foundation-Server-Migration-and-Synchronization/"><u><font color="#0066cc">Update
on Team Foundation Server Migration and Synchronization</font></u></a><br /></p>
        <p>
          <a href="http://channel9.msdn.com/posts/VisualStudio/Visual-Studio-Team-System-2010-Week-on-Channel-9/">Visual
Studio Team System 2010 Week on Channel 9! | VisualStudio | Channel 9</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02b04850-c0f2-49d3-96da-5165c0ee764c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Guter &amp;Uuml;berblick &amp;uuml;ber VSTS Content auf dem Technical Summit und offline</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,2b82f570-79f6-43b5-9f8a-7f2d92c4a81a.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,2b82f570-79f6-43b5-9f8a-7f2d92c4a81a.aspx</id>
    <published>2008-10-16T08:41:18.055347+02:00</published>
    <updated>2008-10-16T08:48:59.1051727+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="html">&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cbinder/"&gt;Christian Binder&lt;/a&gt; hat eine sehr Übersichtliche
Darstellung über die verschiedenen VSTS-Sessions auf dem &lt;a href="http://www.technical-summit.de/Home_ts08.mspx?ActiveID=1127"&gt;Technical
Summit&lt;/a&gt; in Berlin zusammengestellt. Die Map stellt nicht nur die dort live vorgestellten
Sessions zusammen, soondern auch bereits bestehende und in Kürze erscheinende Webcasts
zu dem Thema. Die Map zeigt auch, dass wir versucht haben unsere Inhalte auf dem Technical
Summit so aufeinander abzustimmen, dass sowohl EInsteiger als auch fortgeschrittene
Anwender sich ein möglichst komplettes Bild von VSTS machen kann. Die WebCast sind
thematisch entsprechend eingeordnet und können als Vorbereitung bzw. zur Vertiefung
zu den Live-Sessions genutzt werden.
&lt;/p&gt;
&lt;p&gt;
Danke Christian, endlich mal eine übersichtliche Darstellung der verschiendenen Inhalte!&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;map id="FPMap0" name="FPMap0"&gt;
&lt;area title="Die Grundlage von Team Foundation Server" shape="RECT" coords="11,23,203,107" href="http://www.technical-summit.de/Vortraege_ts08.mspx#DurchgaengigeEntwicklungsprozesse"&gt;
&lt;area title="Die VSTS2008 Grundlagen Webcast Serie mit Neno Loje, Dariusz Paris, Lars Roith, Christian Binder... " shape="RECT" coords="474,11,827,86" href="http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-0802-01.mspx"&gt;
&lt;area title="Version Control in der Praxis mit Neno Loje, mit Themen wie Branching, Dependency Handling..." shape="RECT" coords="140,136,345,209" href="http://www.technical-summit.de/Vortraege_ts08.mspx#DieTFS-Versionsverwaltung"&gt;
&lt;area title="Schon jetzt wissen, was morgen kommt" shape="RECT" coords="138,229,343,311" href="http://www.technical-summit.de/Vortraege_ts08.mspx#VSTSRosario"&gt;
&lt;area title=" MOSS Development mit VSTS beherrschen" shape="RECT" coords="139,426,344,504" href="http://www.technical-summit.de/"&gt;
&lt;area title="QM unter Kontrolle, baut direkt auf &amp;quot;Durchg&amp;auml;ngige Entwicklungsprozesse mit VSTS&amp;quot; auf" shape="RECT" coords="140,324,343,396" href="http://www.technical-summit.de/Vortraege_ts08.mspx#QualitaetsmanagementMitVSTS"&gt;
&lt;area title="Am Do 18:00 bis 19:30 Q&amp;amp;A mit allem VSTS Sprechern: Neno Loje, Thomas Schissler, Thorsten Mandelkow, Christian Binder  " shape="RECT" coords="140,524,342,599" href="http://www.technical-summit.de/"&gt;
&lt;area title="Workitem Manager mit der TFS API selbest entwickeln" shape="RECT" coords="475,108,639,176" href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032365693"&gt;
&lt;area title="Wie verwende ich Hierarchische Workitems in der Praxis? " shape="RECT" coords="663,107,826,176" href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032391829"&gt;
&lt;area title="Grundlagen Talk zu UI Automantion mit TFS Unit Test Integration" shape="RECT" coords="477,349,639,412" href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032376565"&gt;
&lt;area title="Testing von UI's mit Record and Play " shape="RECT" coords="665,351,825,411" href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032383658"&gt;&lt;/map&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/AlleVisualStudioTeamsystemSessionaufdemT_10175/Tech%20Summit%20TFS%20Track.jpg"&gt;&lt;img title="Tech Summit TFS Track" style="display: inline" height="620" alt="Tech Summit TFS Track" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/AlleVisualStudioTeamsystemSessionaufdemT_10175/Tech%20Summit%20TFS%20Track_thumb.jpg" width="845" usemap="#FPMap0"&gt;&lt;/a&gt;&lt;strong&gt; 
&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Was bedeutet was?
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/AlleVisualStudioTeamsystemSessionaufdemT_10175/image_2.png"&gt;&lt;img title="image" style="display: inline" height="155" alt="image" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/AlleVisualStudioTeamsystemSessionaufdemT_10175/image_thumb.png" width="277"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cbinder/archive/2008/10/13/alle-visual-studio-teamsystem-session-auf-dem-technical-summit-2008-im-berblick.aspx"&gt;Christian
Binder's Weblog : Alle Visual Studio Teamsystem Session auf dem Technical Summit 2008
im Überblick&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b82f570-79f6-43b5-9f8a-7f2d92c4a81a" /&gt;</content>
  </entry>
  <entry>
    <title>PEX - Automatisches Generieren von Unit-Tests</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx</id>
    <published>2008-10-14T14:10:10.8727348+02:00</published>
    <updated>2008-10-14T14:11:39.3889263+02:00</updated>
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <category term="Tools" label="Tools" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tools.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft Research hat vor kurzer Zeit <a href="http://research.microsoft.com/pex">PEX</a> zum
freien Download veröffentlicht. Hinter diesem unscheinbaren Kürzel verbirgt sich ein
Tool das absolut genial und beeindruckend ist und klar mach, warum Microsoft ein research
center unterhält. Das Tool verspricht nichts weniger als die automatische Generierung
von Unit-Tests und den dazugehörigen Testcases um eine möglichst hohe Code-Abdeckung
zu erzielen. Detaillierte Informationen bietet das <a href="http://research.microsoft.com/pex/articles/pextutorial.pdf">Whitepaper</a>,
wer sich auf die schnelle einen Einblick verschaffen möchte findet einen Überblick
im Folgenden (na ja, für einen Überblick ist der Post vielleicht doch ein wenig lang
geraden, aber ich konnte mich nicht bremsen vor Begeisterung):
</p>
        <p>
          <strong>Darf ich vorstellen - PEX</strong>
        </p>
        <p>
Gegeben sei folgende Methode die getestet werden soll:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> SimpleTest(<span style="color: #0000ff">int</span> x1, <span style="color: #0000ff">int</span> x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">if</span> (x1
&gt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (x1
&lt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&lt; x2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
== x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> }</pre>
          </div>
        </div>
        <p>
Für das versierte Auge eines Entwicklers ist sofort klar, da brauchen wir 3 Testcases
um eine vollständige Code-Abdeckung zu erzielen. Mal sehen, was PEX daraus macht.
Zunächst mal muss PEX heruntergeladen und installiert sein.  Dann kann man einfach
einen "Parameterized Unit Test Stub" erzeugen. Dazu in der Methode rechts klicken
und den Befehl aus dem Pex-Menü auswählen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="161" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb.png" width="447" border="0" />
          </a>
        </p>
        <p>
Im folgenden Dialog können Sie verschiedene Parameter angeben. Das wichtigste hier
ist das Testprojekt in dem der Stub erzeugt werden soll.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_6.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_2.png" width="469" border="0" />
          </a>
        </p>
        <p>
Der erzeugte Stub sieht dann so aus:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">///
This class contains parameterized unit tests for Calculation</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> [TestClass]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> [PexClass(<span style="color: #0000ff">typeof</span>(Calculation))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> CalculationTest</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> [PexMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> SimpleTest(</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> [PexAssumeUnderTest]Calculation
target,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">int</span> x1,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">int</span> x2</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> )</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">string</span> result
= target.SimpleTest(x1, x2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">return</span> result;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #008000">//
TODO: add assertions to method CalculationTest.SimpleTest(Calculation, Int32, Int32)</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> }</pre>
          </div>
        </div>
        <p>
Bei diesem Stub handelt es such um eine Vorlage für einen parameterisierten Unit-test.
Toll, und was lässt sich damit nun machen? Wir können eine "Exploration" starten.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_8.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_3.png" width="461" border="0" />
          </a>
        </p>
        <p>
Diese Exploration versucht nun Input-Parameter zu finden die zu einer möglichst 100%igen
Code-Abdeckung führen. Und hier beginnt nun die Magic von PEX. Ohne unser Zutun findet
PEX 3 Kombinationen von Input-Parametern die tatsächlich eine komplette Code-Abdeckung
erzielen- WOW! Dazu analysiert PEX wirklich den von uns erstellten Code und kann daraus
definieren, mit welchen Input-Parametern die einzelnen noch nicht abgedeckten Zweige
erreicht werden können.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_10.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_4.png" width="407" border="0" />
          </a>
        </p>
        <p>
Und das schönste, PEX baut uns automatisch 3 Unit-Tests die diese Testcases implementieren:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(CalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SimpleTest01()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Calculation
calculation = <span style="color: #0000ff">new</span> Calculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> s
= <span style="color: #0000ff">this</span>.SimpleTest(calculation, 1, 2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
&lt; x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(CalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SimpleTest02()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> Calculation
calculation = <span style="color: #0000ff">new</span> Calculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> s
= <span style="color: #0000ff">this</span>.SimpleTest(calculation, 1879212556, 1879212556);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
== x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(CalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SimpleTest03()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> Calculation
calculation = <span style="color: #0000ff">new</span> Calculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span> s
= <span style="color: #0000ff">this</span>.SimpleTest(calculation, 256, 254);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
&gt; x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> }</pre>
          </div>
        </div>
        <p>
Diese Unit-Tests können wir nun starten und sehen, dass diese wie erwartet alle erfolgreich
sind.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_12.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="150" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_5.png" width="244" border="0" />
          </a>
        </p>
        <p>
Damit haben wir einen Test automatisiert erstellt, der sicherstellen kann, dass diese
Methode ihr Verhalten nach Außen für die aktuell definierten Test-Cases nicht verändert.
Damit können ungewollte Änderungen an der Methode erkannt und beseitigt werden. Ob
die Methode allerdings ihre Aufgabe korrekt erledigt, kann PEX natürlich nicht testen.
Haben wir die Funktionsweise einer Methode allerdings einmal validiert, kann PEX nun
sehr einfach dieses Verhalten prüfen. Und natürlich eignet es sich auch sehr gut um
mögliche Test-Cases zu definieren. Es müssen in diesem Fall dann nur noch die einzelnen
Ergebnisse je Test validiert werden.
</p>
        <p>
Ändern wir die Methode ab, so dass sich ihr Verhalten ändert, dann alarmiert uns der
entsprechende Test.
</p>
        <p>
          <strong>Soweit sogut - Und was geht sonst noch?</strong>
        </p>
        <p>
Wenn wir nun ein gewünschte Änderung der Funktionalität implementieren, wie kann PEX
dann damit umgehen? Zunächst würden wir die vorhandenen Tests durchführen, damit wir
sicher sind, dass die aktuelle Funktionalität noch korrekt läuft. Dann erweitern wir
unsere Methode:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> SimpleTest(<span style="color: #0000ff">int</span> x1, <span style="color: #0000ff">int</span> x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">if</span> (x1
&gt; x2 * 2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2 * 2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (x1
&gt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (x1
&lt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&lt; x2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
== x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
          </div>
        </div>
        <div>Zeile 3+4 haben wir neu hinzugefügt. Nun starten wir eine neue Exploration und
PEX ermittelt einen weiteren Test-Case um diese Funktion ebenfalls abzudecken.
</div>
        <div> 
</div>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_14.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_6.png" width="376" border="0" />
          </a>
        </p>
        <p>
          <strong>Schön - darf's noch ein bisschen mehr sein?</strong>
        </p>
        <p>
Dieses einfache Sample war ja schon sehr beeindruckend. Die Frage, die sich aber natürlich
direkt stellt, ist wie weit geht denn das? Wir wollen nun den Schwierigkeitsgrad für
PEX schrittweise steigern. Integer-Werte sind ja noch relativ einfach zu handhaben,
aber wie sieht's denn beispielsweise mit Strings aus? Hierzu zunächst wieder eine
Methode, die wir testen wollen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> StringOperations</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> CheckString(<span style="color: #0000ff">string</span> Input)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>)
&amp;&amp; Input.Length &gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc' and length &gt; 10"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"ABC"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'ABC'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Unknown
pattern"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
          </div>
        </div>
        <p>
Stubs erzeugen und Exploration starten. Ob PEX wohl solche Operationen wie "StartsWith"
und "Length" versteht?
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_16.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="172" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_7.png" width="433" border="0" />
          </a>
        </p>
        <p>
Es findet tatsächlich alle erforderlichen Input-Parameter und sogar noch mehr! PEX
stell fest, dass unsere Methode beim Übergeben einer NULL-Referenz eine Exception
wirft. Und damit nicht genug, PEX kann uns auch einen Vorschlag machen, wie wir unseren
Code verbessern können. Dazu im "Pex Exploration Results" - Fenster unter Views "Show
suggestions window" aufrufen. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_18.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_8.png" width="725" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_20.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_9.png" width="736" border="0" />
          </a>
        </p>
        <p>
Durch einen Doppelklick auf den Eintrag am unteren Rand des Bereichs öffnet sich ein
Fenster, das die vorgeschlagene Änderung direkt in unseren Code einfügen kann.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_22.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="432" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_10.png" width="536" border="0" />
          </a>
        </p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> CheckString(<span style="color: #0000ff">string</span> Input)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">//
&lt;pex&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">if</span> (Input
== (<span style="color: #0000ff">string</span>)<span style="color: #0000ff">null</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">throw</span>
              <span style="color: #0000ff">new</span> ArgumentNullException(<span style="color: #006080">"Input"</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #008000">//
&lt;/pex&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>)
&amp;&amp; Input.Length &gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc' and length &gt; 10"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"ABC"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'ABC'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Unknown
pattern"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> }</pre>
          </div>
        </div>
        <p>
Die Zeilen 3-6 wurden von PEX erzeugt. Natürlich können wir das entsprechende Verhalten
im Code direkt ändern und an unsere Vorstellungen anpassen. Vielleicht ist es aber
gar keine schlechte Idee, in diesem Fall eine Exception zu werden. Dies ist das Standard-Verhalten
von PEX an dieser Stelle. Wird die erwartete Exception nicht mehr geworfen oder eine
andere Exception tritt auf, wird dies durch einen fehlgeschlagenen Test angezeigt.
</p>
        <p>
          <strong>Der nächste bitte!</strong>
        </p>
        <p>
So nun wollen wir noch einen Schritt weitergehen und sehen, wie PEX mit Listen umgehen
kann. Dazu habe ich folgende Testmethode erstellt (über den Sinn einer solchen Methode
wollen wir jetzt nicht nachdenken)
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">int</span> result
= 0;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">if</span> (list.Count
&gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">int</span> i <span style="color: #0000ff">in</span> list)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> result
+= i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">int</span> i <span style="color: #0000ff">in</span> list)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> result
*= i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">return</span> result;</pre>
          </div>
        </div>
        <p>
Die Methode bekommt eine Liste von Integer-Werten übergeben. Wenn es mehr als 10 Elemente
sind, werden diese addiert, sonst werden die Werte miteinander Multipliziert. Mal
sehen, wie PEX mit Listen umgeht.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_24.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="120" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_11.png" width="572" border="0" />
          </a>
        </p>
        <p>
PEX erkennt noch, dass unsere Methode mit Null-References nicht korrekt umgeht, aber
dann verließen sie ihn.  Aber freundlicherweise bekommen wir noch einen Hinweis
"2 Object Creations". klickt man darauf, dann bekommt man schon mehr Informationen. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_26.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_12.png" width="441" border="0" />
          </a>
        </p>
        <p>
Aha, PEX kann also eine List&lt;int&gt; nicht erzeugen. Also was tun? Klickt man den
unteren der beiden Einträge an, bietet PEX etwas weiter rechts die Möglichkeit eine
Factory zu definieren. Eine Factory ist ein Extensibility-Point mit dem PEX beigebracht
werden kann mit solchen Objekten umzugehen. Ein Beispiel für eine solche Factory kann
so aussehen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">namespace</span> System.Collections.Generic</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> [PexFactoryClass]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> ListFactory</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> [PexFactoryMethod(<span style="color: #0000ff">typeof</span>(List&lt;<span style="color: #0000ff">int</span>&gt;))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">static</span> List&lt;<span style="color: #0000ff">int</span>&gt;
Create(<span style="color: #0000ff">int</span> i)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">if</span> (i
&gt; 100)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> i
= 100;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> List&lt;<span style="color: #0000ff">int</span>&gt;
l = <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">int</span>&gt;();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> j
= 0; j &lt; i; j++)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> l.Add(j
* 10);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">return</span> l;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> }</pre>
          </div>
        </div>
        <p>
Hier teilt man PEX nun mit, welche Elemente es damit erzeugen kann (Zeile 6). Anschließend
implementiert man eine Create-Methode die beliebige Parameter übernehmen kann. In
Abhängigkeit dieser Parameter wird nun eine Instanz des gewünschten Objektes erzeugt.
In unserem Beispiel übernehmen wir nur einen Parameter der die Länge der Liste angibt.
In den Zeilen 9/10 begrenzen wir die Länge der Lsite auf 100 Elemente. Die Liste selbst
befüllen wir mit einer Reihe von Zahlen. Hier ist es sicher keine gute Idee, z.B.
Zufallszahlen zu verwenden, da diese ja bei jedem Testdurchlauf andere Werte liefern
und deshalb der Assert nicht erfolgreich ausgeführt werden kann.
</p>
        <p>
Mit hilfe dieser Factory kannPEX nun unsere Testcases definieren. Dazu ermittelt es
einfach geeignete Parameter für die Create-Methode in unserer Factory statt das Objekt
selbst zu erzeugen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_28.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_13.png" width="597" border="0" />
          </a>
        </p>
        <p>
Die erzeugten Tests sehen dann so aus:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(ListCalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SumList03()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> List&lt;<span style="color: #0000ff">int</span>&gt;
list;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">int</span> i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> list
= ListFactory.Create(2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> ListCalculation
listCalculation = <span style="color: #0000ff">new</span> ListCalculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> i
= <span style="color: #0000ff">this</span>.SumList(listCalculation, list);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> Assert.AreEqual&lt;<span style="color: #0000ff">int</span>&gt;(0,
i);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(ListCalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SumList04()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> List&lt;<span style="color: #0000ff">int</span>&gt;
list;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">int</span> i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> list
= ListFactory.Create(536870912);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> ListCalculation
listCalculation = <span style="color: #0000ff">new</span> ListCalculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> i
= <span style="color: #0000ff">this</span>.SumList(listCalculation, list);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> Assert.AreEqual&lt;<span style="color: #0000ff">int</span>&gt;(49500,
i);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
          <strong>Nun folgt noch die Kür</strong>
        </p>
        <p>
Nach den Erfahrungen mit der Liste bereits etwas skeptischer geworden, wollen wir's
jetzt aber doch wissen. Wie sieht's mit eigenen Objekten aus? Wie weit kommt PEX damit?
Auch hier gibt es wieder eine einfache Methode die wir testen wollen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> ComplexDataCalculation</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> DoComplexDataCalculation(cData
d)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (!d.IsValid)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"NotValid"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">if</span> (d.DataValues.x1
&gt; d.DataValues.x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">if</span> (d.DataValues.x1
&lt; d.DataValues.x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&lt; x2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
== x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cData</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">public</span> cDataValues
DataValues { get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> ObsoleteParameter
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> IsValid
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cDataValues</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">int</span> x1
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">int</span> x2
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> }</pre>
          </div>
        </div>
        <p>
Die Methode bekommt einen komplexen Datentyp übergeben. Und was macht PEX???
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_32.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="190" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_15.png" width="543" border="0" />
          </a>
        </p>
        <p>
PEX erkennt nicht nur, dass wir zwei Null-Exceptions abfangen sollten, sondern kann
auch unser Datenobjekt so initialisieren, dass wir wieder eine 100% Codeabdeckung
bekommen. Die Unit-Tests sehen ungefähr so aus:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(ComplexDataCalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> DoComplexDataCalculation04()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> cDataValues
cDataValues;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> cData
cData;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> cDataValues
= <span style="color: #0000ff">new</span> cDataValues();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> cDataValues.x1
= 3;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> cDataValues.x2
= 4;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> cData
= <span style="color: #0000ff">new</span> cData();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> cData.DataValues
= cDataValues;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> cData.ObsoleteParameter
= <span style="color: #006080">""</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> cData.IsValid
= <span style="color: #0000ff">true</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> ComplexDataCalculation
complexDataCalculation = <span style="color: #0000ff">new</span> ComplexDataCalculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> s
= <span style="color: #0000ff">this</span>.DoComplexDataCalculation(complexDataCalculation,
cData);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
&lt; x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
          </div>
        </div>
        <p>
Das ist schon extrem beeindruckend, wie PEX tatsächlich eine entsprechende Instanz
unseres Datenobjektes erzeugt und initialisiert und das so, dass wir alle Testcases
abdecken. Wirklich beeindruckend.
</p>
        <p>
        </p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:35094c03-c207-4962-9c04-0342f1082d8c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/PEX.zip" target="_blank">Die
Demos können hier heruntergeladen werden</a>
          </p>
        </div>
        <p>
        </p>
        <p>
Was haltet ihr davon? Würde mich über Feedback freuen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TFS-Workitems aus Test Results anlegen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1185547e-ff12-4e16-b511-f295a47a8128.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1185547e-ff12-4e16-b511-f295a47a8128.aspx</id>
    <published>2008-10-14T14:02:36.1979499+02:00</published>
    <updated>2008-10-14T14:02:36.1979499+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die Integration des TFS mit Visual Studio ist eine richtig schöne Sache. Eine Stelle
an der die Vorteile dieser Integration schön sichtbar werden ist die Erzeugung einen
Workitems direkt aus einem Test-Result heraus. Wenn also z.B. ein Test fehlgeschlagen
ist, kann daraus direkt ein Bug-Workitem erzeugt werden. Der Clou dabei ist, dass
das Test-Result automatisch auf dem TFS veröffentlicht und als Attachment an das Workitem
angehängt wird. Damit hat der Entwickler der den Bug beheben soll Zugriff auf den
durchgeführten Test und die Results. Dies funktioniert mit allen Testarten sofern
der Entwickler mit seiner Visual Studio Edition die entsprechenden Testarten ausführen
kann. Somit kann der Entwickler z.B. bei einem Unit-Test diesen verwenden um den Testcase
einfach zu debuggen. Und bei manuellen Tests stellt die Testspezifikation die Beschreibung
der Repro-Steps dar. Auf jeden Fall ein Zeitgewinn. Man kann aber beispielsweise damit
auch Aufgaben definieren, dass ein bestimmter Test noch mit zusätzlichen Test-Cases
angereichert werden soll etc.
</p>
        <p>
Dazu geht man einfach mit der rechten Maustaste auf den entsprechenden Eintrag im
Testresults-Fenster und wählt aus dem Kontext-Menü den entsprechenden Workitemtyp
aus.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSWorkitemsausTestResultsanlegen_11094/image_4.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="208" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSWorkitemsausTestResultsanlegen_11094/image_thumb_1.png" width="399" border="0" />
          </a>
        </p>
        <p>
Wird statt der Liste der Workitems "No Active Team Project" angezeigt, dann gibt es
hier eine einfache Lösung, die aber nicht ganz intuitiv ist.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSWorkitemsausTestResultsanlegen_11094/image_6.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="246" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSWorkitemsausTestResultsanlegen_11094/image_thumb_2.png" width="376" border="0" />
          </a>
        </p>
        <p>
1.) Sicherstellen dass im Team-Explorer das gewünschte Projekt angezeigt wird in dem
man das neue Workitem anlegen möchte.
</p>
        <p>
2.) Dieses Team-Projekt aktiv markieren (das Projekt wird fett dargestellt)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSWorkitemsausTestResultsanlegen_11094/image_8.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="73" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSWorkitemsausTestResultsanlegen_11094/image_thumb_3.png" width="244" border="0" />
          </a>
        </p>
        <p>
Nun werden die WorkitemTypen die im ProcessTemplate dieses Projektes definiert sind
zur Auswahl angezeigt. Das Projekt selbst muss nicht unbedingt in der Quellcode-Verwaltung
des TFS abgelegt sein.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1185547e-ff12-4e16-b511-f295a47a8128" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Thomas auf der ADC08</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,a8e2e3f9-29dc-4393-a4c7-993de78d0872.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,a8e2e3f9-29dc-4393-a4c7-993de78d0872.aspx</id>
    <published>2008-10-10T01:05:40.6338417+02:00</published>
    <updated>2008-10-10T01:05:40.6338417+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="html">&lt;p&gt;
&lt;img alt="Advanced Developers Conference, Windows Development, Windwos Entwicklung, ADC, LINQ, LINQ (DB), Testing, Deployment, Visual Studio Team System, VSTS-Versionkontrolle, Dynamische Sprachen, C++, C#, Debugging, Architektur, WCF, WF, WPF, Parallel LINQ, OpenMP, MPI, C++/CLI, C++-Interop, MFC, TR1, Vista-API&amp;rsquo;s, Debugging, VS-Extensions, Database Data Mining, Analysis, Reporting, VS-DB-Edition, visual studio, .net, vista, Anwendungsentwicklung .NET, managed code, unmanaged code" src="http://www.adc08.de/Images08/Index.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Nächste Woche Dienstag bin ich mit zwei Vorträgen auf der ADC08 vertreten.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a name="VSTS"&gt;Testing Practices mit VSTS und TFS&lt;/a&gt;&lt;/strong&gt;
&lt;br&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a name="UI"&gt;UI-Testing mit UI Automation&lt;/a&gt;&lt;/strong&gt;
&lt;br&gt;
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 Web-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-Rekorder 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. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=a8e2e3f9-29dc-4393-a4c7-993de78d0872" /&gt;</content>
  </entry>
  <entry>
    <title>Hierarchische Workitems mit VSTS 2008 erfolgreich anwenden - Eine Einf&amp;uuml;hrung in den Workitem Manager Open</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,667a97e1-6d04-4744-935f-7b796f621643.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,667a97e1-6d04-4744-935f-7b796f621643.aspx</id>
    <published>2008-10-10T00:56:33.7709668+02:00</published>
    <updated>2008-10-10T00:56:33.7709668+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550" />
        </p>
        <p>
Seit ein paar Tagen ist ein neuer Web-Cast online in dem ich zusammen mit <a href="http://blogs.msdn.com/cbinder">Christian
Binder</a> zusammen erörtere welche Vorteile die hierarchische Organisation von Workitems
bietet. Ohne schon zuviel vom Inhalt verraten zu wolle, es geht um Requirementmanagement,
Traceability, Impace-Analyse und einiges mehr. Im Webcast wird ein kostenloses Tool
vorgestellt mit dem bereits mit TFS 2008 hierarchische Workitems realisiert werden
können.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=667a97e1-6d04-4744-935f-7b796f621643" />
      </div>
    </content>
  </entry>
  <entry>
    <title>UI-Automation ServerSide Provider zur Automatisierung eines MenuStrip</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,35d09c0e-d00b-4025-b896-af96007c8a2f.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,35d09c0e-d00b-4025-b896-af96007c8a2f.aspx</id>
    <published>2008-10-10T00:43:23.6252849+02:00</published>
    <updated>2008-10-10T00:43:23.6252849+02:00</updated>
    <category term="UI Automation" label="UI Automation" scheme="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit Hilfe des UI Automation Frameworks (UIA) können Oberflächen aus einer Testanwendung
heraus "ferngesteuert" werden. Damit lassen sich z.B. UI-Tests bauen. Die Grundlagen
hierzu habe ich in zwei Blogposts bzw. Webcasts beschrieben.
</p>
        <p>
          <a class="TitleLinkStyle" href="http://www.artiso.com/ProBlog/PermaLink,guid,d1868740-eefb-4ed4-8c6e-2493baffaa23.aspx" rel="bookmark">MSDN
WebCast zum UI-Recording</a>
          <br />
          <a class="TitleLinkStyle" href="http://www.artiso.com/ProBlog/PermaLink,guid,723fe3a3-b97e-4eb2-90c7-0e8515580937.aspx" rel="bookmark">MSDN
WebCast zum UI-Testing mit dem UI <span class="searchword">Automation</span> Framework</a>
        </p>
        <p>
Wenn man sich mit dieser Technologie etwas intensiver beschäftigt wird man früher
oder später auf ein paar Probleme stoßen. So veröffentlichen beispielsweise nicht
alle Third-Party-Controls alle erforderlichen Funktionalitäten über die UIAutomation
Patterns. Und leider gibt es auch bei Standard-Winforms-Controls noch ein paar Lücken.
Ein Beispiel hierzu ist das MenuStrip-Control. Dieses Control bietet leider nicht
die erforderlichen Events um die Auswahl eines Menüeintrags aufzuzeichnen. Und für
die Auswahl eines Menüeintrages gibt es auch kein geeignetes Invoke-Pattern o.ä.
</p>
        <p>
Das schöne am UI Automation Framework ist jedoch, dass man diese Funktionalitäten
selber nachrüsten kann. Dies wollen wir nun am Beispiel des MenuStrips mal durchspielen.
Zum Einsatz kommen sog. Serverside Provider. Wir gehen zunächst her und erstellen
uns ein eigenes Control das wir von MenuStrip und entsprechenden Interfaces aus dem
UIA ableiten.
</p>
        <div>
          <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <span style="color: #0000ff">public</span>
            <span style="color: #0000ff">class</span> ExtendedMenuStrip
: MenuStrip, IRawElementProviderSimple, IValueProvider </pre>
        </div>
        <p>
 
</p>
        <p>
Über das Interface IValueProvider geben wir an, dass das Control das ValuePattern
implementieren soll. Wir verwenden hier das ValuePattern statt des InvokePatterns
da wir ja angeben müssen, welches Menüelement aufgerufen werden soll.
</p>
        <p>
Zunächst werden wir das Interface IRawElementProviderSimple implementieren.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #cc6633">#region</span> IRawElementProviderSimple
Members</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">object</span> GetPatternProvider(<span style="color: #0000ff">int</span> patternId)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">if</span> (patternId
== ValuePatternIdentifiers.Pattern.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">this</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">null</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">///
Get the value of properties</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #008000">///
&lt;param name="propertyId"&gt;&lt;/param&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #008000">///
&lt;returns&gt;&lt;/returns&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">object</span> GetPropertyValue(<span style="color: #0000ff">int</span> propertyId)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ClassNameProperty.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"ExtendedMenuStrip"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">else</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ControlTypeProperty.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">return</span> ControlType.MenuBar.Id;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.HelpTextProperty.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 32:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Help
for ExtendedMenuStrip"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 33:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 34:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 35:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.AutomationIdProperty.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 36:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 37:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">this</span>.Name;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 38:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 39:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 40:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.IsEnabledProperty.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 41:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 42:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">true</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 43:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 44:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 45:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ItemStatusProperty.Id)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 46:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 47:</span>
              <span style="color: #0000ff">return</span> SelectedItemID;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 48:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 49:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 50:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 51:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 52:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">null</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 53:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 54:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 55:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 56:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 57:</span>
              <span style="color: #008000">///
Get the host rawelement provider</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 58:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 59:</span>
              <span style="color: #0000ff">public</span> IRawElementProviderSimple
HostRawElementProvider</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 60:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 61:</span> get</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 62:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 63:</span>
              <span style="color: #0000ff">return</span> AutomationInteropProvider.HostProviderFromHandle(Handle);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 64:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 65:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 66:</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 67:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 68:</span>
              <span style="color: #008000">///
Get the provider options</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 69:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 70:</span>
              <span style="color: #0000ff">public</span> ProviderOptions
ProviderOptions</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 71:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 72:</span> get</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 73:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 74:</span>
              <span style="color: #0000ff">return</span> ProviderOptions.ServerSideProvider;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 75:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 76:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 77:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 78:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Die Methode GetPatternProvider gibt das Objekt selbst zurück, wenn ein Provider für
ein ValuePattern angefordert wird. Da unser Control nur dieses Pattern implementiert,
reagiert die Funktion nur auf dieses Pattern. Wir können das Control selbst zurückgeben,
da dieses ja das ValuePattern implementiert. Altzernativ könnte man natürlich auch
einen expliziten Provider definieren und hier zurückgeben. Die Methode GetPropertyValue
gibt je nach übergebenen PropertyID einen entsprechenden Wert zurück. Hier wird z.B.
die ID des Controls als AutomationID zurückgegeben. Die beiden Properties HostRawElementProvider
und ProviderOptions sind readonly und geben einen Hostprovider bzw. den Typ der Providers
zurück.
</p>
        <p>
Die Implementierung des IValueProvider Interface ist ebenfalls recht einfach:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #cc6633">#region</span> IValueProvider
Members </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">///
Get readonly as false</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> IsReadOnly</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> get</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">false</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #008000">///
Set value: Invoke the click event of the item</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #008000">///
&lt;param name="value"&gt;&lt;/param&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SetValue(<span style="color: #0000ff">string</span><span style="color: #0000ff">value</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">object</span>[]
param = <span style="color: #0000ff">new</span><span style="color: #0000ff">object</span>[1];</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> param[0]
= <span style="color: #0000ff">null</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> ToolStripMenuItem
toolStripMenuItem = getToolStripMenuItemByName(<span style="color: #0000ff">this</span>.Items, <span style="color: #0000ff">value</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #0000ff">if</span> (toolStripMenuItem
!= <span style="color: #0000ff">null</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> toolStripMenuItem.GetType().GetMethod(<span style="color: #006080">"OnClick"</span>,
BindingFlags.NonPublic | BindingFlags.Instance).Invoke(toolStripMenuItem, param);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #008000">///
Get the ID of the selected item</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> Value</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span> get</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 32:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 33:</span>
              <span style="color: #0000ff">return</span> SelectedItemID;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 34:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 35:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 36:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Entscheidend ist hier die Methode SetValue. Hier ermitteln wir das entsprechende Element
innerhalb des MenuStrips (ToolStripMenuItem) und rufen hier einen Click-Event auf.
Da die OnClick Methode nicht public ist, müssen wir hier Reflection verwenden um diese
aufrufen zu können (siehe auch <a href="http://www.artiso.com/ProBlog/PermaLink,guid,1e836876-aa59-4d6b-8302-a9dceb829e77.aspx">Events
von WinForms Controls von Außen aufrufen</a>). Das Aufrufen des Events ist an dieser
Stelle notwendig, da ja mehrere Eventhandler registriert sein können und die wollen
wir alle aufrufen. Durch den Click-Event verhält sich das Control am ähnlichsten zum
Anklicken in der UI. 
</p>
        <p>
Nun brauchen wir noch einen Event der ausgelöst wird wenn ein Menüeintrag ausgewählt
wird. 
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">///
Set eventhandlers</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000">///
&lt;param name="items"&gt;&lt;/param&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SetExtendedMenuStripEventHandlers(ToolStripItemCollection
items)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i
= 0; i &lt;= items.Count - 1; i++)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> ToolStripMenuItem
toolStripMenuItem = items[i] <span style="color: #0000ff">as</span> ToolStripMenuItem;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">if</span>(toolStripMenuItem
!= <span style="color: #0000ff">null</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> toolStripMenuItem.Click
+= <span style="color: #0000ff">new</span> EventHandler(ItemRaiseAutomationEvent);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> SetExtendedMenuStripEventHandlers(toolStripMenuItem.DropDownItems);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #008000">///
Raise automation event</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #008000">///
&lt;param name="sender"&gt;&lt;/param&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #008000">///
&lt;param name="e"&gt;&lt;/param&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> ItemRaiseAutomationEvent(<span style="color: #0000ff">object</span> sender,
EventArgs e)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">if</span> ((AutomationInteropProvider.ClientsAreListening))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span> AutomationEventArgs
args = <span style="color: #0000ff">new</span> AutomationEventArgs(InvokePatternIdentifiers.InvokedEvent);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>
              <span style="color: #0000ff">this</span>.SelectedItemID
=((ToolStripMenuItem)sender).Name;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> AutomationInteropProvider.RaiseAutomationEvent(InvokePatternIdentifiers.InvokedEvent, <span style="color: #0000ff">this</span>,
args);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Die Methode SetExtendedMenuStripEventHandlers registriert auf jedem ToolStripMenuItem
einen EventHandler. Dieser löst dann den AutomationEvent aus. Hier übergeben wir im
Feld SelectedItemID den Name des ToolStripMenuItems das angeklickt wurde. 
</p>
        <p>
Nun müssen wir noch die Methode wndProc überschreiben damit diese bei WM_GETOBJECT
den entsprechenden AutomationProvider zurückgibt.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">///
Process Windows-based messages</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000">///
&lt;param name="m"&gt;&lt;/param&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> [PermissionSetAttribute(SecurityAction.Demand,
Unrestricted = <span style="color: #0000ff">true</span>)]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">protected</span>
              <span style="color: #0000ff">override</span>
              <span style="color: #0000ff">void</span> WndProc(<span style="color: #0000ff">ref</span> Message
m)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #008000">//
0x3D == WM_GETOBJECT</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> Int32
param = 0;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">if</span> (Int32.TryParse(m.LParam.ToString(), <span style="color: #0000ff">out</span> param))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">if</span> ((m.Msg
== 0x3D) &amp;&amp; (param == AutomationInteropProvider.RootObjectId))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> m.Result
= AutomationInteropProvider.ReturnRawElementProvider(</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> Handle,
m.WParam, m.LParam, (IRawElementProviderSimple)<span style="color: #0000ff">this</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">return</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">base</span>.WndProc(<span style="color: #0000ff">ref</span> m);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> }</pre>
          </div>
        </div>
        <p>
Das so erstellte Control kann nun statt des normalen MenuStrip Controls verwendet
werden und ist nun über UI Automation ansprechbar. Die fertige Solution inkl. dem
UI-Recoder kann hier heruntergeladen werden:
</p>
        <p>
        </p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:df44c0ec-79e9-4c24-a82f-63c693ac5709" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProviderzurAutomat_130EE/UITests.zip" target="_blank">Donwload
Demo-Projekt</a>
          </p>
        </div>
        <p>
Vielleicht noch kurz eine Anmerkung weshalb der Zugriff auf die ToolStripItems etwas
umständlich gelöst wurde. Eigentlich wäre es doch einfach der direkt auf dem ToolStripMenuItem
den Event auszulösen. Dann könnte der Recoder auch direkt einen Invoke auf dem ToolStripMenuItem
generieren. Dazu müsste dann aber der ToolStripMenuItem abgeleitet werden und dann
wird's aber mit der Designer-Unterstützung problematisch. Denn um das Control soweit
umzubauen, dass im Designer beim Hinzufügen von ToolStripMenuItems zum MenuStrip der
abgeleitete Typ verwendet wird ist ein deutlich höherer Aufwand notwendig als das
Ganze über den MenuStrip laufen zu lassen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=35d09c0e-d00b-4025-b896-af96007c8a2f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Neue BuildTasks auf CodePlex</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,ba68630d-8c13-4b9c-9c85-2d7d902c410d.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,ba68630d-8c13-4b9c-9c85-2d7d902c410d.aspx</id>
    <published>2008-10-08T01:11:58+02:00</published>
    <updated>2008-10-10T01:12:05.5738053+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MSBuildExtensionPack&amp;DownloadId=45628" />
          <br />
Das MSBuild Extension Pack bietet eine Sammlung von BuildTasks für MSBuild und damit
natürlich auch TeamBuild die kostenlos von CodePlex heruntergeladen werden können.
Diese BuildTasks bieten verschiedene Operationen im Rahmen eines Builds wie z.B. das
Zippen und Vermailen von Dateien, Prüfen des Buildprojektes mit FxCop oder StyleCop,
verschiedene Dateioperationen und vieles mehr. Die Bibliothek ist gut strukturirert
und dokumentiert.
</p>
        <p>
          <a href="http://www.codeplex.com/MSBuildExtensionPack">MSBuild Extension Pack - Home</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ba68630d-8c13-4b9c-9c85-2d7d902c410d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Events von WinForms Controls von Au&amp;szlig;en aufrufen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1e836876-aa59-4d6b-8302-a9dceb829e77.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1e836876-aa59-4d6b-8302-a9dceb829e77.aspx</id>
    <published>2008-10-08T00:41:57.0369652+02:00</published>
    <updated>2008-10-08T00:41:57.0369652+02:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Möchte man einen Event eines Controls per Code auslösen und somit alle registrierten
Delegates aufrufen, wie es beim eigentlichen Auslösen des Events passiert, dann kann
dieses Beispiel helfen. Jedes Control besitzt für seine einzelnen Events eine Methode
den event auszulösen, z.B. OnClick(EventArgs e). Die Methoden sind allerdings private
und können damit von außerhalb des Controls nicht so einfach aufgerufen werden. Bei
einem einfachen Control wie z.B. einem Button geht das einfach durch Ableitung:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> CustomButton
: Button </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span> CustomButton()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span> InitializeComponent();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> RaiseClickEvent(EventArgs
e)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">base</span>.OnClick(e);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span> }</pre>
          </div>
        </div>
        <p>
Etwas schwieriger wird es bei komplexeren Controls, z.B. einem MenuStrip. Möchte man
den Click-Event eines ToolStripMenuItem aufrufen, müsste man ja das ToolStripMenuItem
ableiten, was aber zur Folge hätte, dass das komplette MenuStrip-Control umbauen muss.
Hier kann man mit Hilfe von Reflection eine bessere Lösung implementieren. Bei dieser
Lösung wird nur das MenuStrip abgeleitet und um eine RaiseClickEvent-Methode erweitert
der als Parameter ein ToolStripItem entgegen nimmt. Auf diesem wird dann per Reflection
die Private-Methode OnClick aufgerufen.
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> CustomMenuStrip
: MenuStrip </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span> CustomMenuStrip()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> RaiseClickEvent(ToolStripItem
m)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span> Type
t = m.GetType();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">object</span>[]
para = <span style="color: #0000ff">new</span><span style="color: #0000ff">object</span>[1];</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> para[0]
= <span style="color: #0000ff">null</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span> t.GetMethod(<span style="color: #006080">"OnClick"</span>,
BindingFlags.NonPublic | BindingFlags.Instance).Invoke(m, para);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> } </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span> }</pre>
          </div>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1e836876-aa59-4d6b-8302-a9dceb829e77" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Mit T-SQL Vor- und Nachname vertauschen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,5fa2e528-69b4-4325-a2a2-78e96d527391.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,5fa2e528-69b4-4325-a2a2-78e96d527391.aspx</id>
    <published>2008-10-05T11:48:07.2585178+02:00</published>
    <updated>2008-10-05T11:48:07.2585178+02:00</updated>
    <category term="SQL" label="SQL" scheme="http://www.artiso.com/ProBlog/CategoryView,category,SQL.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ich hatte gerade das Problem, dass in einem Feld in der Datenbank Einträge wie z.B.
"Thomas, Schissler" standen und ich die in "Schissler, Thomas" ändern wollte. Hier
hilft folgendes kleines Skript:
</p>
        <div>
          <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <span style="color: #0000ff">select</span>
            <span style="color: #0000ff">CASE</span> LEN(ResponsibleName) <span style="color: #0000ff">WHEN</span> 0 <span style="color: #0000ff">THEN</span> ResponsibleName <span style="color: #0000ff">ELSE</span><span style="color: #0000ff">SUBSTRING</span>(ResponsibleName,
charindex ( <span style="color: #006080">','</span>, ResponsibleName )+2, len(ResponsibleName))
+ <span style="color: #006080">', '</span> + <span style="color: #0000ff">SUBSTRING</span>(ResponsibleName,
1, charindex ( <span style="color: #006080">','</span>, ResponsibleName )-1) <span style="color: #0000ff">END</span><span style="color: #0000ff">from</span> data</pre>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5fa2e528-69b4-4325-a2a2-78e96d527391" />
      </div>
    </content>
  </entry>
  <entry>
    <title>XML-Felder in T_SQL abfragen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,c39cc8d7-1e1b-40d1-ba3a-1f87556374ca.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,c39cc8d7-1e1b-40d1-ba3a-1f87556374ca.aspx</id>
    <published>2008-10-05T11:29:54.5640246+02:00</published>
    <updated>2008-10-05T11:29:54.5640246+02:00</updated>
    <category term="SQL" label="SQL" scheme="http://www.artiso.com/ProBlog/CategoryView,category,SQL.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In einem früheren <a href="http://www.artiso.com/ProBlog/PermaLink,guid,dbf52623-b452-423f-b289-49929a9e4791.aspx">Beitrag</a> habe
ich beschrieben, wie man kleinere Listen mit LINQ effizien speichern kann. Hierzu
verwende ich einfach ein XML-Feld in der entsprechenden Tabelle und lege die Liste
dann dort als XML-Serialisierung ab. Nun stand ich vor der Herausforderung, dass ich
direkt auf der Datenbank dieses Feld abfragen wollte. Glücklicherweise beitet T-SQL
eine sehr gute XML-Unterstützung, unglücklicherweise gibt es eine vielzahl von Techniken
dies zu tun und die Treffer meiner Internetrecherche waren sehr unübersichtlich. Deshalb
hier nochmals kurz zusammengefasst, wie ich das gelöst habe.
</p>
        <p>
Ich habe in einem Feld folgenden XML-Inhalt der ein Dictionary mit 5 Einträgen repräsentiert:
</p>
        <div>
          <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">Root</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">item</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">key</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">int</span>
            <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span>17.00<span style="color: #0000ff">&lt;/</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span>2<span style="color: #0000ff">&lt;/</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span>17.81<span style="color: #0000ff">&lt;/</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span>3<span style="color: #0000ff">&lt;/</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span>18.62<span style="color: #0000ff">&lt;/</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span>4<span style="color: #0000ff">&lt;/</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span>19.43<span style="color: #0000ff">&lt;/</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span>5<span style="color: #0000ff">&lt;/</span><span style="color: #800000">int</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">key</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span>20.24<span style="color: #0000ff">&lt;/</span><span style="color: #800000">decimal</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">item</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Root</span><span style="color: #0000ff">&gt;</span></pre>
        </div>
        <p>
 
</p>
        <p>
Die Struktur der XML-Daten ist bei allen Datensätzen gleich. Nun wollte ich diese
Werte in 5 separaten Spalten ausgeben um diese einfachin Excel weiterverarbeiten zu
können. Das macht folgendes Skript:
</p>
        <div>
          <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <span style="color: #0000ff">SELECT</span> PackSIzeID,
Units, u1.l.<span style="color: #0000ff">value</span>(<span style="color: #006080">'decimal[1]'</span>,<span style="color: #006080">'Decimal(18,2)'</span>) <span style="color: #0000ff">AS</span> UnitsYear1,
u1.l.<span style="color: #0000ff">value</span>(<span style="color: #006080">'decimal[1]'</span>,<span style="color: #006080">'Decimal(18,2)'</span>) <span style="color: #0000ff">AS</span> UnitsYear2,
u1.l.<span style="color: #0000ff">value</span>(<span style="color: #006080">'decimal[1]'</span>,<span style="color: #006080">'Decimal(18,2)'</span>) <span style="color: #0000ff">AS</span> UnitsYear3,
u1.l.<span style="color: #0000ff">value</span>(<span style="color: #006080">'decimal[1]'</span>,<span style="color: #006080">'Decimal(18,2)'</span>) <span style="color: #0000ff">AS</span> UnitsYear4,
u1.l.<span style="color: #0000ff">value</span>(<span style="color: #006080">'decimal[1]'</span>,<span style="color: #006080">'Decimal(18,2)'</span>) <span style="color: #0000ff">AS</span> UnitsYear5 <span style="color: #0000ff">FROM</span> data_PackSizes <span style="color: #0000ff">CROSS</span> APPLY
Units.nodes(<span style="color: #006080">'//Root/item[1]/value'</span>) u1(l) <span style="color: #0000ff">CROSS</span> APPLY
Units.nodes(<span style="color: #006080">'//Root/item[2]/value'</span>) u2(l) <span style="color: #0000ff">CROSS</span> APPLY
Units.nodes(<span style="color: #006080">'//Root/item[3]/value'</span>) u3(l) <span style="color: #0000ff">CROSS</span> APPLY
Units.nodes(<span style="color: #006080">'//Root/item[4]/value'</span>) u4(l) <span style="color: #0000ff">CROSS</span> APPLY
Units.nodes(<span style="color: #006080">'//Root/item[5]/value'</span>) u5(l)</pre>
        </div>
        <p>
          <br />
Hier kann ich die 5 values als separate Nodes adressieren und dann in der Feldliste
entsprechend auswählen. Das Ergebnis sieht dann so aus:<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/XMLFelderinT_SQLabfragen_A190/image_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="98" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/XMLFelderinT_SQLabfragen_A190/image_thumb.png" width="837" border="0" /></a></p>
        <p>
Vielleicht geht das auch noch eleganter, aber für mich hat's erst mal funktioniert
und deshalb habe ich hier erst mal nicht mehr Zeit investiert.
</p>
        <p>
Weitere Infos zum Thema:
</p>
        <a href="http://www.sqlserverandxml.com/2007/12/xml-workshop-at-sql-server-central.html">SQL
XML-Workshop von Jacob Sebastian</a>
        <p>
          <a href="http://technet.microsoft.com/en-gb/library/ms345115.aspx">Technet-Whitepapaer:
XML Best Practices for Microsoft SQL Server 2005</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c39cc8d7-1e1b-40d1-ba3a-1f87556374ca" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Ank&amp;uuml;ndigung der n&amp;auml;chsten Version der TFS Power-Tools</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,cd9aef8b-2608-4e63-b5d7-ea509c454830.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,cd9aef8b-2608-4e63-b5d7-ea509c454830.aspx</id>
    <published>2008-10-02T14:49:18.4226515+02:00</published>
    <updated>2008-10-02T14:49:18.4226515+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die nächste Version der TFS Power-Tools werden ein paar richtig coole Features enthalten
sein. 
</p>
        <p>
Z.B. ein neuer Knoten "Team Members" im Team Explorer über den man mit allen Team-Mitglieder
kommunizieren kann und worüber man auch z.B. schnell die Pending Changes oder die
Shelfsets einzelner Mitglieder findet etc.
</p>
        <p>
          <a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_4.png">
            <img border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_thumb_1.png" width="244" height="376" />
          </a>
          <a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_10.png">
            <img border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_thumb_4.png" width="244" height="355" />
          </a>
        </p>
        <p>
Zusätzlich lassen sich damit Komponenten wie z.B. Checkin-Policies oder Workitem-Controls
einfach distributieren.
</p>
        <p>
          <a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_32.png">
            <img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_thumb_15.png" width="644" height="397" />
          </a>
        </p>
        <p>
Und von vielen heiß ersehnt, es gibt jetzt eine Windows Explorer Integration zur Quellcode-verwaltung.
</p>
        <p>
          <a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_20.png">
            <img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_thumb.png" width="461" height="312" />
          </a>
          <a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_38.png">
            <img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/PreviewofthenextTFSPowerToolsrelease_72E3/image_thumb_11.png" width="460" height="323" />
          </a>
        </p>
        <p>
Darüber hinaus ist noch der Power-Shell Support Bestandteil der neuen Power-Tools
</p>
        <p>
Weitere Details unter Brian Harrys Blog
</p>
        <p>
          <a href="http://blogs.msdn.com/bharry/archive/2008/10/01/preview-of-the-next-tfs-power-tools-release.aspx">bharry's
WebLog : Preview of the next TFS Power Tools release</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cd9aef8b-2608-4e63-b5d7-ea509c454830" />
      </div>
    </content>
  </entry>
  <entry>
    <title>R&amp;uuml;ckblick Herbstcampus N&amp;uuml;rnberg</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,f1ff5328-0001-4890-9191-1d1698bd7f3b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,f1ff5328-0001-4890-9191-1d1698bd7f3b.aspx</id>
    <published>2008-10-01T10:10:06.9955701+02:00</published>
    <updated>2008-10-01T10:10:06.9955701+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="" src="http://www.herbstcampus.de/hc08/style/image/logo.gif" />
        </p>
        <p>
Ok, OK, ich weiß, ich bin spät dran, aber ich möchte dennoch nicht versäumen, einen
kurzen Rückblick auf den <a target="_blank" href="http://www.herbstcampus.de/">Herbstcampus</a> zu
tun und meine Folien zu veröffentlichen.
</p>
        <p>
Interessant war für mich an der Veranstaltung, dass es Tracks sowohl für JAVA als
auch .Net gab. Ich selbst hatte zwei Talks:
</p>
        <p>
          <strong>Qualitätsmanagement mit VSTS und TFS<br /></strong>In dieser Session habe ich zunächst einmal beleuchtet, warum Entwickler QM
nicht unbedingt mögen. Einer der Gründe liegt in der mangelnden Integration von QM
in den Entwicklungsprozess. Gerade hier bietet VSTS und TFS einige Verbesserungen.
Wichtig ist, dass QM nicht erst mit dem Testing beginnt, sondern bereits früh im Prozess
ansetzen muss. Ohne ein gutes Requirement-Management wird kein gutes Qualitäts-Management
möglich sein. Im Vortrag habe ich demonstriert, welche Methoden mit diesem Toolset
über die verschiedenen Prozessphasen zur Verfügung stehen um in Software-Projekten
wirklich mehr Qualität zu erzielen.
</p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:91f4b23d-ffc9-4b17-9b4d-4be0bdf2f703" class="wlWriterSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/RckblickHerbstcampusMnchen_14E80/Qualit%C3%A4tsmanagement%20mit%20VSTS_artiso%202.pptx" target="_blank">Folien
zum Download</a>
          </p>
        </div>
        <p>
        </p>
        <p>
          <a name="47">
            <font color="#000000">
              <strong>Agile Development Process</strong>
            </font>
          </a>
          <strong> -
Ein Architektur-basierter Entwicklungsprozess</strong>
        </p>
        <p>
Architektur und Prozesse werden meist getrennt betrachtet. Dass aber gerade eine gemeinsame
Betrachtung dieser beiden Themen viele Vorteile bringt, habe ich versucht in dieser
Session zu vermitteln. Im Kern ging es darum, dass verschiedene Prozesse wie z.B.
das UI Driven Development erst durch eine passende Architektur ermöglicht wird. Sehr
gut fand ich auch die Diskussion am Ende meines Vortrags. Das versprochene Whitepaper
zu diesem Vortrag wird noch nachgereicht.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:ec5faf08-1fc5-49a7-bade-9777826eab55" class="wlWriterSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/RckblickHerbstcampusMnchen_14E80/Architekturgest%C3%BCtzter%20Entwicklungsprozes.pptx" target="_blank">Folien
zum Download</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f1ff5328-0001-4890-9191-1d1698bd7f3b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Auf Win2003 Server per WebDAV auf SharePoint zugreifen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,ec39921c-4624-4af4-a1f3-5d672634f059.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,ec39921c-4624-4af4-a1f3-5d672634f059.aspx</id>
    <published>2008-10-01T00:58:45.3844195+02:00</published>
    <updated>2008-10-01T00:58:45.3844195+02:00</updated>
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
SharePoint veröffentlicht die Dokumentbibliotheken per WebDAV, d.h. man kann über
\\&lt;Servername&gt;\sites\&lt;ProjektName&gt; beispielsweise auf die Dokumente eines
TFS-Projektes zugreifen. Das funktioniert standardmäßig aber nicht von einem Windows
2003 Server aus. Hier muss der WebDAV Client zuerst aktiviert werden. Hierzu muss
der Dienst "WebClient" gestartet werden. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AufWin2003ServerperWebDAVaufSharePointzu_C42/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AufWin2003ServerperWebDAVaufSharePointzu_C42/image_thumb.png" width="603" height="74" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ec39921c-4624-4af4-a1f3-5d672634f059" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2008 Development Edition und Database Edition als ein Paket</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,4ddd794c-ebd4-4cee-9bd5-011e039e96b0.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,4ddd794c-ebd4-4cee-9bd5-011e039e96b0.aspx</id>
    <published>2008-09-30T00:12:01.2095077+02:00</published>
    <updated>2008-09-30T00:12:01.2095077+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ab dem 01.10.2008 werden Besitzer einer Visual Studio 2008 Team System Development
Edition auch eine Visual Studio 2008 Team System Database Edition erhalten und umgekehrt.
In Visual Studio 2010 werden diese beiden Produkte wohl zu einem verschmolzen. 
</p>
        <p>
Weitere Informationen unter <a href="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx">Visual
Studio 2010 and .NET Framework 4.0 Overview</a> im Kapitel "Better Together – Visual
Studio Team System Development Edition and Database Edition"
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4ddd794c-ebd4-4cee-9bd5-011e039e96b0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Stefan Lieser bei der .Net Developer-Group Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,be13e72b-f553-4e49-885b-2dabb292ad8b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,be13e72b-f553-4e49-885b-2dabb292ad8b.aspx</id>
    <published>2008-09-29T22:40:14.4691555+02:00</published>
    <updated>2008-09-30T00:15:49.6172195+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/StefanLieserbeider.NetDevelopergroupUlm_13C1F/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/StefanLieserbeider.NetDevelopergroupUlm_13C1F/image_thumb.png" width="689" height="92" />
          </a>
        </p>
        <p>
Am 08.10.2008 haben wir Stefan Lieser zu Gast bei der .Net Developer-Group Ulm. Er
wird in seinem Vortrag einige "Software Design Principles" vorstellen und erläutern
wie diese helfen, Software wartbarer wird.
</p>
        <p>
Mitglieder und Gäste sind herzlich eingeladen. Weitere Infos unter <a href="http://www.dotnet-ulm.de/Treffen.aspx">http://www.dotnet-ulm.de/Treffen.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=be13e72b-f553-4e49-885b-2dabb292ad8b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TFS Excel integration fails with error TF80076 - Nach Installation des Team Explorer 2008</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1ca6580c-d174-4439-8b7c-ec086df97729.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1ca6580c-d174-4439-8b7c-ec086df97729.aspx</id>
    <published>2008-09-29T22:24:37.6350348+02:00</published>
    <updated>2008-09-29T22:24:37.6350348+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wenn vom Team Explorer die Versionen 2005 und 2008 auf einem Rechner installiert werden,
kann es bei der Office-Integration zu Problemen kommen die mit dem Fehler TF80076
quittiert werden. Wie man dieses beheben kann beschreibt dieser Artikel.
</p>
        <p>
          <a href="http://geekswithblogs.net/jkurtz/archive/2008/06/07/122690.aspx">TFS Excel
integration fails with error TF80076 - after installing 2008 Team Explorer</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1ca6580c-d174-4439-8b7c-ec086df97729" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Developer, Developer, Developer</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,42832f75-8e2c-4bf1-8ebf-5fa32ff6c315.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,42832f75-8e2c-4bf1-8ebf-5fa32ff6c315.aspx</id>
    <published>2008-09-25T20:19:14.058+02:00</published>
    <updated>2009-02-09T19:06:55.4814268+01:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Vom 19.11 bis zum 21.11.2008 findet in Berlin der <a href="http://technical-summit.de" target="_blank">Technical
Summit</a> statt. Neben einem Überblick über die aktuellen Microsoft Entwicklungstechnologien
könenn sie sich hier auch über die wichtigsten Trends auf der DC informieren.
</p>
        <p>
Ich bin auf dem Technical Summit als <a href="http://www.technical-summit.de/Referenten_ts08.mspx?ActiveID=1155#ThomasSchissler" target="_blank">Sprecher</a> und
als ATE vertreten sein. Meine Vortragsthemen:
</p>
        <li>
          <a href="http://technical-summit.de/Vortraege_ts08.mspx?ActiveID=1154#DurchgaengigeEntwicklungsprozesse " target="_self" temp_href="http://technical-summit.de/Vortraege_ts08.mspx?ActiveID=1154#DurchgaengigeEntwicklungsprozesse ">
            <u>
              <font color="#0066cc">Durchgängige
Entwicklungsprozesse mit Visual Studio Team System</font>
            </u>
          </a>
        </li>
        <li>
          <a href="http://technical-summit.de/Vortraege_ts08.mspx?ActiveID=1154#QualitaetsmanagementMitVSTS" target="_self">
            <u>
              <font color="#0066cc">Qualitätsmanagement
mit VSTS und TFS</font>
            </u>
          </a>
          <p>
 
</p>
          <p>
            <a href="http://www.technical-summit.de/AskTheExperts_ts08.mspx?ActiveID=1383" target="_blank">
              <img style="BORDER-RIGHT: 0px solid; BORDER-TOP: 0px solid; BORDER-LEFT: 0px solid; BORDER-BOTTOM: 0px solid" height="250" alt="Offizieller ATE @ Microsoft Technical Summit 2008: Treffen Sie mich in den Ask the Experts-Sessions!" src="http://www.technical-summit.de/upload/ts_banner_300x250_ate_1213.jpg" width="300" align="top" />
            </a>
          </p>
        </li>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=42832f75-8e2c-4bf1-8ebf-5fa32ff6c315" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team System User Group - Virtual Edition</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e2149add-d6ef-4c01-990a-5b5ddde1ff37.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e2149add-d6ef-4c01-990a-5b5ddde1ff37.aspx</id>
    <published>2008-09-25T01:34:36.6873975+02:00</published>
    <updated>2008-09-25T01:34:36.6873975+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Eine neue User-Group die sich speziell mit Team System beschäftigt wurde vor kurzem
gegründet. Dabei handelt es sich um eine virtuelle usergroup, das heißt die Treffen
finden in Second Life und über Office Live Meeting statt. Ich bin schon mal gespannt
auf das nächste Treffen.
</p>
        <p>
          <a href="http://www.tsug-ve.com/" target="_blank">Team System User Group - Virtual
Edition</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e2149add-d6ef-4c01-990a-5b5ddde1ff37" />
      </div>
    </content>
  </entry>
  <entry>
    <title>&amp;quot;How Do I?&amp;quot; Videos for Team System</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,8cea01fd-67af-49a6-82ec-261ff18fcb27.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,8cea01fd-67af-49a6-82ec-261ff18fcb27.aspx</id>
    <published>2008-09-25T01:23:15.3861622+02:00</published>
    <updated>2008-09-25T01:23:15.3861622+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In inzwischen über 47 Videos werden in dieser Serie HowTos rund um das Thema Visual
Studio Team System präsentiert. Kurz und verständlich bekommt man hier viele BestPractices
und Tips. 
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/vsts2008/test/bb507749.aspx">"How Do I?"
Videos for Team System</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8cea01fd-67af-49a6-82ec-261ff18fcb27" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Geplante Systemvoraussetzungen f&amp;uuml;r Rosario</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,faa88802-cca0-4ec1-bc0b-3828d63dccf6.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,faa88802-cca0-4ec1-bc0b-3828d63dccf6.aspx</id>
    <published>2008-09-25T00:26:01.7062819+02:00</published>
    <updated>2008-09-25T00:26:01.7062819+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Es ist wohl noch eine weile hin, bis wir Rosario wirklich nutzen dürfen. Brian Harry
hat aber schon mal vorab veröffentlicht, welche Systemvoraussetzungen und Abhängigkeiten
Rosario haben wird. So werden wohl unter anderem auch SQL 2005 und Office 2003 nicht
mehr unterstützt. Dies gibt jetzt bereits die Möglichkeit, rechtzeitig zu planen und
sich auf die Anforderungen ggf. entsprechend vorzubereiten.
</p>
        <p>
          <a href="http://blogs.msdn.com/bharry/archive/2008/09/23/charting-a-course-for-tfs-rosario.aspx">bharry's
WebLog : Charting a course for TFS "Rosario"</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=faa88802-cca0-4ec1-bc0b-3828d63dccf6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Anpassung von TFS ProcessTemplates im laufenden Betrieb</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,d0283a3a-c70f-43a1-b812-a7dba36c87c5.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,d0283a3a-c70f-43a1-b812-a7dba36c87c5.aspx</id>
    <published>2008-09-24T14:34:49.6414729+02:00</published>
    <updated>2008-09-24T14:34:49.6414729+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Team Foundation Server bietet die flexible Möglichkeit ProcessTemplates individuell
anzupassen. Diese ProcessTemplates enthalten die Definition der Workitemtypes (welche
gibt es und welche Felder haben diese), die Workflows (was passiert wenn ich bei einem
bestimmten Workitem eine bestimmte Aktion auslöse), und vieles mehr wie Standarddokumente
etc.
</p>
        <p>
Dieses ProcessTemplate kann man nicht nur im Vorfeld definieren, sondern auch für
laufende Projekte noch anpassen, was in der Praxis eine enorme Hilfe ist. Wie's genau
geht beschreibt <a href="http://blogs.msdn.com/cbinder/" target="_blank">Christian
Binder</a> in einem zweiteiligen Blog-Beitrag.
</p>
        <p>
          <a href="http://blogs.msdn.com/cbinder/archive/2008/09/12/teil-1-wie-kann-ich-workitems-live-anpassen-und-diese-nderungen-wieder-in-das-process-template-importieren.aspx" target="_blank">Teil
1</a>
          <br />
          <a href="http://blogs.msdn.com/cbinder/archive/2008/09/13/teil-2-wie-kann-ich-workitems-live-anpassen-und-diese-nderungen-wieder-in-das-process-template-importieren.aspx" target="_blank">Teil
2</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d0283a3a-c70f-43a1-b812-a7dba36c87c5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Team System Widgets</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1d7bc88b-6f3c-4e5d-99b5-36ac3368e894.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1d7bc88b-6f3c-4e5d-99b5-36ac3368e894.aspx</id>
    <published>2008-09-02T23:55:23.6449099+02:00</published>
    <updated>2008-09-02T23:55:23.6449099+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Richard Hundhausen hat eine Liste mit Tools und nützlichen Helferlein rund um Team
Foundation Server veröffentlicht.  
</p>
        <p>
          <a href="http://www.teamsystemwidgets.com/">Team System Widgets</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1d7bc88b-6f3c-4e5d-99b5-36ac3368e894" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Cool Tipp Wettbewerb bei der .Net Developergroup Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,acccbaa3-c990-4864-b134-4b18ebbe8a57.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,acccbaa3-c990-4864-b134-4b18ebbe8a57.aspx</id>
    <published>2008-08-25T08:22:19.8527055+02:00</published>
    <updated>2008-08-25T08:22:19.8527055+02:00</updated>
    <category term="News" label="News" scheme="http://www.artiso.com/ProBlog/CategoryView,category,News.aspx" />
    <content type="html">&lt;p style="text-align: justify"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt;am &lt;b&gt;08.09.2008&lt;/b&gt; findet
bei der .Net Developergroup Ulm ein 'Cool Tipps' Wettbewerb statt. Idee hinter diesem
Wettbrewerb ist, einen stärkeren Austausch innerhalb der Community zu erreichen. Mit
diesem besonderen Event wollen wir auch das 2-jähriges Bestehen unserer Usergroup
und hoffentlich auch das 200. Mitglied feiern.&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-align: justify"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt;Jeder Entwickler
hat seine kleinen Tricks um bestimmte Aufgaben schnell, effizient und elegant zu erledigen.&lt;br&gt;
Unser Ziel ist ein Austausch dieses Wissens. Aus diesem Grunde wollen wir am 08. September
einen ganz besonderen Wettbewerb veranstalten. Die Mitglieder der .net Developergroup
Ulm sind aufgerufen, ihr Knoff-Hoff in einer Kurzpräsentation vorzustellen. Das vorgestellte
Thema kann aus einem weiten Bereich gewählt werden. Egal ob es sich um ein Code-Snippet
handelt, um ein Tool, eine spezielle Methode oder ein Designpattern. Alles was mit
der .Net Programmierung zu tun hat ist von Interesse. Und jeder Teilnehmer kann wertvolle
Sachpreise gewinnen. Mitmachen lohnt sich!&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Verdana','sans-serif'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-align: justify"&gt;
&lt;b&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt;Hier die Rahmenbedingungen
für den Wettbewerb:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo1; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Teilnahmeberechtigt
sind alle Mitglieder der .net Developergroup Ulm&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo1; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Jeder
Teilnehmer erhält 10 Min. für seinen Beitrag&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo1; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Alle
Beiträge müssen in einem Zusammenhang mit der Programmierung unter .Net stehen.&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo1; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Die
Besucher der Veranstaltung wählen am Ende die besten Beiträge, die mit wertvollen
Sachpreisen belohnt werden.&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo1; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Themenvorschläge
sind bis spätestens 31.08. per E-Mail einzureichen unter &lt;a href="mailto:info@dotnet-ulm.de"&gt;&lt;u&gt;&lt;font color="#49597d"&gt;info@dotnet-ulm.de&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify"&gt;
&lt;b&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt;Sachpreise:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-align: justify"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt; 
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li style="font-size: 10pt; font-family: verdana"&gt;
1 Enterprise Studio-Lizenz (Wert 1100$) von&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/LogoComponentOne_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="58" alt="LogoComponentOne" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/LogoComponentOne_thumb.png" width="244" border="0"&gt;&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li style="font-size: 10pt; font-family: verdana"&gt;
2 RadControl-Lizenzen (Wert je 1299$) von 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/logo_telerik_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="59" alt="logo_telerik" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/logo_telerik_thumb.png" width="161" border="0"&gt;&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li style="font-size: 10pt; font-family: verdana"&gt;
1 ReSharper-Lizenz (Wert 140€) von 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/logo_jetbrains_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="58" alt="logo_jetbrains" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/logo_jetbrains_thumb.png" width="132" border="0"&gt;&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li style="font-size: 10pt; font-family: verdana"&gt;
3 Jahres Abos (Wert je 76,50€)von 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/dotnetmaglogo_2.gif"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="64" alt="dotnetmaglogo" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/dotnetmaglogo_thumb.gif" width="214" border="0"&gt;&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li style="font-size: 10pt; font-family: verdana"&gt;
5 Buchgutscheine (a 60 €) von 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/logo_mspress_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="91" alt="logo_mspress" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CoolTippWettbewerbb.NetDevelopergroupUlm_75A6/logo_mspress_thumb.png" width="200" border="0"&gt;&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-align: justify"&gt;
&lt;b&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt;Bereits angemeldet
Themen:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'"&gt; 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Lokalisiertes
Property-Grid&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Vista
Gadgets programmieren&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Broadcast
Messages mit Controls&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Zeitspar-Tools
für TFS&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Object
Cloner&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Data
Sets per WCF übertragen&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;PDF-
und Excel-Export aus ASP.Net mit Bordmitteln&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Generische
Fehlerklasse&lt;/span&gt;
&lt;/li&gt;
&lt;li class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: de; mso-fareast-language: de; mso-bidi-language: ar-sa"&gt;Beliebige
Datenformate per Serialisierung erzeugen und lesen &lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo7; tab-stops: list 36.0pt"&gt;
&lt;span style="font-size: 10pt; font-family: 'Verdana','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: de; mso-fareast-language: de; mso-bidi-language: ar-sa"&gt;Wer
noch Interesse hat, am Wettbewerb teilzunehmen, kann gerne noch einen Vortrag an &lt;a href="mailto:info@dotnet-ulm.de"&gt;info@dotnet-ulm.de&lt;/a&gt; einrichen.
Und natürlich sind alle interessierten gerne als Zuhörer willkommen. Und vielleicht
schaffen wir es ja doch noch bis zum 08.09 die fehlenden 7 Mitglieder zu gewinnen,
um die 200 voll zumachen.&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=acccbaa3-c990-4864-b134-4b18ebbe8a57" /&gt;</content>
  </entry>
  <entry>
    <title>Rechnerkonfiguration</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,ee9e6a42-8eee-420d-b831-5eab829ff67b.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,ee9e6a42-8eee-420d-b831-5eab829ff67b.aspx</id>
    <published>2008-08-17T10:28:47.756+02:00</published>
    <updated>2008-10-31T00:24:10.0578061+01:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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:
</p>
        <p>
          <strong>Betriebsystem / Standardanwendungen:</strong>
        </p>
        <ul>
          <li>
Windows Vista Ultimate 
</li>
          <li>
Office 2007 
</li>
          <li>
SQL-Server 2005 Express 
</li>
          <li>
SQL-Server 2005 Management Studio</li>
        </ul>
        <p>
          <strong>Entwicklungsumgebung:</strong>
        </p>
        <ul>
          <li>
Visual Studio 2008 Team Edition Team Suite  
</li>
          <li>
Visual Studio Team Explorer 
<br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=0ED12659-3D41-4420-BBB0-A46E51BFCA86&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=0ED12659-3D41-4420-BBB0-A46E51BFCA86&amp;displaylang=en</a><a href="http://www.artiso.com/ProBlog/ct.ashx?id=1ae2ab90-2d10-42de-af1c-c55251b08c4e&amp;url=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3ffamilyid%3d0ED12659-3D41-4420-BBB0-A46E51BFCA86%26displaylang%3den"></a></li>
          <li>
Microsoft Team Foundation Server Power Tools mit zusätzlichen Tools zum TFS<br /><a href="http://msdn2.microsoft.com/en-us/tfs2008/bb980963.aspx">http://msdn2.microsoft.com/en-us/tfs2008/bb980963.aspx</a></li>
          <li>
GostDoc um XML-Kommentare zu erstellen (Free)<br /><a href="http://www.roland-weigelt.de/ghostdoc/">http://www.roland-weigelt.de/ghostdoc/</a></li>
          <li>
Infragistics Netadvantage Suite eine sehr gute GUI Bibliothek, aktuelle Hotfixes unbedingt
installieren<br /><a href="http://www.infragistics.com/dotnet/netadvantage.aspx#Overview">http://www.infragistics.com/dotnet/netadvantage.aspx#Overview</a></li>
          <li>
Internet Explorer Developer Toolbar zum untersuchen von Web-Seiten im IE (Free)<br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en</a></li>
          <li>
LINQ to SQL Debug Visualizer (Free)<br /><a href="http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx">http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx</a></li>
          <li>
Lutz Roeders Reflector for .Net um Assemblies zu im Quellcode anzuzeigen (Free)<br /><a href="http://www.aisto.com/roeder/dotnet/">http://www.aisto.com/roeder/dotnet/</a></li>
          <li>
Microsoft Chart Controls for Microsoft .NET Framework 3.5 (Free)<br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&amp;displaylang=en</a></li>
          <li>
Microsoft PEX zum automatischen Gerenrieren von Unit-Tests (Free)<br /><a href="http://research.microsoft.com/pex">http://research.microsoft.com/pex</a></li>
          <li>
Power Commands for Visual Studio 2008 (Free)<br /><a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PowerCommands&amp;ReleaseId=559">http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PowerCommands&amp;ReleaseId=559</a></li>
          <li>
Snippet Designer zum Erstellen von Code-Snippets (Free)<br /><a href="http://www.codeplex.com/SnippetDesigner">http://www.codeplex.com/SnippetDesigner</a></li>
        </ul>
        <p>
          <strong>Tools</strong>
        </p>
        <ul>
          <li>
Acronis True Image 10 Home um Images der lokalen Platte auf ein USB-Device zu sichern<br /><a href="http://www.acronis.de/homecomputing/products/trueimage/">http://www.acronis.de/homecomputing/products/trueimage/</a></li>
          <li>
Acrobat Reader 9 (Free)<br /><a href="http://www.adobe.com/products/acrobat/readstep2.html">http://www.adobe.com/products/acrobat/readstep2.html</a></li>
          <li>
artiso WorkitemManager<br /><a href="http://www.artiso.com/?Page=90">http://www.artiso.com/?Page=90</a></li>
          <li>
AusLogics Disk Defrag zum Festplatten defragmentieren (Free)<br /><a href="http://www.auslogics.com/disk-defrag/index.php">http://www.auslogics.com/disk-defrag/index.php</a></li>
          <li>
Avira AntiVir Workstation als Virenscanner<br /><a href="http://www.avira.de/de/produkte/avira_antivir_workstation.html">http://www.avira.de/de/produkte/avira_antivir_workstation.html</a></li>
          <li>
Axialis Icon Workshop um Icons zu erstellen und zu bearbeiten<br /><a href="http://www.axialis.com/iconworkshop/">http://www.axialis.com/iconworkshop/</a></li>
          <li>
Cube Desctop für virtuelle Desktops<br /><a href="http://www.cubedesktop.com/">http://www.cubedesktop.com/</a></li>
          <li>
Daemon Tools um ISO-Images direkt zu lesen (Free)<br /><a href="http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&amp;catid=5">http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&amp;catid=5</a></li>
          <li>
FreeDownloadManager (Free)<br /><a href="http://www.freedownloadmanager.org/">http://www.freedownloadmanager.org/</a></li>
          <li>
IEeee ist ein Plugin für den IE mit dem einfach und schnell Bug-Workitems im TFS generiert
werden können (Free)<br /><a href="http://www.codeplex.com/UKVSTS">http://www.codeplex.com/UKVSTS</a></li>
          <li>
Microsoft Shared View um Desktop über eine einfache Internetverbindung zu sharen (Beta)<br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=95AF94BA-755E-4039-9038-63005EE9D33A&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=95AF94BA-755E-4039-9038-63005EE9D33A&amp;displaylang=en</a></li>
          <li>
Mind Manager 7 Pro<br /><a href="http://www.mindmanager.de">http://www.mindmanager.de</a></li>
          <li>
Notepad++ ein echt cooler Editor für praktisch alle Textformate (Free)<br /><a href="http://notepad-plus.sourceforge.net/de/site.htm">http://notepad-plus.sourceforge.net/de/site.htm</a></li>
          <li>
Office 2007 Save as PDF or XPS Add-In (Free mit gültigem Office 2007)<br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;displaylang=en</a></li>
          <li>
Paint .Net, ein sehr gutes Grafik-Programm (Free)<br /><a href="http://getpaint.net/index.html">http://getpaint.net/index.html</a></li>
          <li>
Paint .Net PhotoshopFilter, ein Plugin das das Öffnen und Speichern von Photoshop-Dateien
mit Paint .Net ermöglicht (Free)<br /><a href="http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin">http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin</a></li>
          <li>
Skype zur Kommunikation über das Internet (Free)<br /><a href="http://www.skype.de/intl/de/">http://www.skype.de/intl/de/</a></li>
          <li>
Synergy um mein Notebook mit der Tastatur / Maus meines Hauptrechners zu steuer (Free)<br /><a href="http://synergy2.sourceforge.net/">http://synergy2.sourceforge.net/</a></li>
          <li>
Team Foundation Server Administration Tool<br /><a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin">http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin</a></li>
          <li>
TPG Setholidays zum Eintragen von Feiertagen in Project und Outlook (Free)<br /><a href="http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html">http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html</a></li>
          <li>
VMWare Workstation um Testumgebungen virtuell ablaufen zu lassen<br /><a href="http://www.vmware.com/products/ws/">http://www.vmware.com/products/ws/</a></li>
          <li>
Windows Live Toolbar mit sinnvollen Tools für den IE, z.B. Blog this (Free)<br /><a href="http://toolbar.live.com/?mkt=de-at">http://toolbar.live.com/?mkt=de-at</a></li>
          <li>
Windows Live Writer zum bloggen (Free)<br /><a href="http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx">http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx</a></li>
          <li>
XML Notepad zum Anzeigen und Bearbeiten von XML-Dateien (Free)<br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=72D6AA49-787D-4118-BA5F-4F30FE913628&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=72D6AA49-787D-4118-BA5F-4F30FE913628&amp;displaylang=en</a></li>
          <li>
ZoomIt zum Zoomen und Zeichnen auf dem Desktop - sehr praktisch für Präsentationen
(Free)<br /><a href="http://download.sysinternals.com/Files/ZoomIt.zip">http://download.sysinternals.com/Files/ZoomIt.zip</a><br /></li>
        </ul>
        <p>
Stand 30.10.2008<br />
To be continued...
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ee9e6a42-8eee-420d-b831-5eab829ff67b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Kostenloser Icon-Editor f&amp;uuml;r VS 2008 Anwender</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx</id>
    <published>2008-08-14T00:58:04.8475449+02:00</published>
    <updated>2008-08-14T00:58:04.8475449+02:00</updated>
    <category term="Tools" label="Tools" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tools.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wer eine Visual Studio 2008 Standard Edition oder höher sein Eigen nennt, kann sich
jetzt kostenlos einen Icon-Editor herunterladen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserIconEditorfrVS2008Anwender_D99/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="343" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserIconEditorfrVS2008Anwender_D99/image_thumb.png" width="597" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.axialis.com/download/iwlite.html">Axialis Software - IconWorkshop™
Lite Download</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aca4b466-ca48-4033-b6ed-fffeaba1f677" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Administration Guide for Team Foundation Server</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,62c6f061-6c03-42ff-87d7-607a942c1535.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,62c6f061-6c03-42ff-87d7-607a942c1535.aspx</id>
    <published>2008-08-14T00:48:10.5781166+02:00</published>
    <updated>2008-08-14T00:48:10.5781166+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=585f0ce7-789e-4c00-b132-6d88c995685c&amp;displaylang=en">Download
details: Administration Guide for Team Foundation Server</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=62c6f061-6c03-42ff-87d7-607a942c1535" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Problem mit .Net Framework 3.5 SP1</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,a2aa9376-34de-4284-bb39-d05d3e9d18fb.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,a2aa9376-34de-4284-bb39-d05d3e9d18fb.aspx</id>
    <published>2008-08-12T17:38:28.7916327+02:00</published>
    <updated>2008-08-12T23:36:57.257411+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ü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 <a href="http://blogs.msdn.com/dparys/archive/2008/08/12/mehr-zu-vs-2008-net-3-5-sp1.aspx">Dariusz</a> anschauen.
</p>
        <p>
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.
</p>
        <p>
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:
</p>
        <div>
          <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
scriptManager.RegisterDataItem(<span style="color: #0000ff">this</span>, <span style="color: #006080">"StringToTransfer"</span>);</pre>
        </div>
        <p>
In Javascript kann ich dann auf diese Werte zugreifen:
</p>
        <div>
          <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <span style="color: #0000ff">function</span> EndRequestHandler(sender,
args) { <span style="color: #0000ff">if</span> (sender._dataItems != <span style="color: #0000ff">null</span>)
{ <span style="color: #0000ff">if</span> (sender._dataItems.__Page != <span style="color: #0000ff">null</span>)
{ <span style="color: #0000ff">if</span> (sender._dataItems.__Page == <span style="color: #006080">'StringToTransfer'</span>)
{ fnShowSizedPopup(<span style="color: #006080">'../../Web/Search/CopyProducts.aspx'</span>,
500, 400); } } } }</pre>
        </div>
        <p>
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?
</p>
        <p>
 
</p>
        <p>
Nachtrag:
</p>
        <p>
Dank <a href="http://weblogs.asp.net/hpreishuber/">Hannes</a> 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
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=a2aa9376-34de-4284-bb39-d05d3e9d18fb" />
      </div>
    </content>
  </entry>
  <entry>
    <title>MSDN WebCast zum UI-Recording</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,d1868740-eefb-4ed4-8c6e-2493baffaa23.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,d1868740-eefb-4ed4-8c6e-2493baffaa23.aspx</id>
    <published>2008-07-24T22:18:50.495+02:00</published>
    <updated>2009-07-31T18:40:46.5817303+02:00</updated>
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="UI Automation" label="UI Automation" scheme="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx" />
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="html">&lt;p&gt;
&lt;img alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550" height="100"&gt;
&lt;/p&gt;
&lt;p&gt;
Zusammen mit &lt;a href="http://blogs.msdn.com/cbinder" target="_blank"&gt;Christian Binder&lt;/a&gt; habe
ich nun einen MSDN Webcast aufgenommen der sich mit dem Thema UI Events und Record
&amp; Play für UI Testing beschäftigt. Dieser Webcast ist als Fortsetzung zum Thema &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,723fe3a3-b97e-4eb2-90c7-0e8515580937.aspx" target="_blank"&gt;UI
Testing mit dem UI Automation Framework&lt;/a&gt; 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 &lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MSDNWebCastzumUIRecording_137AC/UITests.zip" target="_blank"&gt;hier&lt;/a&gt; runterladen. 
&lt;/p&gt;
&lt;p&gt;
Kurz hier der Inhalt des Webcasts zusammengefasst. 
&lt;p&gt;
Ü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. 
&lt;p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MSDNWebCastzumUIRecording_137AC/UITests.zip" target="_blank"&gt;Download
Demo-Code&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032383658"&gt;Download
Webcast&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d1868740-eefb-4ed4-8c6e-2493baffaa23" /&gt;</content>
  </entry>
  <entry>
    <title>Aktuelle Vortragsthemen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,b0daa488-fd53-4f8c-bb27-93da00db0ae5.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,b0daa488-fd53-4f8c-bb27-93da00db0ae5.aspx</id>
    <published>2008-07-24T00:07:56.6124298+02:00</published>
    <updated>2008-07-24T00:10:42.1759894+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <style type="text/css">
        .style1
        {
            height: 75.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #b8cce4;
        }
        .style2
        {
            width: 718pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #b8cce4;
        }
        .style3
        {
            height: 75.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #dbe5f1;
        }
        .style4
        {
            width: 718pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #dbe5f1;
        }
        .style5
        {
            height: 45.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #b8cce4;
        }
        .style6
        {
            height: 45.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #dbe5f1;
        }
        .style7
        {
            height: 90.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #b8cce4;
        }
        .style8
        {
            height: 105.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #dbe5f1;
        }
        .style9
        {
            height: 90.0pt;
            width: 230pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: normal;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #dbe5f1;
        }
        .style10
        {
            height: 60.0pt;
            font-size: 11.0pt;
            color: black;
            font-weight: 400;
            text-decoration: none;
            font-family: calibri, sans-serif;
            font-style: normal;
            text-align: general;
            vertical-align: top;
            white-space: nowrap;
            border-style: none;
            border-color: inherit;
            border-width: medium;
            padding-left: 1px;
            padding-right: 1px;
            padding-top: 1px;
            background: #b8cce4;
        }
    </style>
        <table style="border-collapse: collapse" border="0" cellspacing="0" cellpadding="0">
          <tbody>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" id="MSOZoneCell_WebPartWPQ1" class="style1" height="100">
Qualitätsmanagement mit VSTS und TFS</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style2">
Qualität spielt bei Software eine immer stärkere Rolle. Gleichzeitig werden immer
effizientere<span style="mso-spacerun: yes">  </span>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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style3" height="100">
Agile Development Process - Ein Architekturbasierter Entwicklungsprozess</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style4">
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.<span style="mso-spacerun: yes"> </span></td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style5" height="60">
Mehrschichtige Architekturen mit .Net</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style2">
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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style6" height="60">
Build-Management mit Team Foundation Server</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style4">
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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style7" height="120">
Testing Practices mit VSTS und TFS</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style2">
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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style8" height="140">
UI-Testing mit UI Automation</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style4">
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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style1" height="100">
Closing Tool-Gaps in your Development Process with the TFS API</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style2">
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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style9" height="120">
Durchgängige Entwicklungsprozesse mit Visual Studio Team System</td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" class="style4">
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.</td>
            </tr>
            <tr>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style10" height="80">
                <div width="100%" allowdelete="false" haspers="false" webpartid="8e8157d0-9bed-48a8-b7a5-44d0def79500" allowexport="false">Reporting
mit dem TFS
</div>
              </td>
              <td style="text-underline-style: none; text-line-through: none; mso-pattern: #b8cce4 none" class="style2">
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.</td>
            </tr>
          </tbody>
        </table>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=b0daa488-fd53-4f8c-bb27-93da00db0ae5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Individuelle diff / merge Tools im TFS integrieren</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1851e2e0-c447-4a6a-938e-f11528ffe72e.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1851e2e0-c447-4a6a-938e-f11528ffe72e.aspx</id>
    <published>2008-07-23T17:52:15.3431666+02:00</published>
    <updated>2008-07-23T18:01:44.2530576+02:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <p>
Ich habe das mal für Word-Dokumente getestet:
</p>
        <p>
1.) Diff Doc <a href="http://www.softinterface.com/MD/Document-Comparison-Software.HTM">runterladen</a> und
installieren
</p>
        <p>
2.)  Einstellungen im VS unter Tools / Options / Source Control / Visual Studio
Team Foundation Server und dann auf Configure User Tools klicken.
</p>
        <p>
3.) Für die Endung .docx das Diff Doc konfigurieren
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/IndividuellediffmergeToolsimTFSintegrier_FB48/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="195" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/IndividuellediffmergeToolsimTFSintegrier_FB48/image_thumb.png" width="368" border="0" />
          </a>
        </p>
        <p>
4.) Aus der Source Control einen Compare für ein Word-File aufrufen
</p>
        <p>
5.) Geniesen
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/IndividuellediffmergeToolsimTFSintegrier_FB48/image_4.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="415" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/IndividuellediffmergeToolsimTFSintegrier_FB48/image_thumb_1.png" width="574" border="0" />
          </a>
        </p>
        <p>
Weitere Infos hier:
</p>
        <p>
          <a href="http://blogs.msdn.com/jmanning/articles/535573.aspx">James Manning's blog
: diff/merge configuration in Team Foundation - common Command and Argument values</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1851e2e0-c447-4a6a-938e-f11528ffe72e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Brian the Build Bunny: Anzeige des Build-Status eines TFS</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,3626fc51-e54a-4d7c-9d4b-ac0b5c8dda69.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,3626fc51-e54a-4d7c-9d4b-ac0b5c8dda69.aspx</id>
    <published>2008-07-22T09:11:06.3585024+02:00</published>
    <updated>2008-07-22T09:11:06.3585024+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bin gerade auf ein <a href="http://www.woodwardweb.com/gadgets/000434.html">Post</a> von <a href="http://www.woodwardweb.com/">Martin
Woodward</a> gestossen. Das zeigt doch mal wieder, wie kreativ wir Entwickler sind
(oder sollte ich eher sagen dass wir das Kind in uns ausleben).
</p>
        <p>
          <a href="http://www.woodwardweb.com/gadgets/000434.html">Martin Woodward: Brian the
Build Bunny</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3626fc51-e54a-4d7c-9d4b-ac0b5c8dda69" />
      </div>
    </content>
  </entry>
  <entry>
    <title>ClickOnce und Prozessorarchitektur</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,9192c102-ee8e-44fc-bb5c-8a27300c2f41.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,9192c102-ee8e-44fc-bb5c-8a27300c2f41.aspx</id>
    <published>2008-07-18T13:57:09.5839275+02:00</published>
    <updated>2008-07-18T13:57:09.5839275+02:00</updated>
    <category term="Know-How" label="Know-How" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Know-How.aspx" />
    <category term="Tipps und Tricks" label="Tipps und Tricks" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tipps%2Bund%2BTricks.aspx" />
    <content type="html">&lt;p&gt;
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 (&lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,7a7ed9ca-f830-449f-83bb-ff099dca590a.aspx"&gt;siehe
auch den Blogeintrag zur TFS-API unter x64&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/ct.ashx?id=7a7ed9ca-f830-449f-83bb-ff099dca590a&amp;amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fTFSAPImitx64_A334%2fimage_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="289" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFSAPImitx64_A334/image_thumb_6.png" width="509" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;span lang="EN-US" style="font-size: 11pt; color: #1f497d; font-family: 'Calibri','sans-serif'; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: en-us; mso-fareast-language: de; mso-bidi-language: ar-sa"&gt;„The
deployment identity does not match the subscription” bzw.&lt;br&gt;
&lt;span style="color: #1f497d"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;„Die
Bereitstellungsidentität stimmt nicht mit dem Abonnement überein.“&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&gt;&lt;/blockquote&gt; 
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9192c102-ee8e-44fc-bb5c-8a27300c2f41" /&gt;</content>
  </entry>
  <entry>
    <title>July '08 Power Tools f&amp;uuml;r Team Foundation Server</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,8e801763-15c1-48d3-ab2f-d99f705913ae.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,8e801763-15c1-48d3-ab2f-d99f705913ae.aspx</id>
    <published>2008-07-17T09:38:13.4971375+02:00</published>
    <updated>2008-07-17T09:38:13.4971375+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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 <a href="http://blogs.msdn.com/bharry/archive/2008/07/08/july-08-tfs-power-tool-preview.aspx">Brian
Harry</a>.
</p>
        <p>
Neue Oberfläche um TFS Alerts zu aboniieren, die auch flexible Filterkriterien erlaubt.
</p>
        <p>
          <a href="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/July08TFSPowerToolPreview_C378/image_18.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="542" alt="image" src="http://blogs.msdn.com/blogfiles/bharry/WindowsLiveWriter/July08TFSPowerToolPreview_C378/image_thumb_8.png" width="804" border="0" />
          </a>
        </p>
        <p>
          <a href="http://blogs.msdn.com/bharry/archive/2008/07/16/july-08-power-tools-are-available.aspx">bharry's
WebLog : July '08 Power Tools are available!</a>
        </p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=00803636-1d16-4df1-8a3d-ef1ad4f4bbab&amp;displaylang=en">Download
July 08 TFS PowerTools</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8e801763-15c1-48d3-ab2f-d99f705913ae" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Treffen der .net Developer-Group Ulm - Windows Presentation Foundation</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,a89690e3-b826-416a-984c-bfa6573c53b1.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,a89690e3-b826-416a-984c-bfa6573c53b1.aspx</id>
    <published>2008-07-14T08:51:13.4404459+02:00</published>
    <updated>2008-07-14T08:51:13.4404459+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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:
</p>
        <blockquote>
          <p>
            <span style="font-size: 9pt; color: #000000; font-family: verdana">
              <b>Windows Presentation
Foundation</b> ... nach 20 Jahren hat Microsoft uns Entwicklern nun eine neue Alternative
gegeben, mit Hilfe derer wir <b>flexible User Interfaces</b> 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?<br />
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: 
<ul><li>
Aufbau von WPF 
</li><li>
Einfache WPF-Codebeispiele 
</li><li>
Tipps &amp; Tricks / best practices 
</li><li>
Wann soll man WPF verwenden und wann nicht? 
</li></ul><p>
Noch dazu hat man bei dieser Gelegenheit auch <b>Silverlight</b> 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. 
</p></span>
          </p>
        </blockquote>
        <p>
Weitere Informationen unter <a href="http://www.dotnet-ulm.de">www.dotnet-ulm.de</a></p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Tre.netDeveloperGroupUlmWindowsPresentat_7C80/Kopfleiste800pix_2.gif">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="110" alt="Kopfleiste800pix" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Tre.netDeveloperGroupUlmWindowsPresentat_7C80/Kopfleiste800pix_thumb.gif" width="800" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=a89690e3-b826-416a-984c-bfa6573c53b1" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Neue Samples f&amp;uuml;r TFS SDK</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,18e8b886-6aa8-4424-9d34-8b2825e7aa29.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,18e8b886-6aa8-4424-9d34-8b2825e7aa29.aspx</id>
    <published>2008-07-14T08:14:25.8794426+02:00</published>
    <updated>2008-07-14T08:14:25.8794426+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ü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. 
</p>
        <p>
          <a href="http://blogs.msdn.com/bharry/archive/2008/07/09/working-on-tfs-sdk-improvements.aspx">bharry's
WebLog : Working on TFS SDK improvements</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=18e8b886-6aa8-4424-9d34-8b2825e7aa29" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Massenbearbeitung von Workitems</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,472d45d2-f61f-4dce-a2de-ffb41ab7f351.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,472d45d2-f61f-4dce-a2de-ffb41ab7f351.aspx</id>
    <published>2008-07-12T23:15:33.8534716+02:00</published>
    <updated>2008-07-12T23:15:33.8534716+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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 <a href="http://msdn.microsoft.com/en-us/vsts2008/cc563930.aspx" target="_blank">Video</a></p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/vsts2008/cc563930.aspx">http://msdn.microsoft.com/en-us/vsts2008/cc563930.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=472d45d2-f61f-4dce-a2de-ffb41ab7f351" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Ein Bild sagt mehr als 1000 Worte - Screenshots an Workitems anh&amp;auml;ngen</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e3c0d42f-dc8f-4209-8a43-97d300ecacf5.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e3c0d42f-dc8f-4209-8a43-97d300ecacf5.aspx</id>
    <published>2008-07-10T20:33:24.3859653+02:00</published>
    <updated>2008-07-10T20:33:24.3859653+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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!
</p>
        <p>
Glücklich derjenige, der den <a href="http://www.artiso.com/?Page=90" target="_blank">artiso
Workitem Manger</a> nutzt. Da geht das Ganze viel einfacher.
</p>
        <p>
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.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/EinBildsagtmehrals1000WorteScreenshotsan_11DBA/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/EinBildsagtmehrals1000WorteScreenshotsan_11DBA/image_thumb.png" width="518" height="171" />
          </a>
        </p>
        <p>
2.) Geünschten Bildbereich auswählen und Screenshot aufnehmen (Klick auf den Button
im Zentrum des Fensters oder Enter drücken)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/EinBildsagtmehrals1000WorteScreenshotsan_11DBA/image_8.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/EinBildsagtmehrals1000WorteScreenshotsan_11DBA/image_thumb_3.png" width="464" height="340" />
          </a>
        </p>
        <p>
3.) Schon ist das Workitem inkl. Attachment angelegt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/EinBildsagtmehrals1000WorteScreenshotsan_11DBA/image_10.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/EinBildsagtmehrals1000WorteScreenshotsan_11DBA/image_thumb_4.png" width="454" height="643" />
          </a>
        </p>
        <p>
Wer das Ganze mal testen möchte, kann sich <a href="http://www.artiso.com/?Page=95" target="_blank">hier</a> eine
Demo-Version des Workitem Managers herunterladen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e3c0d42f-dc8f-4209-8a43-97d300ecacf5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>TeamCompanion for Excel - Workitems in Excel bearbeiten</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx</id>
    <published>2008-07-01T07:57:09.7146963+02:00</published>
    <updated>2008-07-01T07:57:36.3240713+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <category term="Tools" label="Tools" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Tools.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <p>
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.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamCompanionforExcelWorkitemsinExcelbea_6EBB/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="313" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamCompanionforExcelWorkitemsinExcelbea_6EBB/image_thumb.png" width="498" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.ekobit.com/ProductsDetailView.aspx?id=17" target="_blank">TeamCompanion
for Excel</a>
        </p>
        <p>
          <a href="http://www.ekobit.com/ProductsDetailView.aspx?id=39" target="_blank">TeamCompanion
for Project</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e2ae8361-4cb3-41b9-83ab-86a394395c5e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Artikel zu hierarchischen Workitems auf MSDN</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,085a0ad2-5971-4805-876c-934ca876bf4d.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,085a0ad2-5971-4805-876c-934ca876bf4d.aspx</id>
    <published>2008-06-26T00:30:07.4582263+02:00</published>
    <updated>2008-06-26T00:30:07.4582263+02:00</updated>
    <category term="Eigene Tutorials" label="Eigene Tutorials" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Eigene%2BTutorials.aspx" />
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <p>
          <a href="http://download.microsoft.com/download/4/7/a/47aca5b1-ad88-4248-949b-d0333d238516/DM_0608_Schissler_Binder.pdf">http://download.microsoft.com/download/4/7/a/47aca5b1-ad88-4248-949b-d0333d238516/DM_0608_Schissler_Binder.pdf</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=085a0ad2-5971-4805-876c-934ca876bf4d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Baseless merge - oder wie merge ich zwei unabh&amp;auml;ngige Branches</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,5c5635d3-0b7b-45df-903a-839c38440cb3.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,5c5635d3-0b7b-45df-903a-839c38440cb3.aspx</id>
    <published>2008-06-23T17:34:57.7394718+02:00</published>
    <updated>2008-06-23T17:34:57.7394718+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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 <a href="http://www.codeplex.com/TFSGuide/Wiki/View.aspx?title=Home">TFS-Guide</a> in
einem <a href="http://www.codeplex.com/TFSGuide/Wiki/View.aspx?title=How%20To%20-%20Perform%20a%20Baseless%20Merge%20in%20Visual%20Studio%20Team%20Foundation%20Server">HowTo</a>.
</p>
        <p>
          <a href="http://www.codeplex.com/TFSGuide/Wiki/View.aspx?title=How%20To%20-%20Perform%20a%20Baseless%20Merge%20in%20Visual%20Studio%20Team%20Foundation%20Server">patterns
&amp; practices: Team Development with Visual Studio Team Foundation Server - Home</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5c5635d3-0b7b-45df-903a-839c38440cb3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Download details: Team Foundation Installation Guide</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,62e79caf-abc8-49df-9d1a-4b1c690512c9.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,62e79caf-abc8-49df-9d1a-4b1c690512c9.aspx</id>
    <published>2008-06-23T14:13:22.7714395+02:00</published>
    <updated>2008-06-23T14:13:22.7714395+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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. 
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FF12844F-398C-4FE9-8B0D-9E84181D9923&amp;displaylang=en">Download
details: Team Foundation Installation Guide</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=62e79caf-abc8-49df-9d1a-4b1c690512c9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Source Analysis For C# Checkin Policy</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,1bc8b502-5991-496f-a306-40d7ff8b5326.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,1bc8b502-5991-496f-a306-40d7ff8b5326.aspx</id>
    <published>2008-06-22T22:22:26.1154778+02:00</published>
    <updated>2008-06-22T22:22:26.1154778+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für die <a href="http://code.msdn.microsoft.com/sourceanalysis" target="_blank">Sorce
Analysis</a>, eine statische Codeanalyse gibt es jetzt von <a href="http://teamfoundation.blogspot.com/" target="_blank">Eugene
Zakhareyev</a> eine Checkin Policy mit der beim Einchecken in die Teamfoundation Server
Source control die Erfüllung der definierten Richtlinien abgeprüft werden kann.
</p>
        <p>
Danke an Mark für den Tipp.
</p>
        <p>
          <a href="http://teamfoundation.blogspot.com/2008/05/source-analysis-for-c-checkin-policy.html">Team
Foundation Server observations bucket: Source Analysis For C# Checkin Policy</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1bc8b502-5991-496f-a306-40d7ff8b5326" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Ung&amp;uuml;nstige Performance bei Contains in LINQtoSQL</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,4b4fdca2-8193-4050-bb7c-af3d9ff7f338.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,4b4fdca2-8193-4050-bb7c-af3d9ff7f338.aspx</id>
    <published>2008-06-18T17:47:17.0851187+02:00</published>
    <updated>2008-06-18T17:47:17.0851187+02:00</updated>
    <category term="LINQ" label="LINQ" scheme="http://www.artiso.com/ProBlog/CategoryView,category,LINQ.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <p>
Merke: Über Contains keine große Anzahl von Parametern übergeben, statt dessen lieber
die Abfrage selber mit einem IN aufbauen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4b4fdca2-8193-4050-bb7c-af3d9ff7f338" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Web Test Recorder Toolbar wird unter Vista 64 nicht angezeigt</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,7f1039b2-433a-431c-8579-d532eb9294b6.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,7f1039b2-433a-431c-8579-d532eb9294b6.aspx</id>
    <published>2008-06-09T21:57:40.3470423+02:00</published>
    <updated>2008-06-09T21:57:40.3470423+02:00</updated>
    <category term="Qualit&amp;#228;tsmanagement" label="Qualit&amp;#228;tsmanagement" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Qualit%c3%a4tsmanagement.aspx" />
    <category term="VS 2008" label="VS 2008" scheme="http://www.artiso.com/ProBlog/CategoryView,category,VS%2B2008.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Zum Aufzeichnen von WebTests mit VSTS wird ein Web Test Recorder Toolbar im IE integriert.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WebTestRecorderToolbarwirdunterVista64ni_133D0/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="313" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WebTestRecorderToolbarwirdunterVista64ni_133D0/image_thumb.png" width="483" border="0" />
          </a>  
</p>
        <p>
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:
</p>
        <blockquote>
          <p>
            <b>VSTS 2008 : Vista (64 bit) : Recorder bar does not appear when recording a new
webtest</b>
          </p>
          <p>
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: 
</p>
          <p>
            <em>HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component
Categories\{00021493-0000-0000-C000-000000000046}<br />
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\Component
Categories\{00021494-0000-0000-C000-000000000046}</em>
          </p>
          <p>
[Note: by default, the 32 bit registry editor is located in %WINDIR%\SysWow64\RegEdt32.exe] 
</p>
          <p>
The next time you boot Internet Explorer, your explorer bar cache will be rebuilt
and the recorder bar should be available.
</p>
        </blockquote>
        <p>
Nachdem ich diese beiden Registry-Keys gelöscht habe, wurde der Toolbar angezeigt.
</p>
        <p>
Weitere Infos und tipps bei Probleme mit dem Web Recoder Toolbar finden sich unter <a href="http://blogs.msdn.com/mtaute/archive/2007/11/09/diagnosing-and-fixing-web-test-recorder-bar-issues.aspx">Michael
Taute's Blog : Diagnosing and fixing Web Test recorder bar issues.</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7f1039b2-433a-431c-8579-d532eb9294b6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Dokumente zum ALM mit VSTS</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,05b5c630-dac7-44aa-855c-433a5fdba48a.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,05b5c630-dac7-44aa-855c-433a5fdba48a.aspx</id>
    <published>2008-05-29T23:54:23.986116+02:00</published>
    <updated>2008-05-29T23:54:23.986116+02:00</updated>
    <category term="Team System Server" label="Team System Server" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Team%2BSystem%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Es gibt eine ganz Reihe von Whitepapers, die verschiedene Practices aus dem Bereich
ALM und deren Umsetzung mit VSTS beschreiben.
</p>
        <ul>
          <li>
Communicate and Collaborate 
</li>
          <li>
Drive Predictability 
</li>
          <li>
Ensure Quality Early and Often 
</li>
          <li>
Integrate Work Frequently 
</li>
          <li>
Making Real-Time Decisions 
</li>
          <li>
Managing Team Workflow 
</li>
          <li>
Using Familiar Tools 
</li>
        </ul>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3605f904-7266-4426-8b92-44105aff9762&amp;displaylang=en#filelist">Visual
Studio Team System 2008 Capabilities White Papers</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=05b5c630-dac7-44aa-855c-433a5fdba48a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Vortrag UG Ulm - Ausblick auf Rosario</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,8cca807a-d61c-43de-9654-5634bf0c2b8c.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,8cca807a-d61c-43de-9654-5634bf0c2b8c.aspx</id>
    <published>2008-05-28T23:51:39.1639494+02:00</published>
    <updated>2008-05-28T23:51:39.1639494+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Heute hatten wir bei der UG Ulm <a href="http://blogs.msdn.com/cbinder" target="_blank">Christian
Binder</a> 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:
</p>
        <ul>
          <li>
Lightweight Projektmanagement und Kapazitätsplanung</li>
          <li>
Neue Verknüpfungen und hierarchische Workitems</li>
          <li>
Build definition über Workflow Foundation</li>
          <li>
Planung und Verwaltung von manuellen Tests</li>
          <li>
Aufzeichnung eines Web UI-Tests und Umwandlung in einen coded Test</li>
          <li>
Historical Debugging</li>
          <li>
Sequential Diagramms</li>
          <li>
und vieles mehr</li>
        </ul>
        <p>
Danke an Chris für den tollen Vortrag.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VortragUGUlmAusblickaufRosario_149DE/P1010173.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="284" alt="P1010173" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VortragUGUlmAusblickaufRosario_149DE/P1010173_thumb.jpg" width="377" border="0" />
          </a> <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VortragUGUlmAusblickaufRosario_149DE/P1010168.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="282" alt="P1010168" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VortragUGUlmAusblickaufRosario_149DE/P1010168_thumb.jpg" width="375" border="0" /></a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8cca807a-d61c-43de-9654-5634bf0c2b8c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Vortrag zu Rosario bei der .net Developergroup Ulm</title>
    <link rel="alternate" type="text/html" href="http://www.artiso.com/ProBlog/PermaLink,guid,98ccf0f1-6a2b-433a-ace7-886f16109c12.aspx" />
    <id>http://www.artiso.com/ProBlog/PermaLink,guid,98ccf0f1-6a2b-433a-ace7-886f16109c12.aspx</id>
    <published>2008-05-19T22:41:25.427036+02:00</published>
    <updated>2008-05-19T22:41:25.427036+02:00</updated>
    <category term="Vortr&amp;#228;ge" label="Vortr&amp;#228;ge" scheme="http://www.artiso.com/ProBlog/CategoryView,category,Vortr%c3%a4ge.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Am 28.05.2008 findet um 18:00 Uhr das nächste Treffen der <a href="http://www.dotnet-ulm.de" target="_blank">.net
DeveloperGroup Ulm</a> statt. Diesesmal haben wir <a href="http://blogs.msdn.com/cbinder" target="_blank">Christian
Binder</a>, 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. 
</p>
        <p>
Nähere Informationen gibt es unter <a href="http://www.dotnet-ulm.de/Treffen.aspx">http://www.dotnet-ulm.de/Treffen.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=98ccf0f1-6a2b-433a-ace7-886f16109c12" />
      </div>
    </content>
  </entry>
</feed>