<?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>Fri, 03 Jul 2009 12:10:58 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=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>
      <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