<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>artiso Blog</title>
    <link>http://www.artiso.com/ProBlog/</link>
    <description>Neues rund um's Thema .Net</description>
    <language>de-de</language>
    <copyright>Thomas</copyright>
    <lastBuildDate>Mon, 08 Mar 2010 07:07:21 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>tschissler@artiso.com</managingEditor>
    <webMaster>tschissler@artiso.com</webMaster>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=63edec55-85f0-4768-9ccb-ec78bf0e6340</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=63edec55-85f0-4768-9ccb-ec78bf0e6340</wfw:commentRss>
      <body 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" />
      </body>
      <title>Fehler &amp;ldquo;Failed to activate feature&amp;rdquo; beim Einrichten eines Portals in TFS 2010</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</link>
      <pubDate>Mon, 08 Mar 2010 07:07:21 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier wählt man dann unter “Configure URL” eine der konfigurierten Web Applications
aus.
&lt;/p&gt;
&lt;p&gt;
Bekommt mann beim Bestätigen des Fensters folgen Meldung, dann hat der aktuelle Benutzer
nicht ausreichen Berechtigungen auf die Site / SiteCollection:
&lt;/p&gt;
&lt;p&gt;
Server was unable to process request. ---&amp;gt; Failed to activate feature 'TeamFoundationWeb'
(ID: 310284e3-35d9-4b5d-99b5-c42147379877) at scope 'http://sarmoss02/sites/TFS2008/BI_KaBIS'.
&lt;/p&gt;
&lt;p&gt;
Diese Berechtigungen müssen im SharePoint eingetragen werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=63edec55-85f0-4768-9ccb-ec78bf0e6340" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</comments>
      <category>Team System Server;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4</wfw:commentRss>
      <body 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" />
      </body>
      <title>Team Foundation Server Power Tools 2010 RC</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</link>
      <pubDate>Tue, 02 Mar 2010 16:34:34 GMT</pubDate>
      <description>&lt;p&gt;
Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools
die viele nützliche Funktionen hinzufügen.
&lt;/p&gt;
&lt;p&gt;
Kostenloaser Download: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</comments>
      <category>Team System Server;Tools;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=c85928fc-65e5-4313-a969-04f466de7bce</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c85928fc-65e5-4313-a969-04f466de7bce</wfw:commentRss>
      <body 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" />
      </body>
      <title>URL encodierung in WinForms-Anwendung</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</link>
      <pubDate>Tue, 16 Feb 2010 18:19:29 GMT</pubDate>
      <description>&lt;p&gt;
Will man in einer Winforms-Anwendung einen String URL-encodieren, dann kann mann dafür
einen einfachen Aufruf verwenden:
&lt;/p&gt;
&lt;font color="#2b91af" size="2" face="Consolas"&gt;&lt;font color="#2b91af" size="2" face="Consolas"&gt; 
&lt;p&gt;
HttpUtility.UrlEncode(&lt;font color="#a31515" size="2" face="Consolas"&gt;"http://www.artiso.com/page?ID=99"&lt;/font&gt;);
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c85928fc-65e5-4313-a969-04f466de7bce" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7e811c18-808d-4102-a2a0-6e371bf18d79</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7e811c18-808d-4102-a2a0-6e371bf18d79</wfw:commentRss>
      <body 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" />
      </body>
      <title>Probleme beim Einrichten der e-Mail Benachrichtigung im SharePoint</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</link>
      <pubDate>Mon, 08 Feb 2010 21:47:10 GMT</pubDate>
      <description>&lt;p&gt;
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…
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
… , Einstellungen vornehmen und schon kommt eine Fehlermeldung:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;span id="ctl00_PlaceHolderMain_LabelMessage"&gt;The following users do not have e-mail
addresses specified: &amp;lt;UserName&amp;gt;. Alerts have been created successfully but these
users will not receive e-mail notifications until valid e-mail addresses have been
provided&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Unter “User Profiles and My Sites” kann nun die Option “User profiles and properties”
gewählt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ü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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_10.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7e811c18-808d-4102-a2a0-6e371bf18d79" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</comments>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=53657580-c799-4371-aca1-b47169364af5</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,53657580-c799-4371-aca1-b47169364af5.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=53657580-c799-4371-aca1-b47169364af5</wfw:commentRss>
      <body 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" />
      </body>
      <title>Hierarchische Work Item Queries im TFS 2010 SharePoint Portal automatisch einklappen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</link>
      <pubDate>Thu, 04 Feb 2010 14:41:07 GMT</pubDate>
      <description>&lt;p&gt;
Mit TFS 2010 kommen nun endlich hierarchische Workitem Queries und erfreulicherweise
lassen diese sich auch im SharePoint Portal schön darstellen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;p&gt;
1.) Ein neues Content Web Part auf der Seite einfügen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2.) Auf dem Content Editor Web Part den Source Editor starten
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_12.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3.) Hier folgendes Script eintragen:
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;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"&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; &amp;lt;script
language=&lt;span style="color: #006080"&gt;"javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; collapseQuery() &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; { &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; _ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00.tryToggle(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum6"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum7"&gt; 7:&lt;/span&gt; WPSC.RegisterForEvent(&lt;span style="color: #006080"&gt;"urn:schemas-microsoft-com:dhtml"&lt;/span&gt;,&lt;span style="color: #006080"&gt;"onload"&lt;/span&gt;,collapseQuery);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;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"&gt;&lt;span style="color: #606060" id="lnum8"&gt; 8:&lt;/span&gt; &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_14.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_16.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=53657580-c799-4371-aca1-b47169364af5" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,53657580-c799-4371-aca1-b47169364af5.aspx</comments>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8ad86d18-0e69-4935-98fe-652a05df7ed4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8ad86d18-0e69-4935-98fe-652a05df7ed4</wfw:commentRss>
      <body 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" />
      </body>
      <title>Reporting Services &amp;uuml;ber einen NLB-Cluster betreiben</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</link>
      <pubDate>Sat, 07 Nov 2009 10:42:05 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;p&gt;
1.) Das Scale-out Deployment für die Reporting-Services auf beiden Servern aktivieren
(setzt SSRS Enterprise voraus)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2.) Die Web Service URL auf die IP-Adresse des NLB einstellen
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
4.) In der Datei C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\rsreportserver.config unter &amp;lt;Service&amp;gt; folgendes Tag einfügen:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Hostname&amp;gt;sartfsnlb01&amp;lt;/Hostname&amp;gt;
&lt;/p&gt;
&lt;p&gt;
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 &amp;lt;system.web&amp;gt; folgenden Tag einfügen:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;machineKey validationKey="627BF72BB33AA8D28CA2C3E80920BA4DF0B726F97EEFBB0F4818350D63E6AFA380811F13ED1F086E386284654DB3DAF676707464EEB73EBF79858F477D8E4F5C"&lt;br&gt;
decryptionKey="F40B6E5A02B29A181D2D213B5ED8F50B73CFCFD0CC56E137" validation="SHA1"
/&amp;gt;
&lt;/p&gt;
&lt;p&gt;
Achtung die Parameterwerte dürfen nuicht umgebrochen werden. Einen eigenen Key kann
man sich einfach unter &lt;a href="http://aspnetresources.com/tools/keycreator.aspx"&gt;http://aspnetresources.com/tools/keycreator.aspx&lt;/a&gt; generieren
lassen.
&lt;/p&gt;
&lt;p&gt;
6.) Reporting Srevices neu starten.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8ad86d18-0e69-4935-98fe-652a05df7ed4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</comments>
      <category>Team System Server;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f7a0b11f-c175-455b-b5a1-92c7431d632b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f7a0b11f-c175-455b-b5a1-92c7431d632b</wfw:commentRss>
      <body 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" />
      </body>
      <title>TechEd in Berlin</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</link>
      <pubDate>Sat, 07 Nov 2009 07:15:43 GMT</pubDate>
      <description>&lt;p&gt;
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;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;amp;A-Session. Soviel
geballtes Wissen auf einmal gibts nicht so bald wieder :-)
&lt;/p&gt;
&lt;p&gt;
Visual Studio Team Foundation Server Q&amp;amp;A&lt;br&gt;
Mittwoch, 11. November&lt;br&gt;
14:00 – 15:00 Uhr&lt;br&gt;
Community Stage im Zentrum der Ausstellung Halle 4.2
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/TechEd2009BerlinVisualStudioTeamFoundati_A9AC/clip_image002_2.gif" width="312" height="193"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f7a0b11f-c175-455b-b5a1-92c7431d632b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</comments>
      <category>Vorträge;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=00c085bb-b95a-4ef0-895a-3aa0570c4eba</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=00c085bb-b95a-4ef0-895a-3aa0570c4eba</wfw:commentRss>
      <body 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" />
      </body>
      <title>Hyper-V Snapshots</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</link>
      <pubDate>Mon, 02 Nov 2009 20:12:19 GMT</pubDate>
      <description>&lt;p&gt;
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:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Funktionsweise von Snapshots&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Dies hat nun zweierlei Folgen:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Erst nach Abschluss des Merge-Vorgangs erhält man durch eine Kopie der VHD eine komplette
Sicherung der virtuellen Disk der VM. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=00c085bb-b95a-4ef0-895a-3aa0570c4eba" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6ea65198-bafd-4e34-9040-4a639af3c134</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6ea65198-bafd-4e34-9040-4a639af3c134</wfw:commentRss>
      <body 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" />
      </body>
      <title>Zweiter Termin f&amp;uuml;r VSTS 2010 Info-Day bei der .net Developer Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</link>
      <pubDate>Fri, 23 Oct 2009 13:59:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Die &lt;a href="http://www.dotnet-ulm.de/"&gt;.net Developer Group Ulm&lt;/a&gt; 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 &lt;a href="http://www.dotnet-ulm.de/vsts2010/"&gt;http://www.dotnet-ulm.de/vsts2010/&lt;/a&gt; registrieren,
wir haben noch ein paar Plätze frei.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6ea65198-bafd-4e34-9040-4a639af3c134" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</comments>
      <category>Usergroup;Vorträge;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=ace09a2b-9ce8-480a-bb2a-d7443f9e811d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=ace09a2b-9ce8-480a-bb2a-d7443f9e811d</wfw:commentRss>
      <body 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" />
      </body>
      <title>TFS Basic auf dem Client betreiben</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</link>
      <pubDate>Tue, 20 Oct 2009 06:41:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cbinder"&gt;Christian&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
&lt;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"&gt;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&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ace09a2b-9ce8-480a-bb2a-d7443f9e811d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</comments>
      <category>Team System Server;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f6a6d664-e1db-4a09-aac2-23183eb42cfe</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f6a6d664-e1db-4a09-aac2-23183eb42cfe</wfw:commentRss>
      <body 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" />
      </body>
      <title>Visual Studio 2010 Beta 2 verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</link>
      <pubDate>Mon, 19 Oct 2009 17:00:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span style="line-height: 115%; font-family: 'Arial','sans-serif'; font-size: 10pt"&gt;&lt;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"&gt;&lt;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"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Es gibt eine abgespeckte Version von TFS (TFS Basic) die auch auf Client-Betriebssystemen
installiert werden kann. 
&lt;li&gt;
TFS ist jetzt in alle versionen von Visual Studio 2010 enthalten (meines Wissen nach
nur bei denen mit MSDN) 
&lt;li&gt;
Es gibt ein vereinfachtes Modell der Produkt SKUs (Editionen) 
&lt;li&gt;
Neues Logo (siehe oben)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Was ich persönlich schade finde: Die Bezeichnung “Team System” verschwindet, es gibt
nun nur noch 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Microsoft® Visual Studio® 2010 Express 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Professional 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Professional with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Premium with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Ultimate with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® Test Elements 2010 with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® Team Foundation Server 2010 
&lt;li&gt;
Microsoft® Visual Studio® Team Lab Management 2010 
&lt;li&gt;
Microsoft® Visual Studio® Load Test Virtual User Pack 2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f6a6d664-e1db-4a09-aac2-23183eb42cfe" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=9144595b-c0e1-49bd-b682-21f35897ab0b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9144595b-c0e1-49bd-b682-21f35897ab0b</wfw:commentRss>
      <body 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" />
      </body>
      <title>Beispieldaten f&amp;uuml;r Databinding in Expression Blend erzeugen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</link>
      <pubDate>Thu, 15 Oct 2009 21:55:32 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Und auch bei der Ausführung der Anwendung stehen die Daten zur Verfügung. Damit können
schnell und einfach Oberflächenprototypen erstellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Eine detaillierte Beschreibung der Funktion findet sich &lt;a href="http://silverzine.com/tutorials/how-to-create-sample-data-in-blend-3/"&gt;hier&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9144595b-c0e1-49bd-b682-21f35897ab0b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</comments>
      <category>WPF / Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4c1d1396-b991-40d3-b250-545d929663af</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4c1d1396-b991-40d3-b250-545d929663af</wfw:commentRss>
      <body 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" />
      </body>
      <title>Advanced Developer Conference in Bonn</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</link>
      <pubDate>Wed, 14 Oct 2009 22:07:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Auf der diesjährigen ADC hatte ich zwei Vorträge:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://tvt8uq.blu.livefilestore.com/y1pVrYyT8NiRVqhgojr46B0pZM1oHVGL1kknHtwY86fNx3BOqF3AJHj7rXclzg0wA0R_bWDsRAsbyWhtQq_bWbvrw/ADC09%20-%20Effektive%20Prozesse%20durch%20Architektur.pptx?download"&gt;Effektive
Prozesse durch Architektur&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://tvt8uq.blu.livefilestore.com/y1pY_unGSIlxvqIIhWcJ4MXWY0_xffVmG1_Obw6PbQAHNUKo0fYLzq-M5_bAoNpiSEMEPpWQGMBR7JB5uSoRMUcoQ/Team%20Organisation3.mmap?download"&gt;Organisation
von Entwicklerteams&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Zu beiden Vorträgen gibt es die Unterlagen über den jeweiligen obenstehenden Link.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4c1d1396-b991-40d3-b250-545d929663af" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0925f337-10ae-4d31-ac59-64731aa0ff97</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0925f337-10ae-4d31-ac59-64731aa0ff97</wfw:commentRss>
      <body 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" />
      </body>
      <title>Alias f&amp;uuml;r gleichnamige Spalten bei MDX-Abfragen in Reporting Services</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</link>
      <pubDate>Tue, 13 Oct 2009 00:38:48 GMT</pubDate>
      <description>&lt;p&gt;
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.” 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0925f337-10ae-4d31-ac59-64731aa0ff97" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=491eeae7-9f86-429d-9030-5ccda523ef86</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=491eeae7-9f86-429d-9030-5ccda523ef86</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body 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" />
      </body>
      <title>Daten als Balken in Reporting Services Konfigurieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</link>
      <pubDate>Tue, 13 Oct 2009 00:26:45 GMT</pubDate>
      <description>&lt;p&gt;
Oft möchte man Werte, z.B. Prozentwerte als kleine Balken in einem Report darstellen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Wie man das mit Hilfe der Reporting Services bewerkstelligt, ist im Folgenden kurz
beschrieben. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Zunächst erstellt man sich eine Grafik mit dem gewünschten Verlauf&lt;/li&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;li&gt;
Für die Grafik stellt man nun ein Padding für den rechten Rand ein und zwar über eine
Expression:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx"&gt;http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=491eeae7-9f86-429d-9030-5ccda523ef86" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e8b7ec65-7928-4aa0-8c85-67ecb405c54e</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e8b7ec65-7928-4aa0-8c85-67ecb405c54e</wfw:commentRss>
      <body 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" />
      </body>
      <title>Datenbanktabelle Suspect</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</link>
      <pubDate>Mon, 12 Oct 2009 06:31:01 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color: #ff0000"&gt;&lt;em&gt;&lt;font color="#0000a0"&gt;EXEC sp_resetstatus 'DBname'&lt;br&gt;
&lt;br&gt;
ALTER DATABASE DBname SET EMERGENCY&lt;br&gt;
&lt;br&gt;
DBCC checkdb('DBname')&lt;br&gt;
&lt;br&gt;
ALTER DATABASE DBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE&lt;br&gt;
&lt;br&gt;
DBCC CheckDB ('DBname', REPAIR_ALLOW_DATA_LOSS)&lt;br&gt;
&lt;br&gt;
ALTER DATABASE DBname SET MULTI_USER&lt;/font&gt;&lt;/em&gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
Dort habe ich einfach meinen Datenbanknamen entsprechend eingesetzt und schon lief
der SharePoint wieder. Vielen Dank an der Stelle an Mohamad.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html"&gt;http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e8b7ec65-7928-4aa0-8c85-67ecb405c54e" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b</wfw:commentRss>
      <body 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" />
      </body>
      <title>TFS f&amp;uuml;r kleine Teams</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</link>
      <pubDate>Fri, 09 Oct 2009 22:45:53 GMT</pubDate>
      <description>&lt;p&gt;
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:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preis&lt;/strong&gt;
&lt;br&gt;
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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Systemanforderungen&lt;/strong&gt;
&lt;br&gt;
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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installation&lt;/strong&gt;
&lt;br&gt;
Der Installationsvorgang wurde deutlich vereinfacht.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Damit kommt Microsoft dem Slogen “ALM for the masses” einen großen Schritt näher.
&lt;/p&gt;
&lt;p&gt;
Weitere Details gibt es auf dem Blog von Brian Harry:&lt;br&gt;
&lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx"&gt;http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</comments>
      <category>Team System Server;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e71ec982-e864-4dcb-ab28-b1a6c007ee9a</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e71ec982-e864-4dcb-ab28-b1a6c007ee9a</wfw:commentRss>
      <body 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" />
      </body>
      <title>Leere Toolbox f&amp;uuml;r TFS Process Template Editor</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</link>
      <pubDate>Tue, 29 Sep 2009 15:12:01 GMT</pubDate>
      <description>&lt;p&gt;
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 &lt;a href="http://msdn.microsoft.com/de-de/tfs2008/bb980963.aspx"&gt;TFS
Power Tools&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
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 
&lt;/p&gt;
&lt;p&gt;
C:\Users\&amp;lt;USERNAME&amp;gt;\AppData\Local\Microsoft\VisualStudio\8.0.
&lt;/p&gt;
&lt;p&gt;
Danach erscheinen die Elemente ganz normal.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e71ec982-e864-4dcb-ab28-b1a6c007ee9a" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=1a712560-d999-4ed2-bddf-e8a203867d35</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1a712560-d999-4ed2-bddf-e8a203867d35</wfw:commentRss>
      <body 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>
      </body>
      <title>Neue .NET Usergroup in Augsburg</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</link>
      <pubDate>Fri, 18 Sep 2009 17:22:53 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Wir haben einen neuen Nachbarn bekommen :-) 
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Dann auf gute Nachbarschaft :-)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.ug-augsburg.net/" target="_blank"&gt;http://www.ug-augsburg.net/&lt;/a&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1a712560-d999-4ed2-bddf-e8a203867d35" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=60432774-4bef-49f4-80c0-6b358b74d6ef</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=60432774-4bef-49f4-80c0-6b358b74d6ef</wfw:commentRss>
      <body 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" />
      </body>
      <title>Build Automation in TFS 2010 &amp;ndash; Vortrag bei TSUG-VE</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</link>
      <pubDate>Wed, 16 Sep 2009 07:55:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Über TSUG-VE&lt;br&gt;
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 &lt;a href="http://www.tsug-ve.com"&gt;http://www.tsug-ve.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60432774-4bef-49f4-80c0-6b358b74d6ef" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=62057eac-7921-4660-9638-3140ab701ea2</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=62057eac-7921-4660-9638-3140ab701ea2</wfw:commentRss>
      <body 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" />
      </body>
      <title>Kostenloser Info-Tag zu Visual Studio Team System 2010 bei .net Developer-Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</link>
      <pubDate>Wed, 16 Sep 2009 07:13:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
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.: 
&lt;ul&gt;
&lt;li&gt;
Architektur-Diagramme und UML-Support 
&lt;li&gt;
Erweiterte Funktionen für Test-Planung und Test-Durchführung 
&lt;li&gt;
Unterstützung von UI-Tests 
&lt;li&gt;
Verbesserte Verwaltung von Builds 
&lt;li&gt;
Verbesserte Verwaltung von Work Items 
&lt;li&gt;
Neue Reporting-Funktionen speziell für kleinere Teams 
&lt;li&gt;
Und vieles mehr&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
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 (&lt;a href="http://blogs.msdn.com/cbinder"&gt;http://blogs.msdn.com/cbinder&lt;/a&gt;)
und Thomas Schissler (&lt;a href="http://www.artiso.com/problog"&gt;http://www.artiso.com/problog&lt;/a&gt;)
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. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Für die Veranstaltung ist eine Registrierung erforderlich. Interessenten können sich
unter &lt;a href="http://www.dotnet-ulm.de/vsts2010"&gt;http://www.dotnet-ulm.de/vsts2010&lt;/a&gt; kostenlos
registrieren.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=62057eac-7921-4660-9638-3140ab701ea2" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=65a4bd4a-1ae4-47cc-88a3-bad499634762</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=65a4bd4a-1ae4-47cc-88a3-bad499634762</wfw:commentRss>
      <body 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" />
      </body>
      <title>Problem beim Installieren eines TFS 2010 Beta 1 mit einem separaten SharePoint Server</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</link>
      <pubDate>Tue, 14 Jul 2009 20:18:47 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=65a4bd4a-1ae4-47cc-88a3-bad499634762" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</comments>
      <category>Team System Server;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=17f081a9-c7fe-4c59-946e-ad63eacae539</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=17f081a9-c7fe-4c59-946e-ad63eacae539</wfw:commentRss>
      <body 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" />
      </body>
      <title>UI-Automation ServerSide Provider &amp;ndash; 3rd Party Controls accessible machen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</link>
      <pubDate>Fri, 03 Jul 2009 12:10:58 GMT</pubDate>
      <description>&lt;p&gt;
Wie in diesem Blog bereits an &lt;a href="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx"&gt;anderen
Stellen&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
Ich habe &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,35d09c0e-d00b-4025-b896-af96007c8a2f.aspx"&gt;hier&lt;/a&gt; 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. 
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;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"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Drawing;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Security.Permissions;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Automation;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Automation.Provider;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WindowsFormsApplication1&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; UIAPanel
: Panel, IRawElementProviderSimple&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UIAPanel()&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.BackColor
= Color.Yellow;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Height
= 0;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Width
= 0;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AutoSize
= &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; [PermissionSetAttribute(SecurityAction.Demand,
Unrestricted = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; WndProc(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; Message
m)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
0x3D == WM_GETOBJECT&lt;/span&gt;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; Int32
param = 0;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Int32.TryParse(m.LParam.ToString(), &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; param))&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((m.Msg
== 0x3D) &amp;amp;&amp;amp; (param == AutomationInteropProvider.RootObjectId))&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; m.Result
= AutomationInteropProvider.ReturnRawElementProvider(&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; Handle,
m.WParam, m.LParam, (IRawElementProviderSimple)&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; m);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; IRawElementProviderSimple
Members&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; GetPatternProvider(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; patternId)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (patternId
== ValuePatternIdentifiers.Pattern.Id)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 42:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 43:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 44:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 45:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 46:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 47:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 48:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 49:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 50:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 51:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; GetPropertyValue(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; propertyId)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 52:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 53:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.ClassNameProperty.Id)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 54:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 55:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"CalendarPanel"&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 56:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 57:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.ControlTypeProperty.Id)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 58:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 59:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ControlType.MenuBar.Id;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 60:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 61:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 62:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.HelpTextProperty.Id)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 63:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 64:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"Help
for CalendarPanel"&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 65:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 66:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 67:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.AutomationIdProperty.Id)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 68:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 69:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Name; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 70:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 71:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 72:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.IsEnabledProperty.Id)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 73:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 74:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 75:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 76:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 77:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 78:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 79:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 80:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 81:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 82:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 83:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; IRawElementProviderSimple
HostRawElementProvider&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 84:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 85:&lt;/span&gt; get&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 86:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 87:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; AutomationInteropProvider.HostProviderFromHandle(Handle);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 88:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 89:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 90:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 91:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ProviderOptions
ProviderOptions&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 92:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 93:&lt;/span&gt; get&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 94:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 95:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ProviderOptions.ServerSideProvider;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 96:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 97:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 98:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 99:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 100:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 101:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 102:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;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"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Automation.Provider;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WindowsFormsApplication1&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; CalendarPanel
: UIAPanel, IValueProvider&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Janus.Windows.Schedule.Calendar
control;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Janus.Windows.Schedule.Calendar
Control&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; get&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (control
== &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls.Count
&amp;gt; 0 &amp;amp;&amp;amp; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls[0].GetType() == &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(Janus.Windows.Schedule.Calendar))&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; control
= (Janus.Windows.Schedule.Calendar)&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls[0];&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; control;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; IValueProvider
Members&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsReadOnly&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; get &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SetValue(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.BeginInvoke((MethodInvoker)&lt;span style="color: #0000ff"&gt;delegate&lt;/span&gt;()&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; DateTime
date = DateTime.Parse(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt; Control.SelectionRange
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Janus.Windows.Schedule.DateRange(date, date);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; });&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 42:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Value&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 43:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 44:&lt;/span&gt; get &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 45:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 46:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Control.SelectionRange.End.ToShortDateString(); &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 47:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 48:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 49:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 50:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 51:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 52:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Der Code dazu sieht dann so aus:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;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"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PlaceControlsIntoPanel(Control.ControlCollection
controls)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; Panel
uiaPanel;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (Control
automationControl &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; controls.OfType&amp;lt;Control&amp;gt;().ToList())&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (automationControl.GetType().ToString())&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;"Janus.Windows.CalendarCombo.CalendarCombo"&lt;/span&gt;:&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; uiaPanel
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CalendarComboPanel();&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;"Janus.Windows.Schedule.Calendar"&lt;/span&gt;:&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; uiaPanel
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CalendarPanel();&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt;:&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (automationControl.HasChildren)&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; {&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; PlaceControlsIntoPanel(automationControl.Controls);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;continue&lt;/span&gt;;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; uiaPanel.Name
= &lt;span style="color: #006080"&gt;"p_"&lt;/span&gt; + automationControl.Name;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; uiaPanel.Top
= automationControl.Top;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; uiaPanel.Left
= automationControl.Left;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; uiaPanel.Controls.Add(automationControl);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; automationControl.Top
= 0;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; automationControl.Left
= 0;&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; controls.Add(uiaPanel);&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; }&lt;/pre&gt;
&lt;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"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Wird die Anwendung dann inkl. Test-Client ausgeführt, sieht das so aus:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/UIAPanelDemo.zip" target="_blank"&gt;Download
Demo-Code&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=17f081a9-c7fe-4c59-946e-ad63eacae539" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</comments>
      <category>UI Automation</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f</wfw:commentRss>
      <body 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" />
      </body>
      <title>Einf&amp;uuml;hrung von VSTS bei Infragistics &amp;ndash; Vortrag bei TSUG-VE</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</link>
      <pubDate>Wed, 03 Jun 2009 22:02:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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 &lt;a href="http://www.infragistics.com"&gt;Infragistics&lt;/a&gt;,
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.
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen unter &lt;a href="http://www.tsug-ve.com"&gt;www.tsug-ve.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</comments>
      <category>Team System Server;Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=1715549c-3e4c-49f1-8e43-052f9c86bf27</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1715549c-3e4c-49f1-8e43-052f9c86bf27</wfw:commentRss>
      <body 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" />
      </body>
      <title>Kostenloses Tool zur Auswertung der Historie von TFS Work Items</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx</link>
      <pubDate>Wed, 03 Jun 2009 14:06:35 GMT</pubDate>
      <description>&lt;p&gt;
Im Team Foundation Server werden Änderungen an den Inhalten der Workitems in einer
Historie festgehalten. Diese Historie kann man auf jedem einzelnen Workitem einsehen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenlosesToolzurAuswertungderHostoriev_E58B/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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):
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.almtools.de/contentImages/screenshots/Period.png"&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.almtools.de/contentImages/screenshots/PivotTableAndChart.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Natürlich lassen sich solche Ergebnisse auch über das DataWarehouse im TFS ermitteln,
jedoch besitzt dieses Tool zwei Vorteile:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Es ist wesentlich einfacher zu bedienen und übersichtlicher, so dass damit auch Ad-Hoc
Reporting für Anwender möglich wird. 
&lt;li&gt;
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.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Weitere Informationen und den kostenlosen Download gibtes unter &lt;a href="http://www.alm-tools.de/?Product=5"&gt;http://www.alm-tools.de/?Product=5&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Ein Video das die Fuinktionsweise des Tools demonstriert kann &lt;a href="http://www.alm-tools.de/VideoPlayer.aspx?tag=http://www.almtools.de/video/WorkitemHistoryTool.wmv"&gt;hier&lt;/a&gt; agezeigt
werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1715549c-3e4c-49f1-8e43-052f9c86bf27" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,1715549c-3e4c-49f1-8e43-052f9c86bf27.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=9bebf3b3-b620-4217-9dc5-95fc17e5ac52</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9bebf3b3-b620-4217-9dc5-95fc17e5ac52</wfw:commentRss>
      <body 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" />
      </body>
      <title>Neue Tools rund um den Team Foundation Server unter www.alm-tools.de</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx</link>
      <pubDate>Tue, 02 Jun 2009 13:45:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeueToolsrundumdenTeamFoundationServe.de_DD40/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Eigentlich versuche ich meinen Blog weitgehend werbefrei zu halten. Diesesmal möchte
ich aber doch kurz auf die Seite &lt;a href="http://www.alm-tools.de"&gt;www.alm-tools.de&lt;/a&gt; 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. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9bebf3b3-b620-4217-9dc5-95fc17e5ac52" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,9bebf3b3-b620-4217-9dc5-95fc17e5ac52.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=888a0ead-fcf6-43a9-9253-af7db4d7340c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=888a0ead-fcf6-43a9-9253-af7db4d7340c</wfw:commentRss>
      <body 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" />
      </body>
      <title>TF14087 Fehler beim Mergen in der TFS Versionsverwaltung</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx</link>
      <pubDate>Tue, 02 Jun 2009 06:39:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF14087FehlerbeimMergeninderTFSVersionsv_135DF/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF14087FehlerbeimMergeninderTFSVersionsv_135DF/Tips_BranchingAndMergingScreencast.wmv" target="_blank"&gt;Download
Video&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=888a0ead-fcf6-43a9-9253-af7db4d7340c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,888a0ead-fcf6-43a9-9253-af7db4d7340c.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=ebb91709-b2e4-45df-b35b-abffba6ee998</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=ebb91709-b2e4-45df-b35b-abffba6ee998</wfw:commentRss>
      <body 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" />
      </body>
      <title>TFS 2010 Beta 1 auf Windows 2008 Server R2 RC</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx</link>
      <pubDate>Sat, 23 May 2009 12:27:30 GMT</pubDate>
      <description>&lt;p&gt;
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 &lt;a href="http://blogs.msdn.com/dstfs/archive/2009/05/15/installing-tfs-2010-on-windows-server-2008-r2-rc.aspx"&gt;Blog-Post&lt;/a&gt; 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 :-) 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TFS2010Beta1aufWindows2008ServerR2RC_CAFC/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ebb91709-b2e4-45df-b35b-abffba6ee998" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,ebb91709-b2e4-45df-b35b-abffba6ee998.aspx</comments>
      <category>Team System Server;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=afcc8eaf-9677-433f-9aff-ec3e45d3119d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=afcc8eaf-9677-433f-9aff-ec3e45d3119d</wfw:commentRss>
      <body 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" />
      </body>
      <title>Mai-Treffen der Team System User Group Virtual Edition</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx</link>
      <pubDate>Wed, 20 May 2009 12:42:09 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
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&amp;nbsp; 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. 
&lt;p&gt;
This month's meeting is being presented by Ian Ceicys.&amp;nbsp; Ian is a member of Microsoft's
Global ALM Practice and an active member of the VSTS Rangers. 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Das Treffen findet am Donnerstag, 21.05.2009 um 19:00 statt.
&lt;/p&gt;
&lt;p&gt;
Weitere Infos unter &lt;a href="http://www.tsug-ve.com"&gt;http://www.tsug-ve.com&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=afcc8eaf-9677-433f-9aff-ec3e45d3119d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,afcc8eaf-9677-433f-9aff-ec3e45d3119d.aspx</comments>
      <category>Team System Server;Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0b5253e6-bc40-46be-b074-1b26f6453d22</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0b5253e6-bc40-46be-b074-1b26f6453d22</wfw:commentRss>
      <body 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" />
      </body>
      <title>MSDN Dokumentation zu Visual Studio 2010 Beta 1 online</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx</link>
      <pubDate>Tue, 19 May 2009 06:15:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MSDNDokumentationzuVisualStudio2010Beta1_73EB/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Unter &lt;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"&gt;http://msdn.microsoft.com/en-us/library/dd831853(VS.100).aspx&lt;/a&gt; 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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0b5253e6-bc40-46be-b074-1b26f6453d22" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0b5253e6-bc40-46be-b074-1b26f6453d22.aspx</comments>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=c241402e-d7da-4e21-8080-a7798c44ab7d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c241402e-d7da-4e21-8080-a7798c44ab7d</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body 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" />
      </body>
      <title>Visual Studio 2010 Beta 1 ab heute verf&amp;uuml;gbar &amp;ndash; jetzt offiziell</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx</link>
      <pubDate>Mon, 18 May 2009 14:50:56 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Diesmal aus einer verlässlichen Quelle (Soma Somasegar, Corporate Vice President Microsofts)
&lt;/p&gt;
&lt;p&gt;
&lt;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"&gt;Visual
Studio 2010 and .NET FX 4 Beta 1 ships!&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Update: Ich habe die Bits inzwischen runtergeladen. Da haben die Jungs wirklich noch
einiges reingepackt gegenüber den früheren CTPs. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c241402e-d7da-4e21-8080-a7798c44ab7d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,c241402e-d7da-4e21-8080-a7798c44ab7d.aspx</comments>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=be03acd8-8066-4143-aaf0-1f44b8490902</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=be03acd8-8066-4143-aaf0-1f44b8490902</wfw:commentRss>
      <body 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" />
      </body>
      <title>Expression Blend 3 und Team Foundation Server</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx</link>
      <pubDate>Thu, 14 May 2009 22:49:23 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_2.png"&gt;&lt;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&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font size=7&gt;&lt;strong&gt;&amp;amp; &lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/Untitled_2.png"&gt;&lt;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&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Mit der Version 3 des Design-Tools für WPF und SilverLight, &lt;a href="http://www.microsoft.com/expression/try-it/blendpreview.aspx"&gt;Expression
Blend&lt;/a&gt; bekommt nun endlich die Unterstützung für den Team Foundation Server um
die Source-Dateien in der Versionsverwaltung abzulegen. Hierzu muss ein entsprechendes &lt;a href="http://code.msdn.microsoft.com/KB967483"&gt;Hotfix&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Hinweis:&lt;/strong&gt; 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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_10.png"&gt;&lt;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&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Beim Checkin ist auch die sehr nützliche Funktion zur Verknüpfung von Workitems beim
Checkin verfügbar.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ExpressionBlend3undTeamFoundationServer_B2D/image_12.png"&gt;&lt;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&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Damit kann Expression Blend nun endlich in den Entwicklungs-Prozess von Software-Anwendungen
integriert werden und steht nicht nur als separates Design-Tool bereit.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=be03acd8-8066-4143-aaf0-1f44b8490902" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,be03acd8-8066-4143-aaf0-1f44b8490902.aspx</comments>
      <category>Team System Server;WPF / Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=57d4f32e-190a-4b11-aca8-61f3522b00f0</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=57d4f32e-190a-4b11-aca8-61f3522b00f0</wfw:commentRss>
      <body 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" />
      </body>
      <title>Bereits &amp;uuml;ber 30 Anmeldungen zum .Net Open Space S&amp;uuml;d 2009</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx</link>
      <pubDate>Wed, 13 May 2009 14:19:20 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/ct.ashx?id=201d2d6f-99dc-4525-9097-b5a60d70e4f5&amp;amp;url=http%3a%2f%2fulm.netopenspace.de%2f"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nach rund einer Woche ist bereits die Hälfte der Plätze beim &lt;a href="http://ulm.netopenspace.de/"&gt;.Net
Open Space Süd 2009&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
Wir sehen uns am 11/12. Juli in Ulm!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=57d4f32e-190a-4b11-aca8-61f3522b00f0" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,57d4f32e-190a-4b11-aca8-61f3522b00f0.aspx</comments>
      <category>.Net Openspace Süd 2009;News</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=76ab8eb0-6591-4c5d-897a-52fbf5cdaf75</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=76ab8eb0-6591-4c5d-897a-52fbf5cdaf75</wfw:commentRss>
      <body 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" />
      </body>
      <title>Problem beim Anlegen eines Team-Projektes</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx</link>
      <pubDate>Wed, 13 May 2009 14:15:29 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=76ab8eb0-6591-4c5d-897a-52fbf5cdaf75" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,76ab8eb0-6591-4c5d-897a-52fbf5cdaf75.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0910e995-aebe-4471-87c0-47195c3c52ea</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0910e995-aebe-4471-87c0-47195c3c52ea</wfw:commentRss>
      <body 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" />
      </body>
      <title>Vortrag bei der .Net Developer Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx</link>
      <pubDate>Tue, 12 May 2009 20:15:05 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/ct.ashx?id=376e0002-8e9e-4b3a-8cb7-1fc652294b63&amp;amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fSilverlightbeider.NetDeveloperGroupUlm_D13E%2fclip_image001_2.gif"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;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"&gt;Download
Folien&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0910e995-aebe-4471-87c0-47195c3c52ea" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0910e995-aebe-4471-87c0-47195c3c52ea.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=2449450d-d4ee-4c71-85bf-f7ff98b8f5f3</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=2449450d-d4ee-4c71-85bf-f7ff98b8f5f3</wfw:commentRss>
      <body 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" />
      </body>
      <title>Vortrag auf der TeamConf</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx</link>
      <pubDate>Tue, 12 May 2009 20:04:56 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://www.teamconf.de/images/teamconf468x60.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
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 ;-)
&lt;/p&gt;
&lt;p&gt;
Leider war mein Vortrag der letzte der Konferenz und dazu noch parallel zum VSTS 2010
Vortrag von &lt;a href="http://blogs.msdn.com/cbinder"&gt;Christian Binder&lt;/a&gt;. Dennoch
fand sich eine interessierte Runde zum Thema “&lt;a href="http://www.teamconf.de/downloads/Tag2/Paris/5_artiso.pdf"&gt;Requirements
Management in leichtgewichtigen Prozessen&lt;/a&gt;” zusammen. Hier noch meine Folien zum
Download:
&lt;/p&gt;
&lt;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"&gt;
&lt;div&gt;Download File - &lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VortragaufderTeamConf_13582/tmp6328.zip" target="_self"&gt;TFSRequirementManagement&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2449450d-d4ee-4c71-85bf-f7ff98b8f5f3" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,2449450d-d4ee-4c71-85bf-f7ff98b8f5f3.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=91dc5b5c-c2dd-4a48-82ba-ce3f986b0892</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=91dc5b5c-c2dd-4a48-82ba-ce3f986b0892</wfw:commentRss>
      <body 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></body>
      <title>F# ist dasThema beim n&amp;auml;chsten Treffen der .Net Developer-Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx</link>
      <pubDate>Tue, 12 May 2009 19:44:00 GMT</pubDate>
      <description>&lt;h4&gt;&lt;a href="http://www.artiso.com/ProBlog/ct.ashx?id=376e0002-8e9e-4b3a-8cb7-1fc652294b63&amp;amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fSilverlightbeider.NetDeveloperGroupUlm_D13E%2fclip_image001_2.gif"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;h4&gt;Termin: 19.05.2009 - 18:00 Uhr
&lt;/h4&gt;
&lt;h4&gt;Veranstaltungsort:
&lt;/h4&gt;
In den Räumen der artiso solutions GmbH Anfahrtsbeschreibung unter &lt;a href="http://www.artiso.com/?Page=60"&gt;www.artiso.com&lt;/a&gt; 
&lt;h4&gt;Referent:
&lt;/h4&gt;
&lt;br&gt;
&lt;b&gt;Pedro Castelo Branco Lourenço&lt;/b&gt; 
&lt;h4&gt;Vortrag:
&lt;/h4&gt;
&lt;br&gt;
&lt;b&gt;Introducing F#&lt;/b&gt; 
&lt;p&gt;
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. 
&lt;p&gt;
&lt;b&gt;Pedro Castelo Branco Lourenço&lt;/b&gt; 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;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! &lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=91dc5b5c-c2dd-4a48-82ba-ce3f986b0892" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,91dc5b5c-c2dd-4a48-82ba-ce3f986b0892.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=201d2d6f-99dc-4525-9097-b5a60d70e4f5</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=201d2d6f-99dc-4525-9097-b5a60d70e4f5</wfw:commentRss>
      <title>.NET Open Space</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx</link>
      <pubDate>Mon, 04 May 2009 10:35:53 GMT</pubDate>
      <description>&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;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,201d2d6f-99dc-4525-9097-b5a60d70e4f5.aspx</comments>
      <category>.Net Openspace Süd 2009</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e908ebcc-6e71-471f-b40e-a53a5459503f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e908ebcc-6e71-471f-b40e-a53a5459503f</wfw:commentRss>
      <body 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" />
      </body>
      <title>Veranstaltung zu Verteilten Systemen an der DHBW-Heidenheim &amp;ndash; 2. Teil</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx</link>
      <pubDate>Wed, 22 Apr 2009 05:53:51 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="Duale Hochschule" alt="" src="http://www.ba-heidenheim.de/fileadmin/template/images/dhbw-hdh-web.gif" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
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 &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,65e7a0c8-12bf-4ee9-bf7e-6de06370113e.aspx"&gt;hier
findet&lt;/a&gt;
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/VeranstaltungzuVerteiltenSystemenan.Teil_6EA3/WCFChat.zip" target="_blank"&gt;Download
Demo&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e908ebcc-6e71-471f-b40e-a53a5459503f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e908ebcc-6e71-471f-b40e-a53a5459503f.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=57206e9d-0d67-4d69-b6cb-27948acbd0f8</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=57206e9d-0d67-4d69-b6cb-27948acbd0f8</wfw:commentRss>
      <body 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" />
      </body>
      <title>Infos zur Veranstaltung Verteilte Systeme an der DHBW Heidenheim</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx</link>
      <pubDate>Tue, 14 Apr 2009 09:41:50 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="Duale Hochschule" alt="" src="http://www.ba-heidenheim.de/fileadmin/template/images/dhbw-hdh-web.gif" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
Beim ersten Termin wurden die Grundlagen zu verteilten Anwendungen im allgemeinen
und der WCF im speziellen vermittelt.
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/InfoszurVeranstaltungVerteilteSystemeand_A3B4/Demos.zip" target="_blank"&gt;Folien&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/InfoszurVeranstaltungVerteilteSystemeand_A3B4/Verteilte%20Anwendungen.zip" target="_blank"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=57206e9d-0d67-4d69-b6cb-27948acbd0f8" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,57206e9d-0d67-4d69-b6cb-27948acbd0f8.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=eef081c2-f672-459d-9e7e-5ce49099fe65</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=eef081c2-f672-459d-9e7e-5ce49099fe65</wfw:commentRss>
      <body 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" />
      </body>
      <title>Problem Steps Recorder in Windows 7</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx</link>
      <pubDate>Wed, 08 Apr 2009 00:07:35 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nach einem Klick auf Start Record werden nun die Benutzeraktionen aufgezeichnet. Heraus
kommt dann ungefähr so etwas:
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Problem Step 15:&lt;/b&gt; User left double click on "Name (editable text)" in "WorkItem_Manager_Open_1.0.0_Installer[1]" 
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;a href="file:///C:\Users\Thomas\Desktop\screenshot_0015.jpeg"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;a href="#ProblemStep15"&gt;Previous&lt;/a&gt; &lt;a href="#ProblemStep17"&gt;Next&lt;/a&gt; 
&lt;p&gt;
&lt;b&gt;Problem Step 16:&lt;/b&gt; User left click on "Run (push button)" in "Open File - Security
Warning" 
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;a href="file:///C:\Users\Thomas\Desktop\screenshot_0016.jpeg"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;a href="#ProblemStep16"&gt;Previous&lt;/a&gt; &lt;a href="#ProblemStep18"&gt;Next&lt;/a&gt; 
&lt;p&gt;
&lt;b&gt;Problem Step 17:&lt;/b&gt; User left click on "Next &amp;gt; (push button)" in "artiso Workitem
Manager Open" 
&lt;p&gt;
&lt;a href="file:///C:\Users\Thomas\Desktop\screenshot_0017.jpeg"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;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"&gt;
&lt;div&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemStepsRecorderinWindows7_1AF3/Problem_20090407_2211.mht" target="_blank"&gt;Das
komplette Ergebnis kann hier heruntergeladen werden&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;br&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=eef081c2-f672-459d-9e7e-5ce49099fe65" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,eef081c2-f672-459d-9e7e-5ce49099fe65.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=acb5279c-cafe-45ca-bf98-be7a2c4097e7</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=acb5279c-cafe-45ca-bf98-be7a2c4097e7</wfw:commentRss>
      <body 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" />
      </body>
      <title>Brian Harry bei der TSUG-VE EMEA</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx</link>
      <pubDate>Mon, 06 Apr 2009 21:13:52 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Also gleich als Mitglied registrieren und am 16. April dabei sein!
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen zum Meeting gibt’s unter &lt;a href="http://www.tsug-ve.com"&gt;www.tsug-ve.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=acb5279c-cafe-45ca-bf98-be7a2c4097e7" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,acb5279c-cafe-45ca-bf98-be7a2c4097e7.aspx</comments>
      <category>Team System Server;Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=376e0002-8e9e-4b3a-8cb7-1fc652294b63</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=376e0002-8e9e-4b3a-8cb7-1fc652294b63</wfw:commentRss>
      <body 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" />
      </body>
      <title>Silverlight bei der .Net Developer-Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx</link>
      <pubDate>Fri, 03 Apr 2009 12:54:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Silverlightbeider.NetDeveloperGroupUlm_D13E/clip_image001_2.gif"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
&lt;b&gt;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.&lt;/b&gt; 
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp; 
&lt;p&gt;
&lt;b&gt;Referent:&lt;/b&gt; Philipp Bauknecht 
&lt;p&gt;
&lt;b&gt;Vortrag:&lt;/b&gt; Web &amp;amp; Silverlight 
&lt;p&gt;
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. 
&lt;p&gt;
Weitere Infos finden Sie&amp;nbsp; &lt;a href="http://www.dotnet-ulm.de/Treffen.aspx#07042009"&gt;hier…&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Freue mich auf zahlreiche Teilnehmer. Es gibt diesesmal wieder einen leckeren Imbiss
der von der &lt;a href="http://www.sos-software.com"&gt;Fa. SOS Software Services&lt;/a&gt; gesponsort
wird. 
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=376e0002-8e9e-4b3a-8cb7-1fc652294b63" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,376e0002-8e9e-4b3a-8cb7-1fc652294b63.aspx</comments>
      <category>Usergroup;WPF / Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=596283b1-eb27-4c67-851f-eac0dc720efe</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=596283b1-eb27-4c67-851f-eac0dc720efe</wfw:commentRss>
      <body 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" />
      </body>
      <title>Visual Studio Team Test 2008 Quick Reference Guide</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx</link>
      <pubDate>Thu, 02 Apr 2009 06:33:23 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Definitiv lesenswert für jeden, der etwas mehr über dieses Toolset erfahren möchte.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://vstt2008qrg.codeplex.com/"&gt;Download VSTT 2008 Quick Reference Guide&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=596283b1-eb27-4c67-851f-eac0dc720efe" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,596283b1-eb27-4c67-851f-eac0dc720efe.aspx</comments>
      <category>Team System Server;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=2b142c6d-f285-4697-ad77-9914a8bd3cfe</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=2b142c6d-f285-4697-ad77-9914a8bd3cfe</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body 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" />
      </body>
      <title>TDD Quickstart</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</link>
      <pubDate>Wed, 01 Apr 2009 00:10:53 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Zum Einsatz kommen hierbei die Testfunktionen von Visual Studio 2008 die ab der Professional
Edition enthalten sind. Wir beginnen mit einer komplett leeren Solution.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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 &amp;gt; Grün &amp;gt; Refactor erweitern wir ein wenig. Damit ergibt sich folgende Abfolge:
&lt;/p&gt;
&lt;p&gt;
Contract definieren &amp;gt; Test implementieren &amp;gt; Rot &amp;gt; Funktion implementieren
&amp;gt; Grün &amp;gt; Refactor
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Contracts&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; IOrderCalculator&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; CalculateShippinghCosts(&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; sum, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; freeShippingMin, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; shippingCosts);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
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”.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier wird standardmäßig ein neues Test-Projekt angelegt. Darin wird ein entsprechender
Unit-Test generiert.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCostsTest()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator(); &lt;span style="color: #008000"&gt;// TODO: Initialize
to an appropriate value&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; Decimal
sum = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; Decimal
freeShippingMin = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; Decimal
shippingCosts = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; Decimal
expected = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; Assert.Inconclusive(&lt;span style="color: #006080"&gt;"Verify
the correctness of this test method."&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; IOrderCalculator
CreateIOrderCalculator()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
TODO: Instantiate an appropriate concrete class.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; IOrderCalculator
target = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; target;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCosts_Sum_Below_FreeShippingMin()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; Decimal
sum = 1;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; Decimal
freeShippingMin = 10;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; Decimal
shippingCosts = 5;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
We are below min, so we have to add shippingCosts&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; Decimal
expected = 6;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCosts_Sum_Above_FreeShippingMin()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; Decimal
sum = 20;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; Decimal
freeShippingMin = 10;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; Decimal
shippingCosts = 5;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
We are above min, so we don't add shippingCosts&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; Decimal
expected = 20;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCosts_Sum_Equal_FreeShippingMin()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; Decimal
sum = 10;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; Decimal
freeShippingMin = 10;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; Decimal
shippingCosts = 5;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
We are equal min, so we don't add shippingCosts&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; Decimal
expected = 10;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Components&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; cOrderCalculator
: IOrderCalculator&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; CalculateShippinghCosts(&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; sum, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; freeShippingMin, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; shippingCosts)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
If sum is greater than Min then don't add shipping costs&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (sum
&amp;gt; freeShippingMin)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; sum;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
else add shipping costs&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; sum
+ shippingCosts;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Nun müssen wir unbedingt noch daran denken, die Initialisierung des Testobjektes in
unserer Testmethode anzupassen.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; IOrderCalculator
CreateIOrderCalculator()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; IOrderCalculator
target = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; cOrderCalculator();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; target;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Nun können wir die Tests ausführen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_10.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Also eigentlich gar nicht so schwer das mit dem TDD, oder? Freue mich auf euer Feedback.
&lt;/p&gt;
&lt;p&gt;
Die Solution gibt es zum Download.
&lt;/p&gt;
&lt;p&gt;
Happy Testing!
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/TDDQuickStart.zip" target="_blank"&gt;Download
Demo-Solution&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b142c6d-f285-4697-ad77-9914a8bd3cfe" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</comments>
      <category>Eigene Tutorials;Qualitätsmanagement;Testing;Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=efb41ce4-aba2-4071-bca7-d53e1f1410a4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=efb41ce4-aba2-4071-bca7-d53e1f1410a4</wfw:commentRss>
      <body 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" />
      </body>
      <title>Team System Camp</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx</link>
      <pubDate>Tue, 31 Mar 2009 22:04:06 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemCamp_14696/002.jpg"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Letzte Woche war ich als Trainer beim Team System Camp. Eine wirklich bemerkenswerte
Veranstaltung! Schon der Veranstaltungsort selbst war bemerkenswert. Das &lt;a href="http://www.haeckers-kurhotel.com/bad-ems/de/index.htm"&gt;Häckers
Kurhotel&lt;/a&gt; in Bad Ems stellte einen durchaus würdigen Rahmen für die Veranstaltung
dar und auch der Seminarraum hatte durchaus Stil:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemCamp_14696/002_1.jpg"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Mir hat’s jedenfalls viel Spaß gemacht und bin beim nächsten mal gerne wieder dabei.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=efb41ce4-aba2-4071-bca7-d53e1f1410a4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,efb41ce4-aba2-4071-bca7-d53e1f1410a4.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=cd5e41ae-03c8-433f-9ad1-4780b8810d6b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=cd5e41ae-03c8-433f-9ad1-4780b8810d6b</wfw:commentRss>
      <title>VSTO Community Day in Wien</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx</link>
      <pubDate>Tue, 31 Mar 2009 15:21:45 GMT</pubDate>
      <description>&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;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,cd5e41ae-03c8-433f-9ad1-4780b8810d6b.aspx</comments>
      <category>News</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f2c45e90-5d4d-4187-a7fc-9846e9daa8dc</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f2c45e90-5d4d-4187-a7fc-9846e9daa8dc</wfw:commentRss>
      <body 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" />
      </body>
      <title>Neuerungen im TFS 2008 MSSCCI-Provider</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx</link>
      <pubDate>Tue, 31 Mar 2009 15:18:04 GMT</pubDate>
      <description>&lt;p&gt;
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 &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=FAEB7636-644E-451A-90D4-7947217DA0E7&amp;amp;displaylang=en"&gt;MSSCCI-Provider
für den TFS 2008&lt;/a&gt;. 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.
&lt;/p&gt;
&lt;p&gt;
Zunächst muss der TFS MSSCCI-Provider unter Optionen eingestellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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”.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Führt man hier nun den Checkin aus, kommt der aus dem Team-Explorer bekannte Dialog
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier können nun z.B. Checkin-Kommentare angegeben oder Workitems verknüpft werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Sogar die Checkin-Plicies funktionieren hier wie gewohnt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeuerungenimTFS2008MSSCCIProvider_F301/image_10.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f2c45e90-5d4d-4187-a7fc-9846e9daa8dc" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f2c45e90-5d4d-4187-a7fc-9846e9daa8dc.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=93ccba86-4694-4688-8ed8-bd542f099898</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=93ccba86-4694-4688-8ed8-bd542f099898</wfw:commentRss>
      <body 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" />
      </body>
      <title>EMEA-Freundliche Zeiten f&amp;uuml;r Treffen der TSUG-VE</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx</link>
      <pubDate>Mon, 30 Mar 2009 06:55:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Bei der &lt;a href="http://www.tsug-ve.com/"&gt;Team System Usergroup – Virtual Edition
(TSUG-VE)&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=93ccba86-4694-4688-8ed8-bd542f099898" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,93ccba86-4694-4688-8ed8-bd542f099898.aspx</comments>
      <category>News;Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e64c01e2-50b1-41dc-a2d8-05fe896f4d24</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e64c01e2-50b1-41dc-a2d8-05fe896f4d24</wfw:commentRss>
      <body 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" />
      </body>
      <title>VISIfire - Silverlight / WPF Charts</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx</link>
      <pubDate>Fri, 20 Mar 2009 08:31:45 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.visifire.com/popup.php?url=Combi6.xml"&gt;&lt;img alt="Silverlight 2D Combination Chart" src="http://www.visifire.com/images/gallery/Combination/Combi6.jpg" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
VISfire sit eine Charting-Komponente für Silverlight und WPF. Das coole daran ist,
dass die Charts animiert werden können.&amp;nbsp; Einen schnellen Eindruck bekommnt man
über die &lt;a href="http://www.visifire.com/silverlight_charts_gallery.php"&gt;Silverlight
Chart Gallery&lt;/a&gt;. Die componente ist unter GPL und einer kommerziellen Lizenz verfügbar. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e64c01e2-50b1-41dc-a2d8-05fe896f4d24" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e64c01e2-50b1-41dc-a2d8-05fe896f4d24.aspx</comments>
      <category>Komponenten und Bibliotheken;WPF / Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=be7b3523-38a8-442d-9af8-7f8337d8553c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=be7b3523-38a8-442d-9af8-7f8337d8553c</wfw:commentRss>
      <body 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" />
      </body>
      <title>Flash oder Silverligh &amp;ndash; was ist besser?</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx</link>
      <pubDate>Sun, 15 Mar 2009 06:41:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FlashoderSilverlighwasistbesser_7A45/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.shinedraw.com/flash-vs-silverlight-gallery/"&gt;http://www.shinedraw.com/flash-vs-silverlight-gallery/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=be7b3523-38a8-442d-9af8-7f8337d8553c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,be7b3523-38a8-442d-9af8-7f8337d8553c.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=50e0823f-7eaa-45a3-86ae-66e2bdd6a795</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=50e0823f-7eaa-45a3-86ae-66e2bdd6a795</wfw:commentRss>
      <body 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" />
      </body>
      <title>Clean Code Developer bei .Net Usergroup Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx</link>
      <pubDate>Sat, 14 Mar 2009 01:00:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img alt="" src="http://www.clean-code-developer.de/chrome/site/logo.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Die Initiative Clean Code Developer (CCD) (&lt;a href="http://www.clean-code-developer.de/"&gt;http://www.clean-code-developer.de/&lt;/a&gt;)
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.
&lt;/p&gt;
&lt;p&gt;
Die .Net Developer-Group Ulm (&lt;a href="http://www.dotnet-ulm.de"&gt;www.dotnet-ulm.de&lt;/a&gt;)
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.
&lt;/p&gt;
&lt;p&gt;
Natürlich freue ich mich auf eine rege Teilnahme und natürlich sind Gäste gerne willkommen.
&lt;/p&gt;
&lt;p&gt;
Nähere Infos unter &lt;a href="http://www.dotnet-ulm.de/Cleancodedeveloper.aspx"&gt;http://www.dotnet-ulm.de/Cleancodedeveloper.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=50e0823f-7eaa-45a3-86ae-66e2bdd6a795" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,50e0823f-7eaa-45a3-86ae-66e2bdd6a795.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4f07bf10-d3cd-4168-b223-d5ddffafe52d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4f07bf10-d3cd-4168-b223-d5ddffafe52d</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body 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" />
      </body>
      <title>Team Build Monitor &amp;ndash; Vista Sidebar Gadget</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx</link>
      <pubDate>Fri, 13 Mar 2009 12:34:33 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamBuildMonitorVistaSidebarGadget_BEA0/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Mit diesem Sidebar-Gadget kann man sich den Status seiner Build schnell und einfach
anzeigen lassen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/jimlamb/archive/2007/06/22/team-build-monitor-vista-sidebar-gadget.aspx"&gt;Jim
Lamb : Team Build Monitor – Vista Sidebar Gadget&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f07bf10-d3cd-4168-b223-d5ddffafe52d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4f07bf10-d3cd-4168-b223-d5ddffafe52d.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=aaf0c40e-4974-4858-a8a8-3168b7095d71</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aaf0c40e-4974-4858-a8a8-3168b7095d71</wfw:commentRss>
      <body 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" />
      </body>
      <title>Treffen bei der .Net Developer-Group Ulm: Test Driven Development</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx</link>
      <pubDate>Fri, 13 Mar 2009 08:05:18 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/ct.ashx?id=c452a3fe-3660-44ca-b998-c392d0c6944b&amp;amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindowsLiveWriter%2fDaruiszParysbeider.NetDeveloperGroupUlm_ABBC%2fclip_image001_2.gif"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnet-ulm.de/Treffen.aspx#19032009"&gt;http://www.dotnet-ulm.de/Treffen.aspx#19032009&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aaf0c40e-4974-4858-a8a8-3168b7095d71" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,aaf0c40e-4974-4858-a8a8-3168b7095d71.aspx</comments>
      <category>News;Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=70ff6e02-8a52-4d96-86b1-cb1029b2a362</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=70ff6e02-8a52-4d96-86b1-cb1029b2a362</wfw:commentRss>
      <body 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" />
      </body>
      <title>MSDN Webcast zum Thema Team Build mit Custom Build Tasks erweitern</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</link>
      <pubDate>Fri, 13 Mar 2009 01:05:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550"&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Build.Utilities;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Build.Framework;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Artiso.BuildTasks&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Creates a AssemblyVersion out of a BuildNumber&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
AssemblyVersion.Minjor and AssemblyVersion.Minor will be defined fiexed in&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
the Build-Script. If the BuildNumber is Dev_Versioning_20090305.4 we use &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
two digit year and month for AssemblyBuildNumber and day and 3 digit BuildRevision&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
for AssemblyRevision. BuildRevisio &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;example&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Dev_Versioning_20090305.4 =&amp;gt; xx.yy.0903.05004&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/example&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ExtractRevision
: Task&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; [rgn]
Fields(3)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; buildRevision;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; buildVersion;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; buildNumber;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; [rgn]
Properties(3)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Input Build Number&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; [Required]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; BuildNumber&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; set
{ buildNumber = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Returns the sortened date of the build&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 42:&lt;/span&gt; [Output]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 43:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; BuildVersion&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 44:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 45:&lt;/span&gt; get
{ &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; buildVersion; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 46:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 47:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 48:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 49:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Returns the Build Revision (number of build at this day&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 50:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 51:&lt;/span&gt; [Output]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 52:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; BuildRevision&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 53:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 54:&lt;/span&gt; get
{ &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; buildRevision; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 55:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 56:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 57:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 58:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; [rgn]
Methods(1)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 59:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Execute()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 60:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 61:&lt;/span&gt; buildVersion
= &lt;span style="color: #006080"&gt;"0"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 62:&lt;/span&gt; buildRevision
= &lt;span style="color: #006080"&gt;"0"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 63:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 64:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (buildNumber
!= &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; buildNumber.Contains(&lt;span style="color: #006080"&gt;"."&lt;/span&gt;))&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 65:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 66:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[]
buildNumberParts = buildNumber.Substring(buildNumber.LastIndexOf(&lt;span style="color: #006080"&gt;'_'&lt;/span&gt;)+1).Split(&lt;span style="color: #006080"&gt;'.'&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 67:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 68:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
Dev_Versioning_20090305.4 -&amp;gt; 0903.02005&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 69:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
use year (2 digits) and mont for buildversion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 70:&lt;/span&gt; buildVersion
= buildNumberParts[0].Substring(2, 4);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 71:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 72:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
use day and number of build in this day for build revision&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 73:&lt;/span&gt; buildRevision
= buildNumberParts[0].Substring(6) + buildNumberParts[1].PadLeft(3, &lt;span style="color: #006080"&gt;'0'&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 74:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 75:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 76:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 77:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 78:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 79:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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 (&lt;a href="http://www.attrice.info/downloads/index.htm"&gt;http://www.attrice.info/downloads/index.htm&lt;/a&gt;)
die direkt im Kontextmenü des TeamExplorers entsprechende Kommandos einfügt. Das nun
ausgecheckte PROJ-File kann nun bearbeitet werden.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
DO NOT EDIT the project element - the ToolsVersion specified here does not prevent
the solutions &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #008000"&gt; and
projects in the SolutionToBuild item group from targeting other versions of the .NET
framework. &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #008000"&gt; --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="DesktopBuild"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://schemas.microsoft.com/developer/msbuild/2003"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="3.5"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Do not edit this --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UsingTask&lt;/span&gt; &lt;span style="color: #ff0000"&gt;AssemblyFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\ArtisoBuildTasks\ArtisoBuildTasks.dll"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ExtractRevision"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Assembly version properties. Adjust here Major and Minor Version--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;3&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
...
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;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 (&lt;u&gt;&lt;a href="http://msbuildtasks.tigris.org/"&gt;http://msbuildtasks.tigris.org/&lt;/a&gt;&lt;/u&gt;).
Wir werden aus diesem Paket Aktionen verwenden.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;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.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Am Ende des Scripts direkt vor dem schließenden &amp;lt;/Project&amp;gt;-Tag wird nun
ein Target-Block eingefügt.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; ...&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AfterGet"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyInfoFiles&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(SolutionRoot)\**\assemblyinfo.cs"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Get
Revision Number from BuildNumber &amp;amp;quot;$(BuildNumber)&amp;amp;quot;."&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ExtractRevision&lt;/span&gt; &lt;span style="color: #ff0000"&gt;BuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(BuildNumber)"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="BuildRevision"&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyRevision"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="BuildVersion"&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyBuildNumber"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ExtractRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Update all the assembly info files with generated version info --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Modifying
AssemblyInfo files under &amp;amp;quot;$(SolutionRoot)&amp;amp;quot;."&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Attrib&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(AssemblyInfoFiles)"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Normal&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(AssemblyInfoFiles)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyVersion\(&amp;amp;quot;.*&amp;amp;quot;\)\]"&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyVersion(&amp;amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;amp;quot;)]"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(AssemblyInfoFiles)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyFileVersion\(&amp;amp;quot;.*&amp;amp;quot;\)\]"&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyFileVersion(&amp;amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;amp;quot;)]"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyInfo
files updated to version &amp;amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;amp;quot;"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;Ü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. 
&lt;/div&gt;
&lt;div&gt;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.
&lt;/div&gt;
&lt;div&gt;Damit können wir nun die Version unserer Anwendung bei jedem Build entsprechend
setzen.
&lt;/div&gt;
&lt;div&gt;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. 
&lt;/div&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AfterCompile"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;CreateItem&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..\Binaries\Release\**\*.*"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Exclude&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..\Binaries\Release\**\*.pdb;..\Binaries\Release\**\*codeanalysis*"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ItemName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ZipFiles"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Include"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;CreateItem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Zipping
Buildresult to \\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Zip&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ZipFileName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ZipFiles)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..\Binaries\Release\"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Mail&lt;/span&gt; &lt;span style="color: #ff0000"&gt;SmtpServer&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="tfs"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;To&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="tschissler@tfs"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;From&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="build@tfs"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Subject&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="BuildDemo
v$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)
released"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="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."&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Attachments&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AfterCompile"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Publish using ClickOnce --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="modify
Publish directory for $(SolutionRoot)"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Update directory where to publish the project --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectFiles&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(SolutionRoot)\Source\Dev\BuildDemo\BuildDemo.csproj"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PublishDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;\\tfs\Deploy\BuildDemo\ClickOnce\&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PublishDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InstallUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;\\tfs\Deploy\BuildDemo\ClickOnce\&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;InstallUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Attrib&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Normal&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;PublishUrl&amp;amp;gt;.*&amp;amp;lt;/PublishUrl&amp;amp;gt;"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;PublishUrl&amp;amp;gt;$(PublishDir)&amp;amp;lt;/PublishUrl&amp;amp;gt;"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;InstallUrl&amp;amp;gt;.*&amp;amp;lt;/InstallUrl&amp;amp;gt;"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;InstallUrl&amp;amp;gt;$(InstallURL)&amp;amp;lt;/InstallUrl&amp;amp;gt;"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;MSBuild&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Projects&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="PublishDir=$(PublishDir);ApplicationVersion=$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)"&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Targets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Publish"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Das Ganze wird in dem genannten Webcast Live demonstriert. Über Feedback würde ich
mich sehr freuen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405249"&gt;Details
zur Veranstaltung: Team Build mit Custom Build Tasks erweitern [1032405249] - Microsoft
Deutschland GmbH&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=70ff6e02-8a52-4d96-86b1-cb1029b2a362" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</comments>
      <category>Eigene Tutorials;Qualitätsmanagement;Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28</wfw:commentRss>
      <body 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" />
      </body>
      <title>Thomas @ MVP-Summit</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx</link>
      <pubDate>Wed, 11 Mar 2009 23:22:12 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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&amp;nbsp; thing!
&lt;/p&gt;
&lt;p&gt;
Hier noch ein paar Impressionen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020645.jpg"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Blick von der Space Needle auf Seattle
&lt;/p&gt;
&lt;p&gt;
&lt;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"&gt;
&lt;/p&gt;
&lt;p&gt;
Die Team-System MVPs 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020691.jpg"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Sam Guckenheimer 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020704.jpg"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Brian Harry 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020686.jpg"&gt;&lt;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"&gt;&amp;nbsp;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Karaoke mit Live-Band bei der Party
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020754.jpg"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Steve Balmer bei seiner Key-Note
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ThomasMVPSummit_166/P1020726.jpg"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,21bfd732-afbc-4ba5-8cd3-7ccc3fa0cd28.aspx</comments>
      <category>News</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7a927529-07d5-43ff-8d18-1465cd936b1f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7a927529-07d5-43ff-8d18-1465cd936b1f</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body 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" />
      </body>
      <title>Meine Vortr&amp;auml;ge auf der BASTA</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx</link>
      <pubDate>Tue, 24 Feb 2009 20:52:49 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderBASTA_1325D/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Gestern und heute hatte ich auf der &lt;a href="http://www.basta.net"&gt;BASTA&lt;/a&gt; zwei
Vorträge. Hier die Folien dazu:
&lt;/p&gt;
&lt;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"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MeineVortrgeaufderBASTA_1325D/Testing%20Practices.pptx" target="_blank"&gt;10
Gründe für das Fehlschlagen von Software-Projekten&lt;/a&gt;
&lt;br /&gt;
&lt;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"&gt;Testing
Practices&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7a927529-07d5-43ff-8d18-1465cd936b1f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7a927529-07d5-43ff-8d18-1465cd936b1f.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6325d79d-45fb-4e1c-8120-f4e34cd7a246</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6325d79d-45fb-4e1c-8120-f4e34cd7a246</wfw:commentRss>
      <body 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" />
      </body>
      <title>MSDN WebCast zu PEX</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx</link>
      <pubDate>Tue, 24 Feb 2009 20:06:26 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550"&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Zusammen mit &lt;a href="http://blogs.msdn.com/cbinder/"&gt;Christian Binder&lt;/a&gt; habe ich
einen WebCast aufgenommen in dem wir &lt;a href="http://research.microsoft.com/en-us/projects/pex"&gt;PEX&lt;/a&gt; vorstellen.
Der WebCast wird ab 12.03 online sein. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405246"&gt;Details
zur Veranstaltung: Unit-Test Generierung mit PEX [1032405246] - Microsoft Deutschland
GmbH&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6325d79d-45fb-4e1c-8120-f4e34cd7a246" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6325d79d-45fb-4e1c-8120-f4e34cd7a246.aspx</comments>
      <category>PEX;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0</wfw:commentRss>
      <title>Meine Vortr&amp;auml;ge auf der VSOne</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx</link>
      <pubDate>Fri, 20 Feb 2009 07:03:56 GMT</pubDate>
      <description>&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;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3e361a4d-90e2-4c0d-8b2c-4324f96ee7a0.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3165d52b-b393-4eb6-9046-692783a3d704</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3165d52b-b393-4eb6-9046-692783a3d704</wfw:commentRss>
      <body 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" />
      </body>
      <title>Neuer Web-Cast zu Testing Practices</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx</link>
      <pubDate>Fri, 20 Feb 2009 06:12:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550"&gt;
&lt;/p&gt;
&lt;p&gt;
Zusammen mit &lt;a href="http://blogs.msdn.com/cbinder"&gt;Christian&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
Der komplette Abstract lautet:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
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.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Über ein Feedback zum Webcast würde ich mich freuen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405240"&gt;http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405240&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3165d52b-b393-4eb6-9046-692783a3d704" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3165d52b-b393-4eb6-9046-692783a3d704.aspx</comments>
      <category>PEX;Qualitätsmanagement;Testing;Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=051e943e-0c34-48ef-ac5d-ae55777af6f0</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=051e943e-0c34-48ef-ac5d-ae55777af6f0</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body 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" />
      </body>
      <title>Asserts in parametrisierten Unit-Tests mit PEX</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx</link>
      <pubDate>Fri, 20 Feb 2009 00:20:23 GMT</pubDate>
      <description>&lt;p&gt;
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:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TotalSum&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; total
= 0;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; CalculateTotals(List&amp;lt;cOrderPosition&amp;gt;
OrderPositions, &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; Rebate)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (OrderPositions
== &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 0;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (cOrderPosition
orderPos &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; OrderPositions)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (orderPos.Amount
&amp;gt; 0 &amp;amp;&amp;amp; orderPos.SinglePrice &amp;gt; 0)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; total
+= orderPos.Amount * orderPos.SinglePrice; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Rebate
&amp;gt; 0)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; total
= total * (1 - Rebate);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; total;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; cOrderPosition&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ProductID
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; Amount
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; SinglePrice
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Auf den ersten Blick scheint da alles OK zu sein. Mal sehen was PEX daraus jetzt macht.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [PexFactoryMethod(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(List&amp;lt;TotalSum.cOrderPosition&amp;gt;))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; List&amp;lt;TotalSum.cOrderPosition&amp;gt;
Create(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; NumberOfItems)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; List&amp;lt;TotalSum.cOrderPosition&amp;gt;
list = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;TotalSum.cOrderPosition&amp;gt;(NumberOfItems);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (NumberOfItems
&amp;gt; 10)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; NumberOfItems
= 10;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i
= 0; i &amp;lt; NumberOfItems; i++)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; list.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TotalSum.cOrderPosition()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; ProductID
= i + 1,&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; SinglePrice
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Random().NextDouble() * 10,&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; Amount
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Random().NextDouble() * 10&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; });&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; list;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(TotalSumTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateTotals04()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; TotalSum
totalSum;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; List&amp;lt;TotalSum.cOrderPosition&amp;gt;
list;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; d;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; totalSum
= TotalSumFactory.Create();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; list
= ListFactory.Create(1);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; d
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CalculateTotals(totalSum, list, 0);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&amp;gt;(42.232177096754121,
d);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestClass]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; [PexClass(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(TotalSum))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; [PexAllowedExceptionFromTypeUnderTest(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ArgumentException),
AcceptExceptionSubtypes = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; [PexAllowedExceptionFromTypeUnderTest(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(InvalidOperationException))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TotalSumTest&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; [PexMethod]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; CalculateTotals(&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; [PexAssumeUnderTest]TotalSum
target,&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; List&amp;lt;TotalSum.cOrderPosition&amp;gt;
OrderPositions,&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; Rebate&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; )&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; result
= target.CalculateTotals(OrderPositions, Rebate);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; result2
= target.CalculateTotals(OrderPositions, Rebate);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; Assert.AreEqual(result,
result2);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; result;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Diese Prüfung wird nun für alle Testmethoden ausgeführt. Und wie sieht das Ergebnis
aus?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AssertsinparametrisiertenUnitTestsmitPEX_129B7/image_10.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=051e943e-0c34-48ef-ac5d-ae55777af6f0" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,051e943e-0c34-48ef-ac5d-ae55777af6f0.aspx</comments>
      <category>PEX;Qualitätsmanagement;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=c80d260c-fed8-4c69-90a8-7ca55851616c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c80d260c-fed8-4c69-90a8-7ca55851616c</wfw:commentRss>
      <body 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" />
      </body>
      <title>Overflow Exceptions mit PEX finden</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx</link>
      <pubDate>Thu, 19 Feb 2009 19:54:48 GMT</pubDate>
      <description>&lt;p&gt;
Ich habe in einem &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx"&gt;früheren
Post&lt;/a&gt; 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 &lt;a href="http://www.nfranze.de/"&gt;Nico&lt;/a&gt;. Als erstes
Beispiel wollen wir uns mal folgenden Code ansehen:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; Calc(&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; Value, &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Increase)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Increase)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Value+1;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Value-1;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Das erfreuliche ist, dass mit der aktuellen Version (0.9.40105.0) PEX zusätzlich zur
Codeabdeckung auch Grenzwerte berücksichtigt:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/OverflowExceptionsmitPEXfinden_11AC8/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Bei einem anderen Beispiel funktioniert das leider (noch) nicht. 
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; ToDecimal(&lt;span style="color: #0000ff"&gt;double&lt;/span&gt; Value)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt;)Value;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/OverflowExceptionsmitPEXfinden_11AC8/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c80d260c-fed8-4c69-90a8-7ca55851616c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,c80d260c-fed8-4c69-90a8-7ca55851616c.aspx</comments>
      <category>PEX;Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0f381ed8-5c83-4682-8c70-a35abafb9491</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0f381ed8-5c83-4682-8c70-a35abafb9491</wfw:commentRss>
      <body 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" />
      </body>
      <title>Testliste exportieren - Variante 2</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx</link>
      <pubDate>Wed, 18 Feb 2009 23:43:08 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx"&gt;Hier&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
Zunächst speichert man das Test-Result in ein TRX-File. Dies geht über den Button
"Export Test Run Results".
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Anschließend kann man mit dem Tool &lt;a href="http://www.codeplex.com/trx2html"&gt;trx2html&lt;/a&gt; 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:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Durch einen Klick auf das rote Kreis-Icon neben einem der Test kann z.B. ein Stack-Trace
eingeblendet werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/trx2htmlHome_616/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.codeplex.com/trx2html"&gt;trx2html - Home&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0f381ed8-5c83-4682-8c70-a35abafb9491" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0f381ed8-5c83-4682-8c70-a35abafb9491.aspx</comments>
      <category>Qualitätsmanagement;Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=df19cbe3-5daf-4bef-b47f-c2979f0073e2</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=df19cbe3-5daf-4bef-b47f-c2979f0073e2</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body 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" />
      </body>
      <title>Code Coverage f&amp;uuml;r manuelle Tests</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx</link>
      <pubDate>Wed, 18 Feb 2009 22:02:18 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Zunächst wird davon ausgegangen, dass ein maueller Test spezifiziert ist. Dieser kann
z.B. so aussehen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_4.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Nun wird ein Unit-Test erzeugt. Im Unit-Test wird eine Test-Methode angelegt die der
Main-Methode der zu testenden Anwendung entspricht:
&lt;/p&gt;
&lt;div&gt;
&lt;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"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; [STAThread]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; FrmMainConstructorTest()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; Application.EnableVisualStyles();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; Application.SetCompatibleTextRenderingDefault(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; Application.Run(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FrmMain());&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
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)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Und natürlich lassen sich auch die durchlaufenen und nicht durchlaufenen Code-Zeilen
farblich kennzeichnen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoveragefrmanuelleTests_1460D/image_10.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Den ganzen Ablauf wird in folgendem Video auch nochmals detailliert gezeigt:
&lt;/p&gt;
&lt;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"&gt;
&lt;param name="URL" value="http://content.screencast.com/users/TSchissler/folders/Default/media/1178b9cb-5334-4c72-967a-bd312d7238d6/ManualTestsCodeCoverage.wmv"&gt;
&lt;param name="rate" value="1"&gt;
&lt;param name="balance" value="0"&gt;
&lt;param name="currentPosition" value="0"&gt;
&lt;param name="defaultFrame" value=""&gt;
&lt;param name="playCount" value="1"&gt;
&lt;param name="autoStart" value="0"&gt;
&lt;param name="currentMarker" value="0"&gt;
&lt;param name="invokeURLs" value="-1"&gt;
&lt;param name="baseURL" value=""&gt;
&lt;param name="volume" value="50"&gt;
&lt;param name="mute" value="0"&gt;
&lt;param name="uiMode" value="full"&gt;
&lt;param name="stretchToFit" value="0"&gt;
&lt;param name="windowlessVideo" value="0"&gt;
&lt;param name="enabled" value="-1"&gt;
&lt;param name="enableContextMenu" value="-1"&gt;
&lt;param name="fullScreen" value="0"&gt;
&lt;param name="SAMIStyle" value=""&gt;
&lt;param name="SAMILang" value=""&gt;
&lt;param name="SAMIFilename" value=""&gt;
&lt;param name="captioningID" value=""&gt;
&lt;param name="enableErrorDialogs" value="0"&gt;
&lt;param name="_cx" value="16907"&gt;
&lt;param name="_cy" value="12594"&gt;
&lt;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"&gt;&lt;/embed&gt; 
&lt;/object&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=df19cbe3-5daf-4bef-b47f-c2979f0073e2" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,df19cbe3-5daf-4bef-b47f-c2979f0073e2.aspx</comments>
      <category>Qualitätsmanagement;Testing;VS 2008</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=c452a3fe-3660-44ca-b998-c392d0c6944b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c452a3fe-3660-44ca-b998-c392d0c6944b</wfw:commentRss>
      <body 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" />
      </body>
      <title>Daruisz Parys bei der .Net Developer-Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx</link>
      <pubDate>Fri, 13 Feb 2009 11:13:52 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DaruiszParysbeider.NetDeveloperGroupUlm_ABBC/clip_image001_2.gif"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
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.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Í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). 
&lt;/p&gt;
&lt;p&gt;
Wer also Interesse an dem Thema hat, ist herzlich eingeladen am Dienstag 17.02.2008
um 18:00 zu uns zu kommen.
&lt;/p&gt;
&lt;p&gt;
Weitere Infos unter:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnet-ulm.de"&gt;http://www.dotnet-ulm.de&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c452a3fe-3660-44ca-b998-c392d0c6944b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,c452a3fe-3660-44ca-b998-c392d0c6944b.aspx</comments>
      <category>.Net 3.5;ADO.Net;Architektur;Know-How;Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f84dc952-b410-4e7d-9357-2550025bde2a</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f84dc952-b410-4e7d-9357-2550025bde2a</wfw:commentRss>
      <body 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" />
      </body>
      <title>Testliste drucken</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx</link>
      <pubDate>Wed, 11 Feb 2009 15:38:50 GMT</pubDate>
      <description>&lt;p&gt;
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:
&lt;/p&gt;
&lt;p&gt;
1.) Im TestView die gewünschten Spalten einblenden
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2.) Gewünschte Tests markieren und dann im Kontext-Menü "Copy" auswählen
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_6.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3.) In Excel einfügen, fertig!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_8.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Das selbe funktioniert übrigens auch aus den Test Results, leider ohne Icons :-( 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Testlistedrucken_E8B9/image_9.png"&gt;&lt;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"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f84dc952-b410-4e7d-9357-2550025bde2a" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f84dc952-b410-4e7d-9357-2550025bde2a.aspx</comments>
      <category>Tipps und Tricks;VS 2008</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f76897aa-1624-49f7-b83f-c352cec8ca69</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f76897aa-1624-49f7-b83f-c352cec8ca69</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body 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" />
      </body>
      <title>Sorry</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx</link>
      <pubDate>Mon, 09 Feb 2009 18:16:13 GMT</pubDate>
      <description>&lt;p&gt;
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 &lt;font size="5"&gt;&lt;strong&gt;Entschuldigung &lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;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.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f76897aa-1624-49f7-b83f-c352cec8ca69" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f76897aa-1624-49f7-b83f-c352cec8ca69.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=2b0630ec-91cb-4132-bf01-d4cd244e7adc</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=2b0630ec-91cb-4132-bf01-d4cd244e7adc</wfw:commentRss>
      <body 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" />
      </body>
      <title>Team System User Group - Virtual Edition</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx</link>
      <pubDate>Fri, 06 Feb 2009 07:50:50 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamSystemUserGroupVirtualEdition_7C24/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/"&gt;Team System User Group - Virtual Edition&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b0630ec-91cb-4132-bf01-d4cd244e7adc" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,2b0630ec-91cb-4132-bf01-d4cd244e7adc.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7325ca50-3d10-4bf4-9837-f5d975dc1055</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7325ca50-3d10-4bf4-9837-f5d975dc1055</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body 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" />
      </body>
      <title>Neue MSDN-Seite zu Team System</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx</link>
      <pubDate>Fri, 06 Feb 2009 07:47:08 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/NeueMSDNSeitezuTeamSystem_797E/image_2.png"&gt;&lt;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"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
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 &lt;a href="http://blogs.msdn.com/selkins/archive/2009/02/04/team-system-web-site-feedback.aspx"&gt;hier&lt;/a&gt; abgegeben
werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/teamsystem/default.aspx"&gt;Team System Home
auf MSDN&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7325ca50-3d10-4bf4-9837-f5d975dc1055" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7325ca50-3d10-4bf4-9837-f5d975dc1055.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=15b8739d-8ca4-4b66-8d4f-7b5bbf7259af</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=15b8739d-8ca4-4b66-8d4f-7b5bbf7259af</wfw:commentRss>
      <body 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" />
      </body>
      <title>Kommerzielle Lizenz f&amp;uuml;r PEX endlich verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx</link>
      <pubDate>Wed, 14 Jan 2009 11:05:22 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://research.microsoft.com/en-us/projects/pex/default.aspx"&gt;&lt;img src="http://research.microsoft.com/en-us/projects/pex/pexweb.png"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://research.microsoft.com/en-us/projects/pex/downloads.aspx"&gt;http://research.microsoft.com/en-us/projects/pex/downloads.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=15b8739d-8ca4-4b66-8d4f-7b5bbf7259af" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,15b8739d-8ca4-4b66-8d4f-7b5bbf7259af.aspx</comments>
      <category>Qualitätsmanagement</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=09a28b0c-7120-4456-92bc-2d9965dc046b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=09a28b0c-7120-4456-92bc-2d9965dc046b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body 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" />
      </body>
      <title>Signaturen in Outlook kopieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx</link>
      <pubDate>Mon, 12 Jan 2009 08:38:45 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Dank &lt;a href="http://blog.lars-keller.net/"&gt;Lars&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
Super cool. Vielen Dank Lars, du hast mir das Leben wirklich erleichtert!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=09a28b0c-7120-4456-92bc-2d9965dc046b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,09a28b0c-7120-4456-92bc-2d9965dc046b.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=95206195-1338-4f62-aa25-42e6171ee89f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=95206195-1338-4f62-aa25-42e6171ee89f</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body 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" />
      </body>
      <title>WLAN aus Hyper-V VMs nutzen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx</link>
      <pubDate>Fri, 09 Jan 2009 21:12:23 GMT</pubDate>
      <description>&lt;p&gt;
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. 
&lt;/p&gt;
&lt;p&gt;
Ich selbst komme momentan mit &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/01/09/using-hyper-v-with-a-wireless-network-adapter.aspx"&gt;dieser&lt;/a&gt; Lösung
ganz gut zurecht. Einen ausführlichen Artikel mit den beiden anderen Lösungen gibt
es &lt;a href="http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx"&gt;hier&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx"&gt;http://sqlblog.com/blogs/john_paul_cook/archive/2008/03/23/using-wireless-with-hyper-v.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=95206195-1338-4f62-aa25-42e6171ee89f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,95206195-1338-4f62-aa25-42e6171ee89f.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6f7aaabf-60a5-42a5-8396-51ea474bd080</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6f7aaabf-60a5-42a5-8396-51ea474bd080</wfw:commentRss>
      <body 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" />
      </body>
      <title>Windows 2008 Server im Vista-Kleid</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx</link>
      <pubDate>Fri, 09 Jan 2009 20:52:32 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Windows2008ServerimVistaKleid_13347/Win2008Aero_2.jpg"&gt;&lt;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"&gt;&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.win2008workstation.com/wordpress/2008/07/17/windows-server-2008-workstation-converter/"&gt;http://www.win2008workstation.com/wordpress/2008/07/17/windows-server-2008-workstation-converter/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6f7aaabf-60a5-42a5-8396-51ea474bd080" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6f7aaabf-60a5-42a5-8396-51ea474bd080.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=97827056-5bf5-4654-8d5f-e0cbc7bbf7ed</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,97827056-5bf5-4654-8d5f-e0cbc7bbf7ed.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,97827056-5bf5-4654-8d5f-e0cbc7bbf7ed.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=97827056-5bf5-4654-8d5f-e0cbc7bbf7ed</wfw:commentRss>
      <body 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" />
      </body>
      <title>Aktualisierte Vortragsthemen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,97827056-5bf5-4654-8d5f-e0cbc7bbf7ed.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,97827056-5bf5-4654-8d5f-e0cbc7bbf7ed.aspx</link>
      <pubDate>Fri, 05 Dec 2008 14:59:39 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;table style="width: 100%; border-collapse: collapse" cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;colgroup&gt;
&lt;tbody&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;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"&gt;
Titel&lt;/td&gt;
&lt;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"&gt;
Dauer&lt;/td&gt;
&lt;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"&gt;
Abstract&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 75pt" height="100"&gt;
&lt;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"&gt;
Qualitätsmanagement mit VSTS und TFS&lt;/td&gt;
&lt;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"&gt;
1 Std - 3 Std.&lt;/td&gt;
&lt;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"&gt;
Qualität spielt bei Software eine immer stärkere Rolle. Gleichzeitig werden immer
effizientere&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;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.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 75pt" height="100"&gt;
&lt;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"&gt;
Agile Development Process - Ein Architekturbasierter Entwicklungsprozess&lt;/td&gt;
&lt;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"&gt;
1 Std Vortrag, 
&lt;br&gt;
1 Std. Demo&lt;/td&gt;
&lt;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"&gt;
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.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 45pt" height="60"&gt;
&lt;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"&gt;
Mehrschichtige Architekturen mit .Net&lt;/td&gt;
&lt;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"&gt;
1 Std.&lt;/td&gt;
&lt;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"&gt;
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.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 45pt" height="60"&gt;
&lt;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"&gt;
Build-Management mit Team Foundation Server&lt;/td&gt;
&lt;td class="xl65" style="border-right: white 0.5pt solid; font-weight: 400; font-size: 11p