<?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, Team Foundation Server und SCRUM</description>
    <language>de-de</language>
    <copyright>Thomas</copyright>
    <lastBuildDate>Wed, 16 May 2012 07:57:03 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>tschissler@artiso.com</managingEditor>
    <webMaster>tschissler@artiso.com</webMaster>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der TFs bietet ein relationales Warehouse und einen OLAP-Cube um auf Daten zuzugreifen,
z.B. für Reports. Leider gibt es keine Möglichkeit, PlainText-Felder im Warehouse
abzulegen. Es gibt aberhin und wieder die Situation, dass man diese Felder ausgeben
möchte. Dazu gibt es verschiedene Möglichkeiten. Die sauberste ist, wenn man die Felder
über die TFS API ausliest. Einen etwa schnelleren Weg zeige ich hier auf, auch wenn
der nicht ganz sauber ist. Dieser Weg geht direkt auf die operational Datenbank des
TFS und stellt damit ein von Microsoft nicht supportetes Szenario dar. D.h. Microsoft
kann die Datenbankstruktur jederzeit ohne Vorankündigung ändern was dazu führen kann,
dass der Ansatz so nicht mehr funktioniert.
</p>
        <p>
Mit folgender Abfrage auf die Datenbank der entsprechenden Team Project Collection
kann man beispielsweise das Description-Feld für alle Work Items abfragen. Die Abfrage
ist für den TFS 2010 konzipiert.
</p>
        <pre class="csharpcode">
          <span class="kwrd">SELECT</span> dbo.WorkItemsLatest.ID ,dbo.WorkItemsLatest.Rev
,dbo.WorkItemsLatest.[<span class="kwrd">Work</span> Item Type] ,dbo.WorkItemsLatest.Title
,dbo.WorkItemsLatest.<span class="kwrd">State</span> ,LongTexts.Words <span class="kwrd">FROM</span> dbo.WorkItemsLatest <span class="kwrd">LEFT</span><span class="kwrd">JOIN</span> (<span class="kwrd">SELECT</span> lt.ID
,lt.Rev ,lt.Words <span class="kwrd">FROM</span> (<span class="kwrd">SELECT</span> t1.* <span class="kwrd">FROM</span> dbo.WorkItemLongTexts
t1 <span class="kwrd">LEFT</span><span class="kwrd">OUTER</span><span class="kwrd">JOIN</span> dbo.WorkItemLongTexts
t2 <span class="kwrd">ON</span> t1.ID = t2.ID <span class="kwrd">AND</span> t1.Rev
&lt; t2.Rev <span class="kwrd">WHERE</span> t2.id <span class="kwrd">is</span><span class="kwrd">NULL</span>)
lt <span class="kwrd">INNER</span><span class="kwrd">JOIN</span> dbo.Fields <span class="kwrd">ON</span> lt.FldID
= Fields.FldID <span class="kwrd">AND</span> Fields.ReferenceName = <span class="str">'System.Description'</span>)
LongTexts <span class="kwrd">ON</span> dbo.WorkItemsLatest.ID = LongTexts.ID </pre>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c" />
      </body>
      <title>Im TFS Plain Text Felder aus der Datenbank auslesen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</link>
      <pubDate>Wed, 16 May 2012 07:57:03 GMT</pubDate>
      <description>&lt;p&gt;
Der TFs bietet ein relationales Warehouse und einen OLAP-Cube um auf Daten zuzugreifen,
z.B. für Reports. Leider gibt es keine Möglichkeit, PlainText-Felder im Warehouse
abzulegen. Es gibt aberhin und wieder die Situation, dass man diese Felder ausgeben
möchte. Dazu gibt es verschiedene Möglichkeiten. Die sauberste ist, wenn man die Felder
über die TFS API ausliest. Einen etwa schnelleren Weg zeige ich hier auf, auch wenn
der nicht ganz sauber ist. Dieser Weg geht direkt auf die operational Datenbank des
TFS und stellt damit ein von Microsoft nicht supportetes Szenario dar. D.h. Microsoft
kann die Datenbankstruktur jederzeit ohne Vorankündigung ändern was dazu führen kann,
dass der Ansatz so nicht mehr funktioniert.
&lt;/p&gt;
&lt;p&gt;
Mit folgender Abfrage auf die Datenbank der entsprechenden Team Project Collection
kann man beispielsweise das Description-Feld für alle Work Items abfragen. Die Abfrage
ist für den TFS 2010 konzipiert.
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; dbo.WorkItemsLatest.ID ,dbo.WorkItemsLatest.Rev
,dbo.WorkItemsLatest.[&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item Type] ,dbo.WorkItemsLatest.Title
,dbo.WorkItemsLatest.&lt;span class="kwrd"&gt;State&lt;/span&gt; ,LongTexts.Words &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.WorkItemsLatest &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; lt.ID
,lt.Rev ,lt.Words &lt;span class="kwrd"&gt;FROM&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; t1.* &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.WorkItemLongTexts
t1 &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;OUTER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; dbo.WorkItemLongTexts
t2 &lt;span class="kwrd"&gt;ON&lt;/span&gt; t1.ID = t2.ID &lt;span class="kwrd"&gt;AND&lt;/span&gt; t1.Rev
&amp;lt; t2.Rev &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; t2.id &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;)
lt &lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; dbo.Fields &lt;span class="kwrd"&gt;ON&lt;/span&gt; lt.FldID
= Fields.FldID &lt;span class="kwrd"&gt;AND&lt;/span&gt; Fields.ReferenceName = &lt;span class="str"&gt;'System.Description'&lt;/span&gt;)
LongTexts &lt;span class="kwrd"&gt;ON&lt;/span&gt; dbo.WorkItemsLatest.ID = LongTexts.ID &lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=02dd167b-d908-4614-afb2-1225fd960dbb</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,02dd167b-d908-4614-afb2-1225fd960dbb.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,02dd167b-d908-4614-afb2-1225fd960dbb.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=02dd167b-d908-4614-afb2-1225fd960dbb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Nachdem Unit-Tests in C# und VB.Net inzwischen eine gewisse Verbreitung gefunden habe,
werde in letzter Zeit häufiger darauf angesprochen, wie denn C++ Entwickler in Visual
Studio Unit-Tests nutzen können. Mein Kollege Thomas Trotzki hat mir dazu mal ein
paar Infos zusammengestellt.
</p>
        <p>
Nach dem Unit Tests mit C++ in Visual Studio erstellt werden können aber eben nicht
für alle Konstellationen und deshalb möchte ich hier erst mal einen Überblick geben.
</p>
        <table style="border-top: silver 1px solid; border-right: silver 1px solid; border-bottom: silver 1px solid; border-left: silver 1px solid" cellspacing="0" cellpadding="2" width="622">
          <tbody>
            <tr>
              <td valign="top" width="174">
 </td>
              <td style="border-right: silver 1px solid; background-color: #b1cad8" valign="top" width="145">
Unit Test<br />
Unmanaged C++</td>
              <td style="border-right: silver 1px solid; background-color: #b1cad8" valign="top" width="145">
Unit Test 
<br />
Managed C++ /clr:safe</td>
              <td style="background-color: #b1cad8" valign="top" width="145">
C# / VB.Net</td>
            </tr>
            <tr>
              <td style="background-color: #b1cad8" valign="top" width="174">
Unmanaged C++ 
</td>
              <td style="border-right: silver 1px solid" valign="top" width="108">
                <p align="center">
Dev 11
</p>
              </td>
              <td style="border-right: silver 1px solid" valign="top" width="145">
                <p align="center">
mit Wrapper
</p>
              </td>
              <td valign="top" width="193">
                <p align="center">
                  <font color="#000000">mit Wrapper</font>
                </p>
              </td>
            </tr>
            <tr>
              <td style="background-color: #b1cad8" valign="top">
Managed C++ /clr</td>
              <td style="border-right: silver 1px solid" valign="top">
                <p align="center">
-
</p>
              </td>
              <td style="border-right: silver 1px solid" valign="top">
                <p align="center">
VS 2010 / Dev11
</p>
              </td>
              <td valign="top" width="193">
                <p align="center">
VS 2010 / Dev11
</p>
              </td>
            </tr>
            <tr>
              <td style="background-color: #b1cad8" valign="top" width="174">
Managed C++ /clr:pure</td>
              <td style="border-right: silver 1px solid" valign="top">
                <p align="center">
-
</p>
              </td>
              <td style="border-right: silver 1px solid" valign="top">
                <p align="center">
VS 2010 / Dev11
</p>
              </td>
              <td valign="top">
                <p align="center">
VS 2010 / Dev11
</p>
              </td>
            </tr>
            <tr>
              <td style="background-color: #b1cad8" valign="top" width="174">
Managed C++ /clr:safe</td>
              <td style="border-right: silver 1px solid" valign="top">
                <p align="center">
-
</p>
              </td>
              <td style="border-right: silver 1px solid" valign="top">
                <p align="center">
VS 2010 / Dev11
</p>
              </td>
              <td valign="top">
                <p align="center">
VS 2010 / Dev11
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
          <br />
Wie man aus der Tabelle ersehen kann, ist es heute (Visual Studio 2010) bereits problemlos
möglich, für Managed C++ Unit-Test zu schreiben. Die Experience ist dabei ähnlich
zur Experience von C# / VB.Net, nicht zuletzt weil Managed C++ Code auch direkt mit
.NET basisierten Unit Tests getestet werden kann. Unmanaged C++ Code hingegen muss
in Visual Studio 2010 noch über einen Wrapper getestet werden, da Unit Tests mit der
Option /clr:safe erstellt werden müssen, diese aber die direkte Nutzung von Unmanaged
Code nicht erlaubt. Dieser kann aber einfach über einen mit der Option /clr erstellten
Wrapper angesprochen werden, der dann wiederum im Unit Test eingebunden werden kann. 
</p>
        <div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:893d72dd-b072-480b-87c2-3733123b53f8" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d316a43d549b_C81E/VS2010_CppTestingSample.zip" target="_blank">Demo
Visual Studio 2010 C++ Unit Tests</a>
          </p>
        </div>
        <p>
Hinsichtlich Unit Testing von Unmanged C++ Code gibt es mit der nächsten Version von
Visual Studio (Dev11) eine wichtige Neuerung. Dort ist es möglich, auch Unit-Tests
in Unmanaged C++ zu schreiben und so Unmanaged C++ Code direkt zu testen.
</p>
        <div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:207eec8c-1da0-4580-a34b-bfee10cc3c47" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d316a43d549b_C81E/Dev11-CPPUnitTest.zip" target="_blank">Demo
Visual Studio 11 C++ Unit Tests</a>
          </p>
        </div>
        <p>
Weitere Infos finden sich auch noch unter <a title="http://msdn.microsoft.com/en-us/library/ms243171.aspx" href="http://msdn.microsoft.com/en-us/library/ms243171.aspx">http://msdn.microsoft.com/en-us/library/ms243171.aspx</a>.
</p>
        <h5>Weitere Unit Tests Produkte / Frameworks
</h5>
        <p>
Auf Wikipedia wird eine Liste übe verfügbare Unit-Test-Werkzeuge für dieverse Programmiersprachen
geführt. Informationen zu C++ gibt’s unter <a href="http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B">http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B</a>  
</p>
        <h5>Build Integration
</h5>
        <p>
TFS Build nutzt MSTest um Unit-Tests auszuführen. Somit lassen sich die Testarten
die wir in Visual Studio unterstützt bekommen (z.B. Managed C++ Unit Tests) direkt
im Build ausführen.
</p>
        <p>
Mit Dev 11 überarbeitet Microsoft die Unit-Test-Schnittstelle ihrer Build-Werkzeuge.
Es wird eine Schnittstelle für die Anbindung anderer Test-Werkzeuge angeboten. Über
diese wird eine Anbindung von xUnit und nUnit mit Dev 11 angeboten, somit lässt sich
bestehender Test-Code auf dieser Basis auch in Visual Studio und innerhalb der TFS
Build Infrastrukur nutzen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02dd167b-d908-4614-afb2-1225fd960dbb" />
      </body>
      <title>Visual Studio Unit Tests mit C++</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,02dd167b-d908-4614-afb2-1225fd960dbb.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,02dd167b-d908-4614-afb2-1225fd960dbb.aspx</link>
      <pubDate>Wed, 28 Mar 2012 08:54:05 GMT</pubDate>
      <description>&lt;p&gt;
Nachdem Unit-Tests in C# und VB.Net inzwischen eine gewisse Verbreitung gefunden habe,
werde in letzter Zeit häufiger darauf angesprochen, wie denn C++ Entwickler in Visual
Studio Unit-Tests nutzen können. Mein Kollege Thomas Trotzki hat mir dazu mal ein
paar Infos zusammengestellt.
&lt;/p&gt;
&lt;p&gt;
Nach dem Unit Tests mit C++ in Visual Studio erstellt werden können aber eben nicht
für alle Konstellationen und deshalb möchte ich hier erst mal einen Überblick geben.
&lt;/p&gt;
&lt;table style="border-top: silver 1px solid; border-right: silver 1px solid; border-bottom: silver 1px solid; border-left: silver 1px solid" cellspacing="0" cellpadding="2" width="622"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="174"&gt;
&amp;nbsp;&lt;/td&gt;
&lt;td style="border-right: silver 1px solid; background-color: #b1cad8" valign="top" width="145"&gt;
Unit Test&lt;br&gt;
Unmanaged C++&lt;/td&gt;
&lt;td style="border-right: silver 1px solid; background-color: #b1cad8" valign="top" width="145"&gt;
Unit Test 
&lt;br&gt;
Managed C++ /clr:safe&lt;/td&gt;
&lt;td style="background-color: #b1cad8" valign="top" width="145"&gt;
C# / VB.Net&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="background-color: #b1cad8" valign="top" width="174"&gt;
Unmanaged C++ 
&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top" width="108"&gt;
&lt;p align="center"&gt;
Dev 11
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top" width="145"&gt;
&lt;p align="center"&gt;
mit Wrapper
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="193"&gt;
&lt;p align="center"&gt;
&lt;font color="#000000"&gt;mit Wrapper&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="background-color: #b1cad8" valign="top"&gt;
Managed C++ /clr&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top"&gt;
&lt;p align="center"&gt;
-
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top"&gt;
&lt;p align="center"&gt;
VS 2010 / Dev11
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="193"&gt;
&lt;p align="center"&gt;
VS 2010 / Dev11
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="background-color: #b1cad8" valign="top" width="174"&gt;
Managed C++ /clr:pure&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top"&gt;
&lt;p align="center"&gt;
-
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top"&gt;
&lt;p align="center"&gt;
VS 2010 / Dev11
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
VS 2010 / Dev11
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="background-color: #b1cad8" valign="top" width="174"&gt;
Managed C++ /clr:safe&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top"&gt;
&lt;p align="center"&gt;
-
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-right: silver 1px solid" valign="top"&gt;
&lt;p align="center"&gt;
VS 2010 / Dev11
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
VS 2010 / Dev11
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;br&gt;
Wie man aus der Tabelle ersehen kann, ist es heute (Visual Studio 2010) bereits problemlos
möglich, für Managed C++ Unit-Test zu schreiben. Die Experience ist dabei ähnlich
zur Experience von C# / VB.Net, nicht zuletzt weil Managed C++ Code auch direkt mit
.NET basisierten Unit Tests getestet werden kann. Unmanaged C++ Code hingegen muss
in Visual Studio 2010 noch über einen Wrapper getestet werden, da Unit Tests mit der
Option /clr:safe erstellt werden müssen, diese aber die direkte Nutzung von Unmanaged
Code nicht erlaubt. Dieser kann aber einfach über einen mit der Option /clr erstellten
Wrapper angesprochen werden, der dann wiederum im Unit Test eingebunden werden kann. 
&lt;/p&gt;
&lt;div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:893d72dd-b072-480b-87c2-3733123b53f8" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d316a43d549b_C81E/VS2010_CppTestingSample.zip" target="_blank"&gt;Demo
Visual Studio 2010 C++ Unit Tests&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Hinsichtlich Unit Testing von Unmanged C++ Code gibt es mit der nächsten Version von
Visual Studio (Dev11) eine wichtige Neuerung. Dort ist es möglich, auch Unit-Tests
in Unmanaged C++ zu schreiben und so Unmanaged C++ Code direkt zu testen.
&lt;/p&gt;
&lt;div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:207eec8c-1da0-4580-a34b-bfee10cc3c47" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d316a43d549b_C81E/Dev11-CPPUnitTest.zip" target="_blank"&gt;Demo
Visual Studio 11 C++ Unit Tests&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Weitere Infos finden sich auch noch unter &lt;a title="http://msdn.microsoft.com/en-us/library/ms243171.aspx" href="http://msdn.microsoft.com/en-us/library/ms243171.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms243171.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;h5&gt;Weitere Unit Tests Produkte / Frameworks
&lt;/h5&gt;
&lt;p&gt;
Auf Wikipedia wird eine Liste übe verfügbare Unit-Test-Werkzeuge für dieverse Programmiersprachen
geführt. Informationen zu C++ gibt’s unter &lt;a href="http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B"&gt;http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B&lt;/a&gt;&amp;nbsp; 
&lt;/p&gt;
&lt;h5&gt;Build Integration
&lt;/h5&gt;
&lt;p&gt;
TFS Build nutzt MSTest um Unit-Tests auszuführen. Somit lassen sich die Testarten
die wir in Visual Studio unterstützt bekommen (z.B. Managed C++ Unit Tests) direkt
im Build ausführen.
&lt;/p&gt;
&lt;p&gt;
Mit Dev 11 überarbeitet Microsoft die Unit-Test-Schnittstelle ihrer Build-Werkzeuge.
Es wird eine Schnittstelle für die Anbindung anderer Test-Werkzeuge angeboten. Über
diese wird eine Anbindung von xUnit und nUnit mit Dev 11 angeboten, somit lässt sich
bestehender Test-Code auf dieser Basis auch in Visual Studio und innerhalb der TFS
Build Infrastrukur nutzen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02dd167b-d908-4614-afb2-1225fd960dbb" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,02dd167b-d908-4614-afb2-1225fd960dbb.aspx</comments>
      <category>Testing</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=92612110-dd6e-4608-ba8b-56589b4dc119</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,92612110-dd6e-4608-ba8b-56589b4dc119.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,92612110-dd6e-4608-ba8b-56589b4dc119.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=92612110-dd6e-4608-ba8b-56589b4dc119</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/Windows-Live-Writer/Visual-Studio-11-Beta_13D2B/image_2.png">
            <img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Visual-Studio-11-Beta_13D2B/image_thumb.png" width="978" height="386" />
          </a>
        </p>
        <p>
Zusammen mit meinen MVP-Kollegen Sven Hubert und Neno Loje sowie Christian Binder,
Daniel Meixner, Patric Boscolo und Uwe Baumann von der Microsoft bin ich am 24.04,
25.04, 26.04 und 10.05 in Deutschland unterwegs um die nächste Version von Visual
Studio und TFS vorzustellen.
</p>
        <p>
          <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
            <font face="Calibri">
              <font style="font-size: 24pt">Agenda</font>
            </font>
          </span>
        </p>
        <table class="MsoTableMediumShading1Accent1" style="border-top: medium none; border-right: medium none; border-collapse: collapse; border-bottom: medium none; border-left: medium none; mso-border-alt: solid #7ba0cd 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1056; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing="0" cellpadding="0" border="1">
          <tbody>
            <tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes">
              <td style="border-top: #7ba0cd 1pt solid; border-right: medium none; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1" valign="top" width="50">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center">
                  <b>
                    <span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1">
                      <font face="Calibri">
                        <font style="font-size: 17pt" color="#ffffff">Beginn</font>
                      </font>
                    </span>
                  </b>
                </p>
              </td>
              <td style="border-top: #7ba0cd 1pt solid; border-right: medium none; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" valign="top" width="50">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center">
                  <b>
                    <span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1">
                      <font face="Calibri">
                        <font style="font-size: 17pt" color="#ffffff">Ende</font>
                      </font>
                    </span>
                  </b>
                </p>
              </td>
              <td style="border-top: #7ba0cd 1pt solid; border-right: medium none; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center">
                  <b>
                    <span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1">
                      <font face="Calibri">
                        <font style="font-size: 17pt" color="#ffffff">Inhalt</font>
                      </font>
                    </span>
                  </b>
                </p>
              </td>
              <td style="border-top: #7ba0cd 1pt solid; border-right: #7ba0cd 1pt solid; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1" valign="top" width="110">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center">
                  <b>
                    <span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1">
                      <font face="Calibri">
                        <font style="font-size: 17pt" color="#ffffff">Sprecher</font>
                      </font>
                    </span>
                  </b>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 0">
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">14:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">14:10 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Begrüßung </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Uwe
Baumann, Christian Binder </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 1">
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">14:10 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">15:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Visual
Studio 11: Die neue IDE </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Daniel
Meixner, Patric Boscolo </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 2">
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">15:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">15:15 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Pause </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">  </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 3">
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">15:15 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">16:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Mehr
Produktivität mit Team Foundation Server und Visual Studio 11 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Thomas
Schissler, Sven Hubert </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 4">
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">16:30 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">17:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Pause </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">  </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 5">
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">17:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">18:15 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Agile
Teams mit Visual Studio ALM 11 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Neno
Loje, Christian Binder </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 6">
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">18:15 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">18:30 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Pause </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">  </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
            <tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes">
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">18:30 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">19:00 </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Ask
The Expert </font>
                    </font>
                  </span>
                </p>
              </td>
              <td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top">
                <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128">
                  <span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de">
                    <font face="Calibri">
                      <font style="font-size: 13pt">Alle </font>
                    </font>
                  </span>
                </p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
 
</p>
        <p>
Weitere Informationen und die Anmeldung finden sich hier: <a title="http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx" href="http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx">http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx</a></p>
        <iframe height="300" src="http://player.vimeo.com/video/38632976?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" mozallowfullscreen="mozallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen">
        </iframe>
        <p>
          <a href="http://vimeo.com/38632976">Visual Studio 11 Beta Roadshow Trailer</a> from <a href="http://vimeo.com/codingclass">MSDN
Coding Class (Microsoft)</a> on <a href="http://vimeo.com">Vimeo</a>.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=92612110-dd6e-4608-ba8b-56589b4dc119" />
      </body>
      <title>Visual Studio 11 Beta Roadshow</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,92612110-dd6e-4608-ba8b-56589b4dc119.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,92612110-dd6e-4608-ba8b-56589b4dc119.aspx</link>
      <pubDate>Wed, 21 Mar 2012 22:30:50 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Visual-Studio-11-Beta_13D2B/image_2.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Visual-Studio-11-Beta_13D2B/image_thumb.png" width="978" height="386"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Zusammen mit meinen MVP-Kollegen Sven Hubert und Neno Loje sowie Christian Binder,
Daniel Meixner, Patric Boscolo und Uwe Baumann von der Microsoft bin ich am 24.04,
25.04, 26.04 und 10.05 in Deutschland unterwegs um die nächste Version von Visual
Studio und TFS vorzustellen.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 24pt"&gt;Agenda&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;table class="MsoTableMediumShading1Accent1" style="border-top: medium none; border-right: medium none; border-collapse: collapse; border-bottom: medium none; border-left: medium none; mso-border-alt: solid #7ba0cd 1.0pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-yfti-tbllook: 1056; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing="0" cellpadding="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;
&lt;td style="border-top: #7ba0cd 1pt solid; border-right: medium none; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1" valign="top" width="50"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center"&gt;
&lt;b&gt;&lt;span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 17pt" color="#ffffff"&gt;Beginn&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: #7ba0cd 1pt solid; border-right: medium none; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" valign="top" width="50"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center"&gt;
&lt;b&gt;&lt;span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 17pt" color="#ffffff"&gt;Ende&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: #7ba0cd 1pt solid; border-right: medium none; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center"&gt;
&lt;b&gt;&lt;span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 17pt" color="#ffffff"&gt;Inhalt&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: #7ba0cd 1pt solid; border-right: #7ba0cd 1pt solid; background: #4f81bd; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-themecolor: accent1; mso-border-themetint: 191; mso-background-themecolor: accent1" valign="top" width="110"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1" align="center"&gt;
&lt;b&gt;&lt;span style="color: ; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de; mso-themecolor: background1"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 17pt" color="#ffffff"&gt;Sprecher&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 0"&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;14:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;14:10 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Begrüßung &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Uwe
Baumann, Christian Binder &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1"&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;14:10 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;15:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Visual
Studio 11: Die neue IDE &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Daniel
Meixner, Patric Boscolo &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2"&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;15:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;15:15 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Pause &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3"&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;15:15 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;16:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Mehr
Produktivität mit Team Foundation Server und Visual Studio 11 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Thomas
Schissler, Sven Hubert &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4"&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;16:30 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;17:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Pause &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 5"&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;17:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;18:15 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Agile
Teams mit Visual Studio ALM 11 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Neno
Loje, Christian Binder &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 6"&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;18:15 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;18:30 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Pause &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; background: #d3dfee; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-background-themecolor: accent1; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-background-themetint: 63; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes"&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: #7ba0cd 1pt solid; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-left-themecolor: accent1; mso-border-left-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;18:30 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;19:00 &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: medium none; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Ask
The Expert &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-top: medium none; border-right: #7ba0cd 1pt solid; border-bottom: #7ba0cd 1pt solid; padding-bottom: 0cm; padding-top: 0cm; padding-left: 5.4pt; border-left: medium none; padding-right: 5.4pt; mso-border-top-themecolor: accent1; mso-border-top-themetint: 191; mso-border-bottom-themecolor: accent1; mso-border-bottom-themetint: 191; mso-border-top-alt: solid #7ba0cd 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-themetint: 191" valign="top"&gt;
&lt;p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 128"&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: calibri; mso-bidi-theme-font: minor-latin; mso-fareast-language: de"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 13pt"&gt;Alle &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen und die Anmeldung finden sich hier: &lt;a title="http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx" href="http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx"&gt;http://www.microsoft.com/germany/visualstudio/events/eleven-roadshow.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;iframe height="300" src="http://player.vimeo.com/video/38632976?title=0&amp;amp;byline=0&amp;amp;portrait=0" frameborder="0" width="400" mozallowfullscreen webkitallowfullscreen allowfullscreen&gt;
&lt;/iframe&gt;
&lt;p&gt;
&lt;a href="http://vimeo.com/38632976"&gt;Visual Studio 11 Beta Roadshow Trailer&lt;/a&gt; from &lt;a href="http://vimeo.com/codingclass"&gt;MSDN
Coding Class (Microsoft)&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=92612110-dd6e-4608-ba8b-56589b4dc119" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,92612110-dd6e-4608-ba8b-56589b4dc119.aspx</comments>
      <category>Team System Server</category>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Um ein Team Projekt in Microsoft gehosteter TFS Lösung zu löchen, gibt es leider keine
Funktion in der UI. Es gibt allerdings einen Commandline-Aufruf, der das erlaubt:
</p>
        <p>
          <font face="Courier New">tfsdeleteproject /collection:</font>
          <a href="https://tfsonline.tfspreview.com/DefaultCollection">
            <font face="Courier New">&lt;</font>
          </a>
          <font face="Courier New">TeamProjectCollectionURL&gt;
&lt;TeamProjectName&gt;</font>
        </p>
        <p>
also z.B.
</p>
        <p>
          <font face="Courier New">tfsdeleteproject /collection:</font>
          <a href="https://tfsonline.tfspreview.com/DefaultCollection">
            <font face="Courier New">https://tfsonline.tfspreview.com/DefaultCollection</font>
          </a>
          <font face="Courier New"> Demo</font>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b" />
      </body>
      <title>Team Projekte in TFSPreview löschen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b.aspx</link>
      <pubDate>Thu, 01 Mar 2012 00:08:01 GMT</pubDate>
      <description>&lt;p&gt;
Um ein Team Projekt in Microsoft gehosteter TFS Lösung zu löchen, gibt es leider keine
Funktion in der UI. Es gibt allerdings einen Commandline-Aufruf, der das erlaubt:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;tfsdeleteproject /collection:&lt;/font&gt;&lt;a href="https://tfsonline.tfspreview.com/DefaultCollection"&gt;&lt;font face="Courier New"&gt;&amp;lt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;TeamProjectCollectionURL&amp;gt;
&amp;lt;TeamProjectName&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
also z.B.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;tfsdeleteproject /collection:&lt;/font&gt;&lt;a href="https://tfsonline.tfspreview.com/DefaultCollection"&gt;&lt;font face="Courier New"&gt;https://tfsonline.tfspreview.com/DefaultCollection&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; Demo&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,cd617deb-6ed0-4169-b95a-4f5e8c9f5c0b.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4f7ce47a-bd62-45d0-aa84-7c837e3e483d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4f7ce47a-bd62-45d0-aa84-7c837e3e483d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4f7ce47a-bd62-45d0-aa84-7c837e3e483d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4f7ce47a-bd62-45d0-aa84-7c837e3e483d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dass die <a href="http://blogs.msdn.com/b/jasonz/archive/2012/02/29/welcome-to-the-beta-of-visual-studio-11-and-net-framework-4-5.aspx">Beta
1 von Visual Studio 11 und Team Foundation Server 1</a>1 ab heute veröffentlicht sind,
wurde ja bereits an anderern Stellen ausreichend erwähnt. Ich möchte mit diesem Post
auf den Ranger “Visual Studio 11 Wave” hinweisen. Die Visual Studio ALM Rangers sind
eine Gruppe Freiwilliger die sich aus Mitarbeitern von Microsoft, MVPs und anderen
zusammensetzen und die sich zum Ziel gesetzt haben mit Hilfe von Dokumentation, Best
Practices, Hands on Labs und Tools die Visual Studio ALM Tools von Microsoft noch
produktiver zu machen.
</p>
        <p>
Die Rangers haben zeitgleich mit der neuen Beta einen <a href="http://blogs.msdn.com/b/visualstudioalm/archive/2012/02/29/welcome-to-visual-studio-11-alm-rangers-readiness-beta-wave.aspx">ganzen
Satz von Projekten</a> zu Visual Studio 11 veröffentlicht. Ich selbst habe beim Kanban
Projekt und beim Lab Management Projekt mitgewirkt, wer dazu also Fragen hat, kann
sich gerne direkt an mich wenden.
</p>
        <p>
          <img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/2475.Visual_2D00_Studio_2D00_Readiness_2D00_Quick_2D00_Reference_2D00_Poster_5F00_43FA8651.jpg" width="823" height="617" />
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f7ce47a-bd62-45d0-aa84-7c837e3e483d" />
      </body>
      <title>Ranger Projekte zur Beta von Visual Studio 11 und Team Foundation Server 11</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4f7ce47a-bd62-45d0-aa84-7c837e3e483d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4f7ce47a-bd62-45d0-aa84-7c837e3e483d.aspx</link>
      <pubDate>Wed, 29 Feb 2012 16:39:45 GMT</pubDate>
      <description>&lt;p&gt;
Dass die &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2012/02/29/welcome-to-the-beta-of-visual-studio-11-and-net-framework-4-5.aspx"&gt;Beta
1 von Visual Studio 11 und Team Foundation Server 1&lt;/a&gt;1 ab heute veröffentlicht sind,
wurde ja bereits an anderern Stellen ausreichend erwähnt. Ich möchte mit diesem Post
auf den Ranger “Visual Studio 11 Wave” hinweisen. Die Visual Studio ALM Rangers sind
eine Gruppe Freiwilliger die sich aus Mitarbeitern von Microsoft, MVPs und anderen
zusammensetzen und die sich zum Ziel gesetzt haben mit Hilfe von Dokumentation, Best
Practices, Hands on Labs und Tools die Visual Studio ALM Tools von Microsoft noch
produktiver zu machen.
&lt;/p&gt;
&lt;p&gt;
Die Rangers haben zeitgleich mit der neuen Beta einen &lt;a href="http://blogs.msdn.com/b/visualstudioalm/archive/2012/02/29/welcome-to-visual-studio-11-alm-rangers-readiness-beta-wave.aspx"&gt;ganzen
Satz von Projekten&lt;/a&gt; zu Visual Studio 11 veröffentlicht. Ich selbst habe beim Kanban
Projekt und beim Lab Management Projekt mitgewirkt, wer dazu also Fragen hat, kann
sich gerne direkt an mich wenden.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-45-92-metablogapi/2475.Visual_2D00_Studio_2D00_Readiness_2D00_Quick_2D00_Reference_2D00_Poster_5F00_43FA8651.jpg" width="823" height="617"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f7ce47a-bd62-45d0-aa84-7c837e3e483d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4f7ce47a-bd62-45d0-aa84-7c837e3e483d.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8028d3d0-a4be-403e-bfeb-60a9a6fde549</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8028d3d0-a4be-403e-bfeb-60a9a6fde549.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8028d3d0-a4be-403e-bfeb-60a9a6fde549.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8028d3d0-a4be-403e-bfeb-60a9a6fde549</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Build System des TFS bietet die Möglichkeit einfach neue Parameter für den Build-Workflow
zu definieren. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb.png" width="553" height="121" />
          </a> 
</p>
        <p>
In diesem Beispiel habe ich ein neues String-Argument mit dem Namen “ServerPath” hinzugefügt.
Dieses Argument können nun in der Build Definition eingestellt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_1.png" width="562" height="155" />
          </a>
        </p>
        <p>
Etwas unschön ist noch, dass wir den Pfad als Text eingeben müssen, schöner wäre hier,
wenn wir den Pfad aus der Versionsverwaltung auswählen können. Man kann für die Attribute
einen Editor angeben und glücklicherweise gibt es für die Auswahl einer Datei oder
eines Pfades aus der Versionsverwaltung bereits einen entsprechenden Editor. Den wollen
wir nun einbinden. Dazu müssen wir die Metadaten konfigurieren.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_8.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_3.png" width="607" height="100" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_4.png" width="343" height="407" />
          </a>
        </p>
        <p>
Der Parameter Name muss hier genau dem Argument-Name entsprechen. Und nun kommt der
entscheidende Punkt, wir geben im Feld Editor “<font face="Courier New">Microsoft.TeamFoundation.Build.Controls.ServerFileBrowserEditor,
Microsoft.TeamFoundation.Build.Controls</font>” ein. Damit wird nun neben dem Eingabefeld
in der Build-Definition ein Button angezeigt mit dem sich der entsprechende Editor
öffnen lässt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_12.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_5.png" width="469" height="372" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8028d3d0-a4be-403e-bfeb-60a9a6fde549" />
      </body>
      <title>Build Argumente mit Serverpfad befüllen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8028d3d0-a4be-403e-bfeb-60a9a6fde549.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8028d3d0-a4be-403e-bfeb-60a9a6fde549.aspx</link>
      <pubDate>Wed, 01 Feb 2012 21:58:10 GMT</pubDate>
      <description>&lt;p&gt;
Das Build System des TFS bietet die Möglichkeit einfach neue Parameter für den Build-Workflow
zu definieren. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb.png" width="553" height="121"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
In diesem Beispiel habe ich ein neues String-Argument mit dem Namen “ServerPath” hinzugefügt.
Dieses Argument können nun in der Build Definition eingestellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_1.png" width="562" height="155"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Etwas unschön ist noch, dass wir den Pfad als Text eingeben müssen, schöner wäre hier,
wenn wir den Pfad aus der Versionsverwaltung auswählen können. Man kann für die Attribute
einen Editor angeben und glücklicherweise gibt es für die Auswahl einer Datei oder
eines Pfades aus der Versionsverwaltung bereits einen entsprechenden Editor. Den wollen
wir nun einbinden. Dazu müssen wir die Metadaten konfigurieren.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_3.png" width="607" height="100"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_4.png" width="343" height="407"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Der Parameter Name muss hier genau dem Argument-Name entsprechen. Und nun kommt der
entscheidende Punkt, wir geben im Feld Editor “&lt;font face="Courier New"&gt;Microsoft.TeamFoundation.Build.Controls.ServerFileBrowserEditor,
Microsoft.TeamFoundation.Build.Controls&lt;/font&gt;” ein. Damit wird nun neben dem Eingabefeld
in der Build-Definition ein Button angezeigt mit dem sich der entsprechende Editor
öffnen lässt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/d5ad3aad0acb_134E8/image_thumb_5.png" width="469" height="372"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8028d3d0-a4be-403e-bfeb-60a9a6fde549" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8028d3d0-a4be-403e-bfeb-60a9a6fde549.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <b>Thomas Trotzki, ein Kollege von mir, führt im Auftrag von Microsoft die C++ Days
durch. Es gibt noch vereinzelt Plätze. Wer also mit C++ arbeitet dem sei diese Veranstaltungsreihe
wärmstens empfolen.</b>
        </p>
        <p>
          <b>
            <img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="C++ Day 2012" border="0" alt="C++ Day 2012" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/5127.image13_5F00_3AD0D60E.png" width="598" height="223" />
          </b>
        </p>
        <p>
          <b>C++ geht mit der Zeit – gehen Sie mit! Wir zeigen Ihnen die Neuerungen und Trends
in der Microsoft C++-Welt, von neuen Sprachfeatures über effektive Parallelisierung
bis hin zu professionellem Software Engineering durch Application Lifecycle Management.
Termine gibt es in Berlin, Bad Homburg, Karlsruhe oder Köln. Die Teilnahme ist natürlich
kostenlos, aber die Plätze sind begrenzt.</b>
        </p>
        <p>
Zugegeben: In den letzten Jahren waren die Neuerungen rund um die „managed“ .Net-Programmierung
mit einschlägigen Sprachen wie C# im Fokus der Aufmerksamkeit. So ist .Net zu einer
der produktivsten Entwicklungsplattformen gewachsen. 
</p>
        <p>
Doch C++ ist zurück im Rampenlicht: Auch im 21. Jahrhundert wird C++ als Programmiersprache
nicht weg zu denken sein. In C++ können Sie stets selbst zwischen Performance und
Abstraktion wählen. Kein unnötiger Overhead, bei Bedarf volle Kontrolle. Und genau
das wird C++ auch in der Zukunft seinen Platz unter den Programmiersprachen sichern
– der Trend immer komplexere Anwendungen auf immer kleinere Hardware zu bringen unterstützt
dies nachhaltig. 
</p>
        <p>
Seit Visual Studio 6.0 hat sich auch in der Microsoft C++-Welt viel getan –also höchste
Zeit für ein Wissens-Update. 
</p>
        <h6>Wo? Wann?
</h6>
        <p>
2.2.2012 14:00- 18:00 <strong>Berlin</strong>: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502632&amp;Culture=de-DE">ANMELDUNG</a><br />
7.2.2012 14:00- 18:00 <strong>Bad Homburg</strong>: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502635&amp;Culture=de-DE">ANMELDUNG</a><br />
13.2.2012 14:00- 18:00 <strong>Karlsruhe</strong>: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502637&amp;Culture=de-DE">ANMELDUNG</a><br />
5.3.2012 14:00- 18:00<strong> Köln</strong>: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502646&amp;Culture=de-DE">ANMELDUNG</a><br />
Teilnahme: Kostenlos 
</p>
        <p>
Der C++ Day 2012 wird freundlicherweise unterstützt von artiso. 
</p>
        <h5>Folgende Themen erwarten Sie:
</h5>
        <h6>C++ 11: Modernes C++ im 21. Jahrhundert
</h6>
        <p>
C++ bleibt aktuell – neue Sprachfeatures machen den nativen Klassiker fit für neue
Herausforderungen. Dieser Vortrag gibt Ihnen einen Überblick über die wesentlichsten
Neuerungen in C++ 11 – wie beispielsweise Smartpointer mit Reference-Counting (<i>shared_ptr</i>),
Lambda-Expressions, neue Container-Klassen, Iteratoren und Sprachkonstrukte wie for_each
sowie RValue References. 
</p>
        <h6>Parallel-Power in Visual Studio 11: Konzepte und Tools
</h6>
        <p>
Effektive parallele Programmierung erhöht die Performance in vielen Fällen drastisch,
braucht aber das richtige Know-How und spezialisierte Tools. Denn bei stetig steigender
Anzahl an Cores und CPUs wird es immer wichtiger, das Anwendungsmodell in Richtung
Skalierbarkeit hinsichtlich Multiprocessing auszulegen. Auch das Debugging bietet
einige Herausforderungen. Verschaffen Sie sich einen Überblick über die neuen Konzepte
rund um Parallelisierung in Windows API, Concurrency Runtime und Visual Studio. 
</p>
        <h6>Application Lifecycle Management für C++: Die nächste Generation
</h6>
        <p>
Application Lifecycle Management ist mittlerweile auch in der nativen Entwicklung
Pflicht: Mit Team Foundation Server haben Projektteams jeder Größe ein zentrales Portal
für Zusammenarbeit, Versionskontrolle, Work Item Tracking, Build-Management, Prozessunterstützung
und Fortschrittsreports . Dies ermöglicht den Mitgliedern von Teams, besser und effizienter
zusammenzuarbeiten. Der Haken bisher: Die wichtigsten Features wurden auch für C++
unterstützt, aber bestimmte interessante Features waren der .NET Welt vorbehalten.
Die gute Nachricht: Visual Studio 11 zieht hier nun nach – sehen Sie, welche Neuerungen
sie erwarten. 
</p>
        <h5>Der Referent 
</h5>
        <h6>
        </h6>
        <p>
          <a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/2043.image_5F00_7AFC0DA5.png">
            <img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/4118.image_5F00_thumb_5F00_5CCE4FF1.png" width="95" height="118" />
          </a>
          <a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/8306.image_5F00_50602CC8.png">
            <img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/7142.image_5F00_thumb_5F00_6F36A0A6.png" width="65" height="46" />
          </a>
        </p>
        <p>
Thomas Trotzki ist ALM Consultant bei der artiso AG nahe Ulm und Microsoft-C++-Profi
der ersten Stunde. 
</p>
        <p>
Mit Microsoft C++ und den MFC beschäftigt er sich intensiv seit den ersten Beta-Versionen
zu Microsoft C/C++ 7.0, also bereits vor der Geburtsstunde von Visual C++ und Visual
Studio. 
</p>
        <p>
Technologisch ist er neben C++ und den MFC auch mit COM/DCOM und der gesamten „Managed
Welt“ vertraut und hat umfangreiche Expertise im Application Lifecycle Management.
Zurzeit betreut er Kunden bei der Einführung von Microsoft Team Foundation Server
und berät bei der Etablierung eines Application Lifecycle Management in deren Entwicklungsabteilungen. <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa" /></p>
      </body>
      <title>C++ Day–Informieren sie sich über die inzwischen wieder umfangreichen Neuerungen im Bereich C++</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa.aspx</link>
      <pubDate>Tue, 31 Jan 2012 13:24:51 GMT</pubDate>
      <description>&lt;p&gt;
&lt;b&gt;Thomas Trotzki, ein Kollege von mir, führt im Auftrag von Microsoft die C++ Days
durch. Es gibt noch vereinzelt Plätze. Wer also mit C++ arbeitet dem sei diese Veranstaltungsreihe
wärmstens empfolen.&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="C++ Day 2012" border="0" alt="C++ Day 2012" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/5127.image13_5F00_3AD0D60E.png" width="598" height="223"&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;C++ geht mit der Zeit – gehen Sie mit! Wir zeigen Ihnen die Neuerungen und Trends
in der Microsoft C++-Welt, von neuen Sprachfeatures über effektive Parallelisierung
bis hin zu professionellem Software Engineering durch Application Lifecycle Management.
Termine gibt es in Berlin, Bad Homburg, Karlsruhe oder Köln. Die Teilnahme ist natürlich
kostenlos, aber die Plätze sind begrenzt.&lt;/b&gt; 
&lt;p&gt;
Zugegeben: In den letzten Jahren waren die Neuerungen rund um die „managed“ .Net-Programmierung
mit einschlägigen Sprachen wie C# im Fokus der Aufmerksamkeit. So ist .Net zu einer
der produktivsten Entwicklungsplattformen gewachsen. 
&lt;p&gt;
Doch C++ ist zurück im Rampenlicht: Auch im 21. Jahrhundert wird C++ als Programmiersprache
nicht weg zu denken sein. In C++ können Sie stets selbst zwischen Performance und
Abstraktion wählen. Kein unnötiger Overhead, bei Bedarf volle Kontrolle. Und genau
das wird C++ auch in der Zukunft seinen Platz unter den Programmiersprachen sichern
– der Trend immer komplexere Anwendungen auf immer kleinere Hardware zu bringen unterstützt
dies nachhaltig. 
&lt;p&gt;
Seit Visual Studio 6.0 hat sich auch in der Microsoft C++-Welt viel getan –also höchste
Zeit für ein Wissens-Update. 
&lt;h6&gt;Wo? Wann?
&lt;/h6&gt;
&lt;p&gt;
2.2.2012 14:00- 18:00 &lt;strong&gt;Berlin&lt;/strong&gt;: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502632&amp;amp;Culture=de-DE"&gt;ANMELDUNG&lt;/a&gt;
&lt;br&gt;
7.2.2012 14:00- 18:00 &lt;strong&gt;Bad Homburg&lt;/strong&gt;: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502635&amp;amp;Culture=de-DE"&gt;ANMELDUNG&lt;/a&gt;
&lt;br&gt;
13.2.2012 14:00- 18:00 &lt;strong&gt;Karlsruhe&lt;/strong&gt;: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502637&amp;amp;Culture=de-DE"&gt;ANMELDUNG&lt;/a&gt;
&lt;br&gt;
5.3.2012 14:00- 18:00&lt;strong&gt; Köln&lt;/strong&gt;: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502646&amp;amp;Culture=de-DE"&gt;ANMELDUNG&lt;/a&gt;
&lt;br&gt;
Teilnahme: Kostenlos 
&lt;p&gt;
Der C++ Day 2012 wird freundlicherweise unterstützt von artiso. 
&lt;h5&gt;Folgende Themen erwarten Sie:
&lt;/h5&gt;
&lt;h6&gt;C++ 11: Modernes C++ im 21. Jahrhundert
&lt;/h6&gt;
&lt;p&gt;
C++ bleibt aktuell – neue Sprachfeatures machen den nativen Klassiker fit für neue
Herausforderungen. Dieser Vortrag gibt Ihnen einen Überblick über die wesentlichsten
Neuerungen in C++ 11 – wie beispielsweise Smartpointer mit Reference-Counting (&lt;i&gt;shared_ptr&lt;/i&gt;),
Lambda-Expressions, neue Container-Klassen, Iteratoren und Sprachkonstrukte wie for_each
sowie RValue References. 
&lt;h6&gt;Parallel-Power in Visual Studio 11: Konzepte und Tools
&lt;/h6&gt;
&lt;p&gt;
Effektive parallele Programmierung erhöht die Performance in vielen Fällen drastisch,
braucht aber das richtige Know-How und spezialisierte Tools. Denn bei stetig steigender
Anzahl an Cores und CPUs wird es immer wichtiger, das Anwendungsmodell in Richtung
Skalierbarkeit hinsichtlich Multiprocessing auszulegen. Auch das Debugging bietet
einige Herausforderungen. Verschaffen Sie sich einen Überblick über die neuen Konzepte
rund um Parallelisierung in Windows API, Concurrency Runtime und Visual Studio. 
&lt;h6&gt;Application Lifecycle Management für C++: Die nächste Generation
&lt;/h6&gt;
&lt;p&gt;
Application Lifecycle Management ist mittlerweile auch in der nativen Entwicklung
Pflicht: Mit Team Foundation Server haben Projektteams jeder Größe ein zentrales Portal
für Zusammenarbeit, Versionskontrolle, Work Item Tracking, Build-Management, Prozessunterstützung
und Fortschrittsreports . Dies ermöglicht den Mitgliedern von Teams, besser und effizienter
zusammenzuarbeiten. Der Haken bisher: Die wichtigsten Features wurden auch für C++
unterstützt, aber bestimmte interessante Features waren der .NET Welt vorbehalten.
Die gute Nachricht: Visual Studio 11 zieht hier nun nach – sehen Sie, welche Neuerungen
sie erwarten. 
&lt;h5&gt;Der Referent 
&lt;/h5&gt;
&lt;h6&gt;
&lt;/h6&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/2043.image_5F00_7AFC0DA5.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/4118.image_5F00_thumb_5F00_5CCE4FF1.png" width="95" height="118"&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/8306.image_5F00_50602CC8.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/7142.image_5F00_thumb_5F00_6F36A0A6.png" width="65" height="46"&gt;&lt;/a&gt; 
&lt;p&gt;
Thomas Trotzki ist ALM Consultant bei der artiso AG nahe Ulm und Microsoft-C++-Profi
der ersten Stunde. 
&lt;p&gt;
Mit Microsoft C++ und den MFC beschäftigt er sich intensiv seit den ersten Beta-Versionen
zu Microsoft C/C++ 7.0, also bereits vor der Geburtsstunde von Visual C++ und Visual
Studio. 
&lt;p&gt;
Technologisch ist er neben C++ und den MFC auch mit COM/DCOM und der gesamten „Managed
Welt“ vertraut und hat umfangreiche Expertise im Application Lifecycle Management.
Zurzeit betreut er Kunden bei der Einführung von Microsoft Team Foundation Server
und berät bei der Etablierung eines Application Lifecycle Management in deren Entwicklungsabteilungen. &lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3957b8bd-0eee-4f75-bfc9-4ba5f9c01dfa.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e27581c4-0b61-4df3-aac2-ca9ad25210ba</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e27581c4-0b61-4df3-aac2-ca9ad25210ba.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e27581c4-0b61-4df3-aac2-ca9ad25210ba.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e27581c4-0b61-4df3-aac2-ca9ad25210ba</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der TFS bzw. der MTM unterstützen leider keine Versionierung von Test Cases. Wenn
man nun für unterschiedliche Versionen einer Software Test Cases verwalten möchte,
muss man die Test Cases kopieren. Wie damit die Versionierung von Test Cases abgebildet
werden kann, habe ich <a href="http://www.artiso.com/ProBlog/PermaLink,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx">hier</a> beschrieben.
</p>
        <p>
Um das Kopieren größerer Mengen von Test Cases zu vereinfachen, gibt es nun das Test
Case Copy Tool von Anna Russo.
</p>
        <p>
          <a href="http://www.improvingsoftwarequality.com/2012/01/new-version-of-bulk-copy-test-cases.html">http://www.improvingsoftwarequality.com/2012/01/new-version-of-bulk-copy-test-cases.html</a>
        </p>
        <p>
          <img src="http://4.bp.blogspot.com/-GvIijcEwz3w/TwYrObhMz5I/AAAAAAAAAFw/U-h3k4T6hNk/s1600/Anna+Russo+Bulk+Copy+Test+Cases+Tool+2b.png" width="841" height="555" />
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e27581c4-0b61-4df3-aac2-ca9ad25210ba" />
      </body>
      <title>Tool um Test Cases im TFS zu kopieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e27581c4-0b61-4df3-aac2-ca9ad25210ba.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e27581c4-0b61-4df3-aac2-ca9ad25210ba.aspx</link>
      <pubDate>Tue, 31 Jan 2012 09:17:17 GMT</pubDate>
      <description>&lt;p&gt;
Der TFS bzw. der MTM unterstützen leider keine Versionierung von Test Cases. Wenn
man nun für unterschiedliche Versionen einer Software Test Cases verwalten möchte,
muss man die Test Cases kopieren. Wie damit die Versionierung von Test Cases abgebildet
werden kann, habe ich &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx"&gt;hier&lt;/a&gt; beschrieben.
&lt;/p&gt;
&lt;p&gt;
Um das Kopieren größerer Mengen von Test Cases zu vereinfachen, gibt es nun das Test
Case Copy Tool von Anna Russo.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.improvingsoftwarequality.com/2012/01/new-version-of-bulk-copy-test-cases.html"&gt;http://www.improvingsoftwarequality.com/2012/01/new-version-of-bulk-copy-test-cases.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://4.bp.blogspot.com/-GvIijcEwz3w/TwYrObhMz5I/AAAAAAAAAFw/U-h3k4T6hNk/s1600/Anna+Russo+Bulk+Copy+Test+Cases+Tool+2b.png" width="841" height="555"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e27581c4-0b61-4df3-aac2-ca9ad25210ba" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e27581c4-0b61-4df3-aac2-ca9ad25210ba.aspx</comments>
      <category>Testing</category>
      <category>TFS 2010</category>
      <category>Tools</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3ce5e6cb-3c43-4995-9858-94e833b02c00</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3ce5e6cb-3c43-4995-9858-94e833b02c00.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3ce5e6cb-3c43-4995-9858-94e833b02c00.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3ce5e6cb-3c43-4995-9858-94e833b02c00</wfw:commentRss>
      <title>IE 9 Download Fenster öffnet sich nicht mehr</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3ce5e6cb-3c43-4995-9858-94e833b02c00.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3ce5e6cb-3c43-4995-9858-94e833b02c00.aspx</link>
      <pubDate>Mon, 28 Nov 2011 20:22:02 GMT</pubDate>
      <description>&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Ich
hatte im IE das Problem, dass sich das Download-Fenster nicht mehr öffnen ließ. Sowohl
aus der Download-Leiste am unteren Fensterrand als auch über “View Downloads” ist
einfach nichts passiert. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt"&gt;Das
Problem ließ sich aber ganz einfach lösen (wenn man weiß wie’s geht &lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt; mso-fareast-language: de; mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/IE-9-Download-Fenster-ffnet-sich-nicht-m_1275A/clip_image001_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/IE-9-Download-Fenster-ffnet-sich-nicht-m_1275A/clip_image001_thumb.png" width="19" height="19" v:shapes="Picture_x0020_2"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt"&gt;).
Man muss nur die Download-History löschen.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-fareast-language: de; mso-no-proof: yes"&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="mso-fareast-language: de; mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/IE-9-Download-Fenster-ffnet-sich-nicht-m_1275A/clip_image002_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/IE-9-Download-Fenster-ffnet-sich-nicht-m_1275A/clip_image002_thumb.png" width="406" height="551" v:shapes="Picture_x0020_1"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3ce5e6cb-3c43-4995-9858-94e833b02c00" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3ce5e6cb-3c43-4995-9858-94e833b02c00.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=d058ca05-f775-4763-95d6-53b9751408da</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,d058ca05-f775-4763-95d6-53b9751408da.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,d058ca05-f775-4763-95d6-53b9751408da.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=d058ca05-f775-4763-95d6-53b9751408da</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der TFS bietet die schöne Funktion, Benachrichtigungen per Mail zu versenden. Dafür
gibt es eine einfache Einstellung in der Team Foundation Server Administration Console
unter dem Punkt „Email Alert Settings“.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image002_2.jpg">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image002_thumb.jpg" width="636" height="423" />
          </a> 
</p>
        <p>
Leider kommt es hier manchmal zu dem Problem, dass die Kommunikation zwischen dem
TFS und dem SMTP-Server nicht auf Anhieb klappt und der TFS bietet da leider keine
vernünftigen Analyse-Möglichkeiten. Um die Kommunikation zu testen kann man sich behelfen
indem man einen Telnet-Client benutzt. Dieser ist auf dem Windows 2008 Server nicht
mehr standardmäßig vorhanden, also muss man den erst mal installieren. Dazu einfach
im Server-Manager unter Features den Telnet-Client hinzufügen. 
</p>
        <p>
  
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image004_2.jpg">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image004_thumb.jpg" width="497" height="368" />
          </a>
        </p>
        <p>
  
</p>
        <p>
Dann gibt man in der Kommandozeile folgenden Befehl ein: 
</p>
        <p>
  
</p>
        <p>
          <font face="Courier New">telnet mymailserver 25 </font>
        </p>
        <p>
  
</p>
        <p>
Damit öffnet sich nun eine Telnet session und der SMTM Server gibt eine entsprechende
Meldung aus. Darunter kann man nun Kommandos eingeben. Folgende Abfolge muss man dabei
nacheinander eingeben und zwar ohne sich zu vertippen, da eine Korrektur nicht funktioniert.
Blau dargestellt sind die jeweiligen Antworten des Systems. 
</p>
        <p>
  
</p>
        <p>
          <font face="Courier New">helo </font>
        </p>
        <p>
          <font face="Courier New">
            <font color="#4f81bd">250 VS2010.Mobile.Demo Hello [192.168.77.66]</font>
          </font>
        </p>
        <p>
          <font face="Courier New">mail from:tfs@artiso.com </font>
        </p>
        <p>
          <font face="Courier New">
            <font color="#4f81bd">250 2.1.0 tfs@artiso.com....Sender
OK</font>
          </font>
        </p>
        <p>
          <font face="Courier New">rcpt to:tschissler@artiso.com </font>
        </p>
        <p>
          <font face="Courier New">
            <font color="#4f81bd">250 2.1.5 tschissler@artiso.com</font>
          </font>
        </p>
        <p>
          <font face="Courier New">data </font>
        </p>
        <p>
          <font face="Courier New">
            <font color="#4f81bd">354 Start mail input; end with &lt;CRLF&gt;.&lt;CRLF&gt;</font>
          </font>
        </p>
        <p>
          <font face="Courier New">Subject: TestMail </font>
        </p>
        <p>
          <font face="Courier New">Das ist eine Test-Mail</font>
        </p>
        <p>
  
</p>
        <p>
Abgeschlossen wird die Eingabe durch Drücken von Enter, einem Punkt (.) und dann nochmals
Enter. 
</p>
        <p>
  
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image006_2.jpg">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image006_thumb.jpg" width="504" height="252" />
          </a>
        </p>
        <p>
Wenn so eine E-Mail zugestellt wird und man die hier verwendeten Serveradresse und
Absender nun auch im TFS einträgt, sollte die Kommunikation auch dort funktionieren.
Andernfalls sollte der Telnet eine Fehlermeldung ausgeben. Hilfreich ist, wenn man
auf dem TFS mit demselben Account angemeldet ist mit dem auch der TFS läuft da einige
SMTP-Server auch den angemeldeten User prüfen. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d058ca05-f775-4763-95d6-53b9751408da" />
      </body>
      <title>e-Mail Kommunikation für den TFS prüfen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,d058ca05-f775-4763-95d6-53b9751408da.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,d058ca05-f775-4763-95d6-53b9751408da.aspx</link>
      <pubDate>Thu, 10 Nov 2011 21:30:04 GMT</pubDate>
      <description>&lt;p&gt;
Der TFS bietet die schöne Funktion, Benachrichtigungen per Mail zu versenden. Dafür
gibt es eine einfache Einstellung in der Team Foundation Server Administration Console
unter dem Punkt „Email Alert Settings“.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image002_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image002_thumb.jpg" width="636" height="423"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Leider kommt es hier manchmal zu dem Problem, dass die Kommunikation zwischen dem
TFS und dem SMTP-Server nicht auf Anhieb klappt und der TFS bietet da leider keine
vernünftigen Analyse-Möglichkeiten. Um die Kommunikation zu testen kann man sich behelfen
indem man einen Telnet-Client benutzt. Dieser ist auf dem Windows 2008 Server nicht
mehr standardmäßig vorhanden, also muss man den erst mal installieren. Dazu einfach
im Server-Manager unter Features den Telnet-Client hinzufügen. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image004_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image004_thumb.jpg" width="497" height="368"&gt;&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Dann gibt man in der Kommandozeile folgenden Befehl ein: 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;font face="Courier New"&gt;telnet mymailserver 25 &lt;/font&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Damit öffnet sich nun eine Telnet session und der SMTM Server gibt eine entsprechende
Meldung aus. Darunter kann man nun Kommandos eingeben. Folgende Abfolge muss man dabei
nacheinander eingeben und zwar ohne sich zu vertippen, da eine Korrektur nicht funktioniert.
Blau dargestellt sind die jeweiligen Antworten des Systems. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;font face="Courier New"&gt;helo &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&lt;font color="#4f81bd"&gt;250 VS2010.Mobile.Demo Hello [192.168.77.66]&lt;/font&gt; &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;mail from:tfs@artiso.com &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&lt;font color="#4f81bd"&gt;250 2.1.0 tfs@artiso.com....Sender
OK&lt;/font&gt; &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;rcpt to:tschissler@artiso.com &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&lt;font color="#4f81bd"&gt;250 2.1.5 tschissler@artiso.com&lt;/font&gt; &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;data &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&lt;font color="#4f81bd"&gt;354 Start mail input; end with &amp;lt;CRLF&amp;gt;.&amp;lt;CRLF&amp;gt;&lt;/font&gt; &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;Subject: TestMail &lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;Das ist eine Test-Mail&lt;/font&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Abgeschlossen wird die Eingabe durch Drücken von Enter, einem Punkt (.) und dann nochmals
Enter. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image006_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/e-Mail-Kommunikation-fr-den-TFS-prfen_136BE/clip_image006_thumb.jpg" width="504" height="252"&gt;&lt;/a&gt; 
&lt;p&gt;
Wenn so eine E-Mail zugestellt wird und man die hier verwendeten Serveradresse und
Absender nun auch im TFS einträgt, sollte die Kommunikation auch dort funktionieren.
Andernfalls sollte der Telnet eine Fehlermeldung ausgeben. Hilfreich ist, wenn man
auf dem TFS mit demselben Account angemeldet ist mit dem auch der TFS läuft da einige
SMTP-Server auch den angemeldeten User prüfen. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d058ca05-f775-4763-95d6-53b9751408da" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,d058ca05-f775-4763-95d6-53b9751408da.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0f2cfea1-9001-40c3-b7ce-71594c666c2c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0f2cfea1-9001-40c3-b7ce-71594c666c2c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Eine häufige Frage ist, wie ich mit dem TFS und Microsoft Test Manager (MTM) die Versionierung
von Test Cases bewerkstellige. Ziel dabei ist, dass ich verschiedene Releases meiner
Software mit den dazu passenden Test Cases testen möchte, also z.B. für die aktuelle
Entwicklung nutze ich einen neueren Test Cases da sich die Funktion inzwischen verändert
hat aber wenn ich einen Hotfix für eine frühere Version testen möchte, benötige ich
dafür natürlich den passenden Test Cases zu diesem Release.
</p>
        <p>
Die aktuelle Lösung sieht im MTM so aus, dass man einen Test-Plan je Version einrichtet.
In diesem Test-Plan habe ich dann die Test-Cases für die aktuelle Version referenziert.
Für die nächste Version legt man einen neuen Test-Plan an und kopiert die Test-Suites. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_thumb_2.png" width="356" height="417" />
          </a>
        </p>
        <p>
Durch dieses Kopieren wird ein neuer Test-Plan angelegt der dann allerdings auf die
selben Test Cases verweist wie die der Plan für die erste Version. Das ist ja genau
die Ausgangssituation die man in den meisten Fällen haben möchte denn die meisten
Test Cases sind ja in der neuen Version gleich wie in der Vorgänger-Version und diese
werden ggf. durch neue Test Cases (z.B. 4a) ergänzt. Wenn sich ein Test Case nun ändert,
dann darf dieser im neuen Test-Plan nicht angepasst werden, sonst würde ja damit auch
der Test-Plan der Vorgängerversion geändert werden. Statt dessen muss der Test Case
kopiert und die Kopie (2b) dem neuen Test Plan zugeordnet werden. Die Kopie kann nun
geändert werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_thumb.png" width="437" height="188" />
          </a>
        </p>
        <p>
Wer eine größere Menge von Test Cases kopieren muss kann dafür übrigens auch ein Tool
verwenden das Anna Russo veröffentlicht hat:
</p>
        <p>
          <a href="http://improvingsoftwarequality.blogspot.com/2011/11/bulk-copy-test-cases-tool-for-microsoft.html">http://improvingsoftwarequality.blogspot.com/2011/11/bulk-copy-test-cases-tool-for-microsoft.html</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0f2cfea1-9001-40c3-b7ce-71594c666c2c" />
      </body>
      <title>Versionierung von Test Cases im Microsoft Test Manager</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx</link>
      <pubDate>Wed, 09 Nov 2011 13:23:52 GMT</pubDate>
      <description>&lt;p&gt;
Eine häufige Frage ist, wie ich mit dem TFS und Microsoft Test Manager (MTM) die Versionierung
von Test Cases bewerkstellige. Ziel dabei ist, dass ich verschiedene Releases meiner
Software mit den dazu passenden Test Cases testen möchte, also z.B. für die aktuelle
Entwicklung nutze ich einen neueren Test Cases da sich die Funktion inzwischen verändert
hat aber wenn ich einen Hotfix für eine frühere Version testen möchte, benötige ich
dafür natürlich den passenden Test Cases zu diesem Release.
&lt;/p&gt;
&lt;p&gt;
Die aktuelle Lösung sieht im MTM so aus, dass man einen Test-Plan je Version einrichtet.
In diesem Test-Plan habe ich dann die Test-Cases für die aktuelle Version referenziert.
Für die nächste Version legt man einen neuen Test-Plan an und kopiert die Test-Suites. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_thumb_2.png" width="356" height="417"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Durch dieses Kopieren wird ein neuer Test-Plan angelegt der dann allerdings auf die
selben Test Cases verweist wie die der Plan für die erste Version. Das ist ja genau
die Ausgangssituation die man in den meisten Fällen haben möchte denn die meisten
Test Cases sind ja in der neuen Version gleich wie in der Vorgänger-Version und diese
werden ggf. durch neue Test Cases (z.B. 4a) ergänzt. Wenn sich ein Test Case nun ändert,
dann darf dieser im neuen Test-Plan nicht angepasst werden, sonst würde ja damit auch
der Test-Plan der Vorgängerversion geändert werden. Statt dessen muss der Test Case
kopiert und die Kopie (2b) dem neuen Test Plan zugeordnet werden. Die Kopie kann nun
geändert werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Versionierung-von-Test-Cases-im-Microsof_C1DA/image_thumb.png" width="437" height="188"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Wer eine größere Menge von Test Cases kopieren muss kann dafür übrigens auch ein Tool
verwenden das Anna Russo veröffentlicht hat:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://improvingsoftwarequality.blogspot.com/2011/11/bulk-copy-test-cases-tool-for-microsoft.html"&gt;http://improvingsoftwarequality.blogspot.com/2011/11/bulk-copy-test-cases-tool-for-microsoft.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0f2cfea1-9001-40c3-b7ce-71594c666c2c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0f2cfea1-9001-40c3-b7ce-71594c666c2c.aspx</comments>
      <category>Team System Server</category>
      <category>Testing</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=49235be7-f31e-4c9f-8c2e-7f8639ee6fb6</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,49235be7-f31e-4c9f-8c2e-7f8639ee6fb6.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,49235be7-f31e-4c9f-8c2e-7f8639ee6fb6.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=49235be7-f31e-4c9f-8c2e-7f8639ee6fb6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Will man auf einen TFS über eine Internet-Verbindung zugreifen, dann bieten sich zwei
Wege an: Entweder per VPN oder per SSL. Der Weg über SSL ist eigentlich der einfachere,
Nachteil dabei ist allerdings, dass man ein Zertifikat von einer offiziellen Registrierungsstelle
kaufen muss. Aber es geht auch ohne.
</p>
        <p>
Dazu muss man zunächst ein Tool aus dem IIS 6 Ressource-Kit herunterladen. Das Tool
gibt es auch einzeln <a href="http://o-o-s.de/wp-content/2007/03/selfssl.zip">hier</a> zum
Download.
</p>
        <p>
Damit können wir nun ein SSL-Zertifikat generieren.
</p>
        <p>
selfssl /N:CN=my.domain.com /K:2048 /V:730 /P:443 /S:3 /t
</p>
        <p>
Der Parameter /V gibt die Gültigkeitsdauer in Tagen an, der Parameter /P den Port
auf dem SSL laufen soll und /S die ID der Web Site des TFS. Letztere bekommt man einfach
heraus indem man die Advanced Settings der Web Site aufruft.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb.png" width="565" height="205" />
          </a>
        </p>
        <p>
Da der TFS im Normalfall ja nicht direkt mit dem Internet verbunden ist, muss der
Port noch entsprechend auf der Firewall auf den jeweiligen Server auf dem der TFS
läuft weitergeleitet werden. Diese Einstellung hängt natürlich von der jewweils eingesetzten
Firewall ab.
</p>
        <p>
Nun können wir eigentlich den Server bereits über den Web Access erreichen, z.B. https://my.domain.com/tfs/web
. Achtung hier wird beim Einsatz von SSL kein Port mit angegeben sofern der Standard-Port
verwendet wird. Im Browser bekommt man zwar eine Meldung, dass das Zertifikat nicht
gültig ist, aber diese kann man entsprechend übergehen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb_1.png" width="571" height="238" />
          </a>
        </p>
        <p>
Das Problem ist, dass Visual Studio sich so nicht verbinden mag. Gibt man im Registrierungsdialog
für neue Server die URL ein und stellt das Protokoll auf https dann erhält man folgenden
Fehler:
</p>
        <p>
---------------------------<br />
Microsoft Visual Studio<br />
---------------------------<br />
Microsoft Visual Studio
</p>
        <p>
TF31002: Unable to connect to this Team Foundation Server: my.domain.com.
</p>
        <p>
Team Foundation Server Url: <a href="https://my.domain.com/tfs">https://my.domain.com/tfs</a></p>
        <p>
Possible reasons for failure include:
</p>
        <p>
- The name, port number, or protocol for the Team Foundation Server is incorrect.
</p>
        <p>
- The Team Foundation Server is offline.
</p>
        <p>
- The password has expired or is incorrect.
</p>
        <p>
Technical information (for administrator):
</p>
        <p>
The underlying connection was closed: Could not establish trust relationship for the
SSL/TLS secure channel.<br />
---------------------------<br />
OK   Help   
<br />
---------------------------<br /></p>
        <p>
 
</p>
        <p>
Als Lösung müssen wir auf den Clients das Zertifikat installieren. Dazu muss man das
Zertifikat auf dem Server zunächst exportieren. Im IIS Manager dazu einfach auf dem
Server die Option Server Certificates doppelt klicken.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb_4.png" width="455" height="233" />
          </a>
        </p>
        <p>
Dann kann das Zertifikat über die Option Export in eine Datei exportiert werden indem
das Ziel und ein Passwort angegeben werden. Diese Datei kopieren wir nun auf den Client
und klicken diese dort doppelt an. Es öffnet sich der Certificate Import Wizard. Hier
können wir für die ersten beiden Seiten zunächst Weiter klicken. Dann geben wir das
Kennwort ein dass wir beim Export angegeben haben. Auf der nächsten Seite geben wir
an, dass wir das Zertifikat in einen spezifischen Store importieren wollen, nämlich
in den “Trusted Root Certification Authorities”
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_12.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb_5.png" width="447" height="407" />
          </a>
        </p>
        <p>
Nun können wir uns auch mit Visual Studio ohne Probleme auf unseren Server verbinden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=49235be7-f31e-4c9f-8c2e-7f8639ee6fb6" />
      </body>
      <title>TFS über SSL ohne gekauftem Zertifikat</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,49235be7-f31e-4c9f-8c2e-7f8639ee6fb6.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,49235be7-f31e-4c9f-8c2e-7f8639ee6fb6.aspx</link>
      <pubDate>Tue, 01 Nov 2011 00:56:11 GMT</pubDate>
      <description>&lt;p&gt;
Will man auf einen TFS über eine Internet-Verbindung zugreifen, dann bieten sich zwei
Wege an: Entweder per VPN oder per SSL. Der Weg über SSL ist eigentlich der einfachere,
Nachteil dabei ist allerdings, dass man ein Zertifikat von einer offiziellen Registrierungsstelle
kaufen muss. Aber es geht auch ohne.
&lt;/p&gt;
&lt;p&gt;
Dazu muss man zunächst ein Tool aus dem IIS 6 Ressource-Kit herunterladen. Das Tool
gibt es auch einzeln &lt;a href="http://o-o-s.de/wp-content/2007/03/selfssl.zip"&gt;hier&lt;/a&gt; zum
Download.
&lt;/p&gt;
&lt;p&gt;
Damit können wir nun ein SSL-Zertifikat generieren.
&lt;/p&gt;
&lt;p&gt;
selfssl /N:CN=my.domain.com /K:2048 /V:730 /P:443 /S:3 /t
&lt;/p&gt;
&lt;p&gt;
Der Parameter /V gibt die Gültigkeitsdauer in Tagen an, der Parameter /P den Port
auf dem SSL laufen soll und /S die ID der Web Site des TFS. Letztere bekommt man einfach
heraus indem man die Advanced Settings der Web Site aufruft.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb.png" width="565" height="205"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Da der TFS im Normalfall ja nicht direkt mit dem Internet verbunden ist, muss der
Port noch entsprechend auf der Firewall auf den jeweiligen Server auf dem der TFS
läuft weitergeleitet werden. Diese Einstellung hängt natürlich von der jewweils eingesetzten
Firewall ab.
&lt;/p&gt;
&lt;p&gt;
Nun können wir eigentlich den Server bereits über den Web Access erreichen, z.B. https://my.domain.com/tfs/web
. Achtung hier wird beim Einsatz von SSL kein Port mit angegeben sofern der Standard-Port
verwendet wird. Im Browser bekommt man zwar eine Meldung, dass das Zertifikat nicht
gültig ist, aber diese kann man entsprechend übergehen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb_1.png" width="571" height="238"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Das Problem ist, dass Visual Studio sich so nicht verbinden mag. Gibt man im Registrierungsdialog
für neue Server die URL ein und stellt das Protokoll auf https dann erhält man folgenden
Fehler:
&lt;/p&gt;
&lt;p&gt;
---------------------------&lt;br&gt;
Microsoft Visual Studio&lt;br&gt;
---------------------------&lt;br&gt;
Microsoft Visual Studio
&lt;/p&gt;
&lt;p&gt;
TF31002: Unable to connect to this Team Foundation Server: my.domain.com.
&lt;/p&gt;
&lt;p&gt;
Team Foundation Server Url: &lt;a href="https://my.domain.com/tfs"&gt;https://my.domain.com/tfs&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Possible reasons for failure include:
&lt;/p&gt;
&lt;p&gt;
- The name, port number, or protocol for the Team Foundation Server is incorrect.
&lt;/p&gt;
&lt;p&gt;
- The Team Foundation Server is offline.
&lt;/p&gt;
&lt;p&gt;
- The password has expired or is incorrect.
&lt;/p&gt;
&lt;p&gt;
Technical information (for administrator):
&lt;/p&gt;
&lt;p&gt;
The underlying connection was closed: Could not establish trust relationship for the
SSL/TLS secure channel.&lt;br&gt;
---------------------------&lt;br&gt;
OK&amp;nbsp;&amp;nbsp; Help&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
---------------------------&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Als Lösung müssen wir auf den Clients das Zertifikat installieren. Dazu muss man das
Zertifikat auf dem Server zunächst exportieren. Im IIS Manager dazu einfach auf dem
Server die Option Server Certificates doppelt klicken.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb_4.png" width="455" height="233"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dann kann das Zertifikat über die Option Export in eine Datei exportiert werden indem
das Ziel und ein Passwort angegeben werden. Diese Datei kopieren wir nun auf den Client
und klicken diese dort doppelt an. Es öffnet sich der Certificate Import Wizard. Hier
können wir für die ersten beiden Seiten zunächst Weiter klicken. Dann geben wir das
Kennwort ein dass wir beim Export angegeben haben. Auf der nächsten Seite geben wir
an, dass wir das Zertifikat in einen spezifischen Store importieren wollen, nämlich
in den “Trusted Root Certification Authorities”
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f31a2a8eb321_1456A/image_thumb_5.png" width="447" height="407"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nun können wir uns auch mit Visual Studio ohne Probleme auf unseren Server verbinden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=49235be7-f31e-4c9f-8c2e-7f8639ee6fb6" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,49235be7-f31e-4c9f-8c2e-7f8639ee6fb6.aspx</comments>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die SSRS bieten ein nettes Feature womit sich eine Text Box und andere Controls als
Link nutzen lassen. Dazu einfach bei der Textbox unter Action die Option “Go to URL”
auswählen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Mit-SQL-Server-Reporting-Services-Link-i_12DA2/SNAGHTML1fd585c9.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML1fd585c9" border="0" alt="SNAGHTML1fd585c9" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Mit-SQL-Server-Reporting-Services-Link-i_12DA2/SNAGHTML1fd585c9_thumb.png" width="244" height="222" />
          </a>
        </p>
        <p>
Meine Herausforderung war, dass ich wollte, dass der Link die Zielseite in einem neuen
Fenster öffnet, also das selbe wie bei einem &lt;a href=”…” target=”_blank”&gt;. Bei
den SSRS muss man allerdings hier zu einem kleinen JavaScript greifen. Der Expression
für die URL lautet dann beispielsweise:
</p>
        <blockquote>
          <p>
            <font face="Courier New">="javascript:void(window.open(""</font>
            <a href="http://MyTFS:8080/tfs/web/UI/Pages/WorkItems/WorkItemEdit.aspx?id">
              <font face="Courier New">http://MyTFS:8080/tfs/web/UI/Pages/WorkItems/WorkItemEdit.aspx?id</font>
            </a>
            <font face="Courier New">="
&amp; Fields!System_Id.Value &amp; "&amp;pguid=63302ade-299c-4949-a7ea-351ddd310a32""))"</font>
          </p>
        </blockquote>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612" />
      </body>
      <title>Mit SQL Server Reporting Services Link in einem neuen Fenster öffnen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612.aspx</link>
      <pubDate>Thu, 20 Oct 2011 19:42:26 GMT</pubDate>
      <description>&lt;p&gt;
Die SSRS bieten ein nettes Feature womit sich eine Text Box und andere Controls als
Link nutzen lassen. Dazu einfach bei der Textbox unter Action die Option “Go to URL”
auswählen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Mit-SQL-Server-Reporting-Services-Link-i_12DA2/SNAGHTML1fd585c9.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML1fd585c9" border="0" alt="SNAGHTML1fd585c9" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Mit-SQL-Server-Reporting-Services-Link-i_12DA2/SNAGHTML1fd585c9_thumb.png" width="244" height="222"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Meine Herausforderung war, dass ich wollte, dass der Link die Zielseite in einem neuen
Fenster öffnet, also das selbe wie bei einem &amp;lt;a href=”…” target=”_blank”&amp;gt;. Bei
den SSRS muss man allerdings hier zu einem kleinen JavaScript greifen. Der Expression
für die URL lautet dann beispielsweise:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;="javascript:void(window.open(""&lt;/font&gt;&lt;a href="http://MyTFS:8080/tfs/web/UI/Pages/WorkItems/WorkItemEdit.aspx?id"&gt;&lt;font face="Courier New"&gt;http://MyTFS:8080/tfs/web/UI/Pages/WorkItems/WorkItemEdit.aspx?id&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;="
&amp;amp; Fields!System_Id.Value &amp;amp; "&amp;amp;pguid=63302ade-299c-4949-a7ea-351ddd310a32""))"&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,25eaed6d-c4ac-4d6a-a6b1-fa1f6011e612.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e4498886-11eb-4d9c-b260-f0155398275d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e4498886-11eb-4d9c-b260-f0155398275d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e4498886-11eb-4d9c-b260-f0155398275d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e4498886-11eb-4d9c-b260-f0155398275d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Beim Deployment einer neuen Environment kommt folgende Fehlermeldung:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Lab-Management_DABF/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Lab-Management_DABF/image_thumb.png" width="492" height="325" />
          </a>
        </p>
        <blockquote>
          <p>
TF259115: Team Foundation Server could not find any suitable host to deploy the virtual
machine: HPC Template.<br />
Contact your administrator to fix the issues on the hosts below. (Hosts are listed
in brackets)<br />
1. Memory requirement of the virtual machine(s) exceeds the available host resources.
The placement policy for this host group is set to be conservative and hence virtual
machines that are in stopped state are also accounted as consuming host resources.
Your administrator can change this policy by running the TfsLabConfig tool. (SarHyperV04)
</p>
        </blockquote>
        <p>
Der Grund für die Meldung liegt darin, dass das Lab Management zunächst davon ausgeht,
dass auf dem Hyper-V Host ausreichend Ressourcen (RAM) verfügbar sein müssen um alle
Environments gleichzeitig zu starten um hier auf Nummer sicher zu gehen. Das ist allerdings
für die Praxis eher ungeeignet. Hier möchte man auf einem Host mehrere, teilweise
sogar viele Environments anlegen von denen dann aber immer nur einzelne laufen.
</p>
        <p>
Glücklicherweise kann man das Verhalten aber konfigurieren. Dazu geht man einfach
auf den TFS App-Tier und gibt dort folgenden Befehl ein:
</p>
        <p>
          <font face="Courier New">tfsconfig lab /settings /CollectionName:&lt;Collection&gt;
/hostGroup /edit /name:&lt;Host Group Name&gt; /labenvironmentplacementpolicy:aggressive</font>
        </p>
        <p>
Dabei ist zu beachten, dass für den CollectionName auch wirklich nur der Name und
nicht wie an anderen Stellen üblich die URI angegeben wird.
</p>
        <p>
Weitere Infos finden sich hier: <a href="http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx">http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e4498886-11eb-4d9c-b260-f0155398275d" />
      </body>
      <title>Lab Management Environment Policy anpassen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e4498886-11eb-4d9c-b260-f0155398275d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e4498886-11eb-4d9c-b260-f0155398275d.aspx</link>
      <pubDate>Wed, 19 Oct 2011 13:58:03 GMT</pubDate>
      <description>&lt;p&gt;
Beim Deployment einer neuen Environment kommt folgende Fehlermeldung:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Lab-Management_DABF/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Lab-Management_DABF/image_thumb.png" width="492" height="325"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
TF259115: Team Foundation Server could not find any suitable host to deploy the virtual
machine: HPC Template.&lt;br&gt;
Contact your administrator to fix the issues on the hosts below. (Hosts are listed
in brackets)&lt;br&gt;
1. Memory requirement of the virtual machine(s) exceeds the available host resources.
The placement policy for this host group is set to be conservative and hence virtual
machines that are in stopped state are also accounted as consuming host resources.
Your administrator can change this policy by running the TfsLabConfig tool. (SarHyperV04)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Der Grund für die Meldung liegt darin, dass das Lab Management zunächst davon ausgeht,
dass auf dem Hyper-V Host ausreichend Ressourcen (RAM) verfügbar sein müssen um alle
Environments gleichzeitig zu starten um hier auf Nummer sicher zu gehen. Das ist allerdings
für die Praxis eher ungeeignet. Hier möchte man auf einem Host mehrere, teilweise
sogar viele Environments anlegen von denen dann aber immer nur einzelne laufen.
&lt;/p&gt;
&lt;p&gt;
Glücklicherweise kann man das Verhalten aber konfigurieren. Dazu geht man einfach
auf den TFS App-Tier und gibt dort folgenden Befehl ein:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;tfsconfig lab /settings /CollectionName:&amp;lt;Collection&amp;gt;
/hostGroup /edit /name:&amp;lt;Host Group Name&amp;gt; /labenvironmentplacementpolicy:aggressive&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Dabei ist zu beachten, dass für den CollectionName auch wirklich nur der Name und
nicht wie an anderen Stellen üblich die URI angegeben wird.
&lt;/p&gt;
&lt;p&gt;
Weitere Infos finden sich hier: &lt;a href="http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e4498886-11eb-4d9c-b260-f0155398275d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e4498886-11eb-4d9c-b260-f0155398275d.aspx</comments>
      <category>Lab Management</category>
      <category>Team System Server</category>
      <category>Testing</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0a84aaaa-bce7-4b9a-9256-f58e90bded33</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0a84aaaa-bce7-4b9a-9256-f58e90bded33.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0a84aaaa-bce7-4b9a-9256-f58e90bded33.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0a84aaaa-bce7-4b9a-9256-f58e90bded33</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im Team Build lässt sich die Statische Code-Analyse (FxCop) recht einfach aktivieren.  
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb.png" width="679" height="235" />
          </a>
        </p>
        <p>
Leider geht es mit <a href="http://stylecop.codeplex.com">StyleCop</a> nicht ganz
so einfach. Eine Möglichkeit ist, in den Projektdateien die StyleCop-Analyse einzutragen
und dann auf dem Build-Rechner MSBuild die StyleCop-Analyse auszuführen (siehe <a href="http://stylecop.codeplex.com/wikipage?title=Setting%20Up%20StyleCop%20MSBuild%20Integration&amp;referringTitle=Documentation">http://stylecop.codeplex.com/wikipage?title=Setting%20Up%20StyleCop%20MSBuild%20Integration&amp;referringTitle=Documentation</a>)
</p>
        <p>
Alternativ kann man sich auch einfach eine Build Activity bauen die die StyleCop Analyse
ausführt. Eine solche Activity habe ich am Ende dieses Posts zum Download bereitgestellt.
Um diese zu nutzen entpackt man einfach die DLLs. Diese werden dann in der Versionsverwaltung
abgelegt. Diesen Pfad muss man anschließend auf dem Build-Controller registrieren.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_4.png">
            <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_1.png" width="244" height="123" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161d9502.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML161d9502" border="0" alt="SNAGHTML161d9502" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161d9502_thumb.png" width="550" height="291" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161e4efd.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML161e4efd" border="0" alt="SNAGHTML161e4efd" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161e4efd_thumb.png" width="479" height="500" />
          </a>
        </p>
        <p>
Nun können wir im Visual Studio ein Projekt anlegen. Hier referenzieren wir die DLLs
aus der ZIP-Datei und kopieren unseren Build-Workflow hinein. Nun können wir im Workflow
ein neues Argument vom Typ StyleCopSettings anlegen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_2.png" width="626" height="152" />
          </a>
        </p>
        <p>
Dann brauchen wir noch eine Variable
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_4.png" width="629" height="95" />
          </a>
        </p>
        <p>
Nun können wir den Workflow erweitern.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_8.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_3.png" width="417" height="283" />
          </a>
        </p>
        <pre style="font-family: ; background: white; color: ">
          <font face="Consolas">
            <font style="font-size: 9.8pt">
              <span style="color: ">
                <font color="#0000ff"> 
&lt;</font>
              </span>
              <span style="color: ">
                <font color="#a31515">If</font>
              </span>
              <span style="color: ">
                <font color="#0000ff"> </font>
              </span>
              <span style="color: ">
                <font color="#ff0000">Condition</font>
              </span>
              <span style="color: ">
                <font color="#0000ff">=</font>
              </span>"<span style="color: "><font color="#0000ff">[Not
String.IsNullOrEmpty(StyleCopSettings.StyleCopSettingsFile) And StyleCopSettings.PerformStyleCopAnalysis]</font></span>"<span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">DisplayName</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">If
StyleCop Settings not empty run StyleCop</font></span>"<span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">   
&lt;</font></span><span style="color: "><font color="#a31515">If.Then</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">     
&lt;</font></span><span style="color: "><font color="#a31515">Sequence</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">       
&lt;</font></span><span style="color: "><font color="#a31515">sap:WorkflowViewStateService.ViewState</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">         
&lt;</font></span><span style="color: "><font color="#a31515">scg:Dictionary</font></span><span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">x:TypeArguments</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">x:String,
x:Object</font></span>"<span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">           
&lt;</font></span><span style="color: "><font color="#a31515">x:Boolean</font></span><span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">x:Key</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">IsExpanded</font></span>"<span style="color: "><font color="#0000ff">&gt;</font></span>True<span style="color: "><font color="#0000ff">&lt;/</font></span><span style="color: "><font color="#a31515">x:Boolean</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">         
&lt;/</font></span><span style="color: "><font color="#a31515">scg:Dictionary</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">       
&lt;/</font></span><span style="color: "><font color="#a31515">sap:WorkflowViewStateService.ViewState</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">       
&lt;</font></span><span style="color: "><font color="#a31515">mtbwa:ConvertWorkspaceItem</font></span><span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">DisplayName</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">Convert
Server Path to Local Path</font></span>"<span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">mtbwt:BuildTrackingParticipant.Importance</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">Low</font></span>"<span style="color: "><font color="#0000ff"> <br /></font></span><span style="color: "><font color="#ff0000"> Input</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">[StyleCopSettings.StyleCopSettingsFile]</font></span>"<span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">Result</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">[StyleCopLocalSettingsFile]</font></span>"<span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">Workspace</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">[Workspace]</font></span>"<span style="color: "><font color="#0000ff"> /&gt;</font></span><span style="color: "><font color="#0000ff">       
&lt;</font></span><span style="color: "><font color="#a31515">absa:StyleCopVerifier</font></span><span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">AnalysisResults</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">{x:Null}</font></span>"<span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">ViolationCount</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">{x:Null}</font></span>" <span style="color: "><font color="#ff0000">SettingsFile</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">[StyleCopLocalSettingsFile]</font></span>"<span style="color: "><font color="#0000ff"> </font></span><span style="color: "><font color="#ff0000">SourcesDir</font></span><span style="color: "><font color="#0000ff">=</font></span>"<span style="color: "><font color="#0000ff">[SourcesDirectory]</font></span>"<span style="color: "><font color="#0000ff"> /&gt;</font></span><span style="color: "><font color="#0000ff">     
&lt;/</font></span><span style="color: "><font color="#a31515">Sequence</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff">   
&lt;/</font></span><span style="color: "><font color="#a31515">If.Then</font></span><span style="color: "><font color="#0000ff">&gt;</font></span><span style="color: "><font color="#0000ff"> 
&lt;/</font></span><span style="color: "><font color="#a31515">If</font></span><span style="color: "><font color="#0000ff">&gt;</font></span></font>
          </font>
        </pre>
        <p>
Wenn wir nun auf Basis dieses Workflows eine Build Definition anlegen, können wir
die StyleCop Settings dort einstellen und unser Build ob unsere StyleCop Rules auch
alle eingehalten werden. <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style></p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_12.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_5.png" width="954" height="297" />
          </a>
        </p>
        <p>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:72447370-d4e6-4feb-bae4-c8457427add3" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/artiso.BuildExtensions.StyleCop.zip" target="_blank">Download
StyleCopy Activity</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0a84aaaa-bce7-4b9a-9256-f58e90bded33" />
      </body>
      <title>StyleCop Analyse im Team Build</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0a84aaaa-bce7-4b9a-9256-f58e90bded33.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0a84aaaa-bce7-4b9a-9256-f58e90bded33.aspx</link>
      <pubDate>Tue, 18 Oct 2011 23:39:28 GMT</pubDate>
      <description>&lt;p&gt;
Im Team Build lässt sich die Statische Code-Analyse (FxCop) recht einfach aktivieren.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb.png" width="679" height="235"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Leider geht es mit &lt;a href="http://stylecop.codeplex.com"&gt;StyleCop&lt;/a&gt; nicht ganz
so einfach. Eine Möglichkeit ist, in den Projektdateien die StyleCop-Analyse einzutragen
und dann auf dem Build-Rechner MSBuild die StyleCop-Analyse auszuführen (siehe &lt;a href="http://stylecop.codeplex.com/wikipage?title=Setting%20Up%20StyleCop%20MSBuild%20Integration&amp;amp;referringTitle=Documentation"&gt;http://stylecop.codeplex.com/wikipage?title=Setting%20Up%20StyleCop%20MSBuild%20Integration&amp;amp;referringTitle=Documentation&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
Alternativ kann man sich auch einfach eine Build Activity bauen die die StyleCop Analyse
ausführt. Eine solche Activity habe ich am Ende dieses Posts zum Download bereitgestellt.
Um diese zu nutzen entpackt man einfach die DLLs. Diese werden dann in der Versionsverwaltung
abgelegt. Diesen Pfad muss man anschließend auf dem Build-Controller registrieren.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_1.png" width="244" height="123"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161d9502.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML161d9502" border="0" alt="SNAGHTML161d9502" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161d9502_thumb.png" width="550" height="291"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161e4efd.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML161e4efd" border="0" alt="SNAGHTML161e4efd" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/SNAGHTML161e4efd_thumb.png" width="479" height="500"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nun können wir im Visual Studio ein Projekt anlegen. Hier referenzieren wir die DLLs
aus der ZIP-Datei und kopieren unseren Build-Workflow hinein. Nun können wir im Workflow
ein neues Argument vom Typ StyleCopSettings anlegen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_2.png" width="626" height="152"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dann brauchen wir noch eine Variable
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_4.png" width="629" height="95"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nun können wir den Workflow erweitern.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_3.png" width="417" height="283"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;If&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Condition&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;[Not
String.IsNullOrEmpty(StyleCopSettings.StyleCopSettingsFile) And StyleCopSettings.PerformStyleCopAnalysis]&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;DisplayName&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;If
StyleCop Settings not empty run StyleCop&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;If.Then&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Sequence&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sap:WorkflowViewStateService.ViewState&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;scg:Dictionary&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;x:TypeArguments&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;x:String,
x:Object&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;x:Boolean&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;x:Key&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;IsExpanded&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;True&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;x:Boolean&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;scg:Dictionary&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sap:WorkflowViewStateService.ViewState&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;mtbwa:ConvertWorkspaceItem&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;DisplayName&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Convert
Server Path to Local Path&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;mtbwt:BuildTrackingParticipant.Importance&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Low&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Input&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;[StyleCopSettings.StyleCopSettingsFile]&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Result&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;[StyleCopLocalSettingsFile]&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Workspace&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;[Workspace]&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;absa:StyleCopVerifier&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;AnalysisResults&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;{x:Null}&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;ViolationCount&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;{x:Null}&lt;/font&gt;&lt;/span&gt;" &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;SettingsFile&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;[StyleCopLocalSettingsFile]&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;SourcesDir&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;[SourcesDirectory]&lt;/font&gt;&lt;/span&gt;"&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Sequence&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;If.Then&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;
&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;If&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
Wenn wir nun auf Basis dieses Workflows eine Build Definition anlegen, können wir
die StyleCop Settings dort einstellen und unser Build ob unsere StyleCop Rules auch
alle eingehalten werden. &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/image_thumb_5.png" width="954" height="297"&gt;&lt;/a&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:fb3a1972-4489-4e52-abe7-25a00bb07fdf:72447370-d4e6-4feb-bae4-c8457427add3" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/StyleCop-Analyse-im-Team-Build_144D3/artiso.BuildExtensions.StyleCop.zip" target="_blank"&gt;Download
StyleCopy Activity&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0a84aaaa-bce7-4b9a-9256-f58e90bded33" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0a84aaaa-bce7-4b9a-9256-f58e90bded33.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=46e5bff6-4d39-4114-a84b-e66aca65ee9b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,46e5bff6-4d39-4114-a84b-e66aca65ee9b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,46e5bff6-4d39-4114-a84b-e66aca65ee9b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=46e5bff6-4d39-4114-a84b-e66aca65ee9b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ich verwende gerne Excel um mein Product Backlog im TFS zu sortieren. Dazu rufe ich
die Work Items des PBL einfach aus Excel ab, sortiere diese und verwende dann die
Excel Autonummerierungs-Funktion um den Stack Rank neu zu nummerieren. Das funktioniert
sehr gut. Einziger Punkt der immer etwas nervt ist das Ausschneiden und Einfügen der
Zeilen im Excel um diese zu verschieben. Hier gibt es allerdings eine elegante Lösung
die allerdings ein wenig Fingerspitzengefühl erfordert und die nicht gerade intuitiv
ist. 
</p>
        <p>
Zuerst markiert man die Zeile(n) die man verschieben möchte
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML1498cb94.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML1498cb94" border="0" alt="SNAGHTML1498cb94" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML1498cb94_thumb.png" width="826" height="549" />
          </a>
        </p>
        <p>
Dann fährt man mit der Maus auf die obere Kante der Markierung
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149808f1.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML149808f1" border="0" alt="SNAGHTML149808f1" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149808f1_thumb.png" width="826" height="549" />
          </a>
        </p>
        <p>
Nun kann man mit gedrückter rechter Maustaste die Zeile an eine andere Position schieben.
Danach öffnet sich ein Kontext-Menü in dem man dann verschiedene Optionen zur Auswahl
hat. “Move here” bedeutet das das Ziel überschrieben wird. Für den oben beschriebenen
Fall brauchen wir also “Schift Down and Move” damit die verschobene Zeile eingefügt
wird.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149c0e4e.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML149c0e4e" border="0" alt="SNAGHTML149c0e4e" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149c0e4e_thumb.png" width="840" height="558" />
          </a>
        </p>
        <p>
Alternativ kann man auch mit der linken Maustaste verschieben und dann im Verschieben
die Shift-Taste drücken. Die Einfügezeile passt sich dann entsprechend an um anzuzeigen
das die Zeile eingefügt wird und nicht der Inhalt überschrieben wird (ohne gedrückter
Shift-Taste)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149e8448.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML149e8448" border="0" alt="SNAGHTML149e8448" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149e8448_thumb.png" width="853" height="566" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=46e5bff6-4d39-4114-a84b-e66aca65ee9b" />
      </body>
      <title>Zeilen in Excel verschieben</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,46e5bff6-4d39-4114-a84b-e66aca65ee9b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,46e5bff6-4d39-4114-a84b-e66aca65ee9b.aspx</link>
      <pubDate>Tue, 04 Oct 2011 17:32:32 GMT</pubDate>
      <description>&lt;p&gt;
Ich verwende gerne Excel um mein Product Backlog im TFS zu sortieren. Dazu rufe ich
die Work Items des PBL einfach aus Excel ab, sortiere diese und verwende dann die
Excel Autonummerierungs-Funktion um den Stack Rank neu zu nummerieren. Das funktioniert
sehr gut. Einziger Punkt der immer etwas nervt ist das Ausschneiden und Einfügen der
Zeilen im Excel um diese zu verschieben. Hier gibt es allerdings eine elegante Lösung
die allerdings ein wenig Fingerspitzengefühl erfordert und die nicht gerade intuitiv
ist. 
&lt;/p&gt;
&lt;p&gt;
Zuerst markiert man die Zeile(n) die man verschieben möchte
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML1498cb94.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML1498cb94" border="0" alt="SNAGHTML1498cb94" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML1498cb94_thumb.png" width="826" height="549"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dann fährt man mit der Maus auf die obere Kante der Markierung
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149808f1.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML149808f1" border="0" alt="SNAGHTML149808f1" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149808f1_thumb.png" width="826" height="549"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Nun kann man mit gedrückter rechter Maustaste die Zeile an eine andere Position schieben.
Danach öffnet sich ein Kontext-Menü in dem man dann verschiedene Optionen zur Auswahl
hat. “Move here” bedeutet das das Ziel überschrieben wird. Für den oben beschriebenen
Fall brauchen wir also “Schift Down and Move” damit die verschobene Zeile eingefügt
wird.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149c0e4e.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML149c0e4e" border="0" alt="SNAGHTML149c0e4e" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149c0e4e_thumb.png" width="840" height="558"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Alternativ kann man auch mit der linken Maustaste verschieben und dann im Verschieben
die Shift-Taste drücken. Die Einfügezeile passt sich dann entsprechend an um anzuzeigen
das die Zeile eingefügt wird und nicht der Inhalt überschrieben wird (ohne gedrückter
Shift-Taste)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149e8448.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML149e8448" border="0" alt="SNAGHTML149e8448" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Zeilen-in-Excel-verschieben_10859/SNAGHTML149e8448_thumb.png" width="853" height="566"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=46e5bff6-4d39-4114-a84b-e66aca65ee9b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,46e5bff6-4d39-4114-a84b-e66aca65ee9b.aspx</comments>
      <category>Excel</category>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8</wfw:commentRss>
      <title>SCRUMit Agenda online</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8.aspx</link>
      <pubDate>Fri, 30 Sep 2011 09:44:36 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span style="font-family: 'Times New Roman','serif'; font-size: 12pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-ansi-language: de; mso-fareast-language: de; mso-bidi-language: ar-sa; mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/SCRUMit-Agenda-online_A0B9/clip_image002_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/SCRUMit-Agenda-online_A0B9/clip_image002_thumb.jpg" width="240" height="68" v:shapes="_x0000_i1025"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Für unseren SCRUMit-Event bei der &lt;a href="http://www.dotnet-ulm.de/"&gt;.net Developer
Group Ulm&lt;/a&gt; ist nun die Agenda finalisiert. Wer also Interesse am Thema Scrum hat,
sollte unbedingt mal auf unserer Seite vorbeischauen und sich über den Event informieren.
Für schlappe 20,—€ bekommt man hochwertige Informationen von hochkarätigen Sprechern.
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 6pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: #244061; font-size: 9pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Veranstaltungsdaten:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;table style="border-collapse: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 0cm 0cm 0cm" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 95.85pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="128"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Datum:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 384.1pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="512"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;13.
Oktober 2011, 9.00 – 17.00 Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1"&gt;
&lt;td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 95.85pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="128"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Ort:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 384.1pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="512"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;89134
Blaustein, Oberer Wiesenweg 25&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;
&lt;td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 95.85pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="128"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 384.1pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="512"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 6pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: #244061; font-size: 9pt"&gt;Agenda:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;table style="width: 482.8pt; border-collapse: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 0cm 0cm 0cm" class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="644"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Uhrzeit&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Thema:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Referent:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;9:00
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Begrüßung&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Thomas
Schissler&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt; mso-fareast-language: de"&gt;Group-Leiter&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;9:15
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Scrum
in a nutshell – Kurzeinführung in Scrum&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Thomas
Schissler&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;10:15
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Pause&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;10:30
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;Building
the new wave of Agile Tools using Scrum&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Christian
Binder&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-align: justify; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt; mso-fareast-language: de"&gt;Technologieberater,
Microsoft Deutschland GmbH&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 5"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;11:30
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;Pause&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 6"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;11:45
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Gewachsene
Architektur – kann das funktionieren?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;Matthias
Rink&lt;br&gt;
&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;Softwarearchitekt,
artiso&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 3pt 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-ansi-language: en-us; mso-fareast-language: de" lang="EN-US"&gt;Thomas
Schissler&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 7"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;12:
45 Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Pause&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 8"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;13:45
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Scrum
im Unternehmenssystem&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Uta
Knapp&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt; mso-fareast-language: de"&gt;Unternehmensberaterin
und Scrum-Trainerin, Scrum-Events&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 9"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;14:45
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Pause&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 10"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;15:00
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Scrum
für Manager&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Rolf
Beck&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 8pt; mso-fareast-language: de"&gt;Geschäftsführer,
Carl Zeiss OIM GmbH&lt;/span&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 11"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;16:00
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Pause&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 12"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;16:30
Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Fishbowl
– Scrum Defects und deren Behandlung&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Community&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 13; mso-yfti-lastrow: yes"&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 103.6pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="138"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Ab
17:30 Uhr&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.05pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="165"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;Zeit
für Networking&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="border-bottom: windowtext 1pt solid; padding-bottom: 4.25pt; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 9cm; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 4.25pt" valign="top" width="340"&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt; mso-fareast-language: de"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt"&gt;
&lt;o:p&gt;Hier noch die Links auf unserer Seite:&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="font-family: 'Verdana','sans-serif'; color: black; font-size: 9pt"&gt;
&lt;o:p&gt;
&lt;a href="http://www.dotnet-ulm.de/Agenda.aspx#"&gt;Agenda&lt;/a&gt;
&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;a href="http://www.dotnet-ulm.de/Vortraege%20und%20Referenten.aspx#"&gt;Abstracts &amp;amp;
Informationen zu den Referenten&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;a href="http://www.dotnet-ulm.de/Anmeldung.aspx#"&gt;Anmeldung zur Veranstaltung&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8b9f18a5-5e1d-4b35-b13d-ad5a21af7fe8.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=b1f9b7c1-a1a8-46e6-88df-f100d1809cd7</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,b1f9b7c1-a1a8-46e6-88df-f100d1809cd7.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,b1f9b7c1-a1a8-46e6-88df-f100d1809cd7.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=b1f9b7c1-a1a8-46e6-88df-f100d1809cd7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wir hatten heute die Anforderung dass wir im Lab eine Software installieren mussten
die über eine Lizenz freigeschaltet wird. Diese Lizenz is an die MAC-Adresse der Netzwerkkarte
gebunden. Ziel war es nun, dass wir mit der selben Lizenz die Software auf mehreren
Lab Environments betreiben können. Dabei ging es nicht darum die Lizenzprüfung auszuhebeln
sondern mit der selben Konfiguration auf mehreren Labs zu testen. Was nicht funktioniert,
ist dass man im Netz mehrere Netzwerkkarten mit der selben MAC Adresse hat. Aber für
die virtuellen Maschinen gibt es da eine einfache Lösung. Man fügt einfach eine virtuelle
Netzwerkkarte hinzu die nicht mit dem Netz verbunden ist.
</p>
        <p>
Dazu müssen wir in der VM einen weiteren Netwerkadapter hinzufügen den wir einfach
auf “Not connected” stellen und für den wir dann eine MAC-Adresse angeben können.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MAC-Adresse-im-Lab-simulieren_F01E/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MAC-Adresse-im-Lab-simulieren_F01E/image_thumb.png" width="439" height="466" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=b1f9b7c1-a1a8-46e6-88df-f100d1809cd7" />
      </body>
      <title>MAC-Adresse im Lab simulieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,b1f9b7c1-a1a8-46e6-88df-f100d1809cd7.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,b1f9b7c1-a1a8-46e6-88df-f100d1809cd7.aspx</link>
      <pubDate>Fri, 16 Sep 2011 15:31:43 GMT</pubDate>
      <description>&lt;p&gt;
Wir hatten heute die Anforderung dass wir im Lab eine Software installieren mussten
die über eine Lizenz freigeschaltet wird. Diese Lizenz is an die MAC-Adresse der Netzwerkkarte
gebunden. Ziel war es nun, dass wir mit der selben Lizenz die Software auf mehreren
Lab Environments betreiben können. Dabei ging es nicht darum die Lizenzprüfung auszuhebeln
sondern mit der selben Konfiguration auf mehreren Labs zu testen. Was nicht funktioniert,
ist dass man im Netz mehrere Netzwerkkarten mit der selben MAC Adresse hat. Aber für
die virtuellen Maschinen gibt es da eine einfache Lösung. Man fügt einfach eine virtuelle
Netzwerkkarte hinzu die nicht mit dem Netz verbunden ist.
&lt;/p&gt;
&lt;p&gt;
Dazu müssen wir in der VM einen weiteren Netwerkadapter hinzufügen den wir einfach
auf “Not connected” stellen und für den wir dann eine MAC-Adresse angeben können.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MAC-Adresse-im-Lab-simulieren_F01E/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MAC-Adresse-im-Lab-simulieren_F01E/image_thumb.png" width="439" height="466"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=b1f9b7c1-a1a8-46e6-88df-f100d1809cd7" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,b1f9b7c1-a1a8-46e6-88df-f100d1809cd7.aspx</comments>
      <category>Lab Management</category>
      <category>Team System Server</category>
      <category>TFS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=aa417daa-6983-4298-8fb4-c85e4cdb91c5</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,aa417daa-6983-4298-8fb4-c85e4cdb91c5.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,aa417daa-6983-4298-8fb4-c85e4cdb91c5.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aa417daa-6983-4298-8fb4-c85e4cdb91c5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Heute hatte ich das Problem bei einem Kunden dass neu angelegte Areas nicht sofort
auf den Work Items sichtbar waren. Was zuverlässig geholfen hat, war eine Recycle
des Application Pools. Das ist aber natürlich auch keine Lösung. Im Web habe ich einige
Threads zu diesem Problem gefunden, aber keine wirkliche Lösung. Deshalb möchte ich
hier kurz beschreiben, welche Analysemöglichkeiten es hier gibt.
</p>
        <p>
Zunächsteinmal habe ich folgende Zusammenhänge herausgefunden:
</p>
        <p>
Wenn man in einem Client (Visual Studio, Excel, Project, Web Access etc.) eine Iteration
anlegt, wird diese in der DB der Project Collection unter der Tabelle tbl_Nodes eingetragen.
Dann wird eine Stored Procedure aufgerufen die eine Verarbeitung antriggert. Diese
Verarbeitung wird vom Visual Studio Team Foundation Background Job Agent ausgeführt.
Dieser schreibt dann einen neuen Eintrag in die Tabelle TreeNodes. Von dort werden
die Items für die Work Items gelesen.
</p>
        <p>
Damit ergeben sich folgende Schritte die ich empfehlen kann um das Problem zu untersuchen:
</p>
        <ol>
          <li>
Prüfen ob der Visual Studio Team Foundation Background Job Agent Dienst läuft und
ob dieser mit dem Account ausgeführt wird mit dem auch der TFS installiert wurde. 
</li>
          <li>
Prüfen ob die neuen Areas sowohl in tbl_Nodes als auch in TreeNodes eingetragen werden 
</li>
          <li>
Für den Visual Studio Team Foundation Background Job Agent kann ein Tracing aktiviert
werden. In diesem sollte ein entsprechender Eintrag für die Verarbeitung der Area
stehen. Man kann einfach nach dem Namen der neuen Area suchen. Das Tracing aktiviert
man in der Datei "C:\Program Files\Microsoft Team Foundation Server 2010\Application
Tier\TFSJobAgent\TfsJobAgent.exe.config"</li>
        </ol>
        <div class="csharpcode">
          <pre>
            <span class="lnum"> 1: </span>...</pre>
          <pre>
            <span class="lnum"> 2: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">system.diagnostics</span>
            <span class="kwrd">&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 3: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">trace</span>
            <span class="attr">autoflush</span>
            <span class="kwrd">="false"</span>
            <span class="attr">indentsize</span>
            <span class="kwrd">="4"</span>
            <span class="kwrd">&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 4: </span>
            <span class="rem">&lt;!--To
enable tracing to file, simply uncomment listeners section and set trace switch(es)
below.</span>
          </pre>
          <pre>
            <span class="lnum"> 5: </span>
            <span class="rem"> Directory
specified for TextWriterTraceListener output must exist, and job agent service account
must have write permissions. --&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 6: </span>
            <span class="rem">&lt;!--&lt;listeners&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 7: </span>
            <span class="rem"> &lt;add
name="myListener" </span>
          </pre>
          <pre>
            <span class="lnum"> 8: </span>
            <span class="rem"> type="System.Diagnostics.TextWriterTraceListener" </span>
          </pre>
          <pre>
            <span class="lnum"> 9: </span>
            <span class="rem"> initializeData="C:\Replace_Me_With_A_Directory_The_Service_Account_Can_Write_To\jobagent.log"
/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 10: </span>
            <span class="rem"> &lt;remove
name="Default" /&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 11: </span>
            <span class="rem"> &lt;/listeners&gt;--&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 12: </span>
            <span class="kwrd">&lt;/</span>
            <span class="html">trace</span>
            <span class="kwrd">&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 13: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">switches</span>
            <span class="kwrd">&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 14: </span>
            <span class="rem">&lt;!--
Trace Switches</span>
          </pre>
          <pre>
            <span class="lnum"> 15: </span>
            <span class="rem"> Each
of the trace switches should be set to a value between 0 and 4, inclusive.</span>
          </pre>
          <pre>
            <span class="lnum"> 16: </span>
            <span class="rem"> 0:
No trace output</span>
          </pre>
          <pre>
            <span class="lnum"> 17: </span>
            <span class="rem"> 1-4:
Increasing levels of trace output; see Systems.Diagnostics.TraceLevel--&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 18: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">add</span>
            <span class="attr">name</span>
            <span class="kwrd">="API"</span>
            <span class="attr">value</span>
            <span class="kwrd">="0"</span>
            <span class="kwrd">/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 19: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">add</span>
            <span class="attr">name</span>
            <span class="kwrd">="Authentication"</span>
            <span class="attr">value</span>
            <span class="kwrd">="0"</span>
            <span class="kwrd">/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 20: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">add</span>
            <span class="attr">name</span>
            <span class="kwrd">="Authorization"</span>
            <span class="attr">value</span>
            <span class="kwrd">="0"</span>
            <span class="kwrd">/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 21: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">add</span>
            <span class="attr">name</span>
            <span class="kwrd">="Database"</span>
            <span class="attr">value</span>
            <span class="kwrd">="0"</span>
            <span class="kwrd">/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 22: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">add</span>
            <span class="attr">name</span>
            <span class="kwrd">="General"</span>
            <span class="attr">value</span>
            <span class="kwrd">="0"</span>
            <span class="kwrd">/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 23: </span>
            <span class="kwrd">&lt;</span>
            <span class="html">add</span>
            <span class="attr">name</span>
            <span class="kwrd">="traceLevel"</span>
            <span class="attr">value</span>
            <span class="kwrd">="0"</span>
            <span class="kwrd">/&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 24: </span>
            <span class="kwrd">&lt;/</span>
            <span class="html">switches</span>
            <span class="kwrd">&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 25: </span>
            <span class="kwrd">&lt;/</span>
            <span class="html">system.diagnostics</span>
            <span class="kwrd">&gt;</span>
          </pre>
          <pre>
            <span class="lnum"> 26: </span>...</pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <blockquote style="margin-right: 0px" dir="ltr">
          <p>
Die Zeilen 6-11 müssen einkommentiert und für das Log-File ein gültiger Pfad angegeben
werden. Dann kann man die Trace-Levels auf einen Wert zwischen 1 und 4 für die einzelnen
bereiche setzen. Ich hatte einfach mall alles auf 4 gesetzt. Natürlich nicht vergessen
das nach der Fehleranalyse wieder zurückzusetzen. 
</p>
        </blockquote>
        <p dir="ltr">
Damit sollte sich der Fehler identifizieren und beheben lassen. Viel Erfolg!
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa417daa-6983-4298-8fb4-c85e4cdb91c5" />
      </body>
      <title>Neue Areas im TFs sind auf den Work Items nicht sofort sichtbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,aa417daa-6983-4298-8fb4-c85e4cdb91c5.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,aa417daa-6983-4298-8fb4-c85e4cdb91c5.aspx</link>
      <pubDate>Fri, 16 Sep 2011 14:12:45 GMT</pubDate>
      <description>&lt;p&gt;
Heute hatte ich das Problem bei einem Kunden dass neu angelegte Areas nicht sofort
auf den Work Items sichtbar waren. Was zuverlässig geholfen hat, war eine Recycle
des Application Pools. Das ist aber natürlich auch keine Lösung. Im Web habe ich einige
Threads zu diesem Problem gefunden, aber keine wirkliche Lösung. Deshalb möchte ich
hier kurz beschreiben, welche Analysemöglichkeiten es hier gibt.
&lt;/p&gt;
&lt;p&gt;
Zunächsteinmal habe ich folgende Zusammenhänge herausgefunden:
&lt;/p&gt;
&lt;p&gt;
Wenn man in einem Client (Visual Studio, Excel, Project, Web Access etc.) eine Iteration
anlegt, wird diese in der DB der Project Collection unter der Tabelle tbl_Nodes eingetragen.
Dann wird eine Stored Procedure aufgerufen die eine Verarbeitung antriggert. Diese
Verarbeitung wird vom Visual Studio Team Foundation Background Job Agent ausgeführt.
Dieser schreibt dann einen neuen Eintrag in die Tabelle TreeNodes. Von dort werden
die Items für die Work Items gelesen.
&lt;/p&gt;
&lt;p&gt;
Damit ergeben sich folgende Schritte die ich empfehlen kann um das Problem zu untersuchen:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Prüfen ob der Visual Studio Team Foundation Background Job Agent Dienst läuft und
ob dieser mit dem Account ausgeführt wird mit dem auch der TFS installiert wurde. 
&lt;li&gt;
Prüfen ob die neuen Areas sowohl in tbl_Nodes als auch in TreeNodes eingetragen werden 
&lt;li&gt;
Für den Visual Studio Team Foundation Background Job Agent kann ein Tracing aktiviert
werden. In diesem sollte ein entsprechender Eintrag für die Verarbeitung der Area
stehen. Man kann einfach nach dem Namen der neuen Area suchen. Das Tracing aktiviert
man in der Datei "C:\Program Files\Microsoft Team Foundation Server 2010\Application
Tier\TFSJobAgent\TfsJobAgent.exe.config"&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;...&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.diagnostics&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;trace&lt;/span&gt; &lt;span class="attr"&gt;autoflush&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt; &lt;span class="attr"&gt;indentsize&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--To
enable tracing to file, simply uncomment listeners section and set trace switch(es)
below.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&lt;span class="rem"&gt; Directory
specified for TextWriterTraceListener output must exist, and job agent service account
must have write permissions. --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--&amp;lt;listeners&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;&lt;span class="rem"&gt; &amp;lt;add
name="myListener" &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;&lt;span class="rem"&gt; type="System.Diagnostics.TextWriterTraceListener" &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;&lt;span class="rem"&gt; initializeData="C:\Replace_Me_With_A_Directory_The_Service_Account_Can_Write_To\jobagent.log"
/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt;&lt;span class="rem"&gt; &amp;lt;remove
name="Default" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt;&lt;span class="rem"&gt; &amp;lt;/listeners&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;trace&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;switches&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--
Trace Switches&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt;&lt;span class="rem"&gt; Each
of the trace switches should be set to a value between 0 and 4, inclusive.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt;&lt;span class="rem"&gt; 0:
No trace output&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt;&lt;span class="rem"&gt; 1-4:
Increasing levels of trace output; see Systems.Diagnostics.TraceLevel--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="API"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Authentication"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Authorization"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Database"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="General"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="traceLevel"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;switches&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.diagnostics&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt;...&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;blockquote style="margin-right: 0px" dir="ltr"&gt; 
&lt;p&gt;
Die Zeilen 6-11 müssen einkommentiert und für das Log-File ein gültiger Pfad angegeben
werden. Dann kann man die Trace-Levels auf einen Wert zwischen 1 und 4 für die einzelnen
bereiche setzen. Ich hatte einfach mall alles auf 4 gesetzt. Natürlich nicht vergessen
das nach der Fehleranalyse wieder zurückzusetzen. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p dir="ltr"&gt;
Damit sollte sich der Fehler identifizieren und beheben lassen. Viel Erfolg!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa417daa-6983-4298-8fb4-c85e4cdb91c5" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,aa417daa-6983-4298-8fb4-c85e4cdb91c5.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=55f176f6-d945-4689-b446-bf0f4f5ae465</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,55f176f6-d945-4689-b446-bf0f4f5ae465.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,55f176f6-d945-4689-b446-bf0f4f5ae465.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=55f176f6-d945-4689-b446-bf0f4f5ae465</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h1>
          <a name="_Toc294041999">
            <span style="mso-bookmark: wi_4792">
              <font face="Arial Black">
                <font style="font-size: 12pt" color="#244061">
                  <font style="font-weight: normal">Erstellen
einer simplen Custom Checkin Policy</font>
                </font>
              </font>
            </span>
          </a>
          <span style="mso-bookmark: wi_4792">
          </span>
        </h1>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <span style="mso-bookmark: wi_4792">
            <font face="Arial">
              <font style="font-size: 11pt">In
diesem Beispiel wollen wir eine Custom Checkin Policy erstellen die prüft, ob beim
Checkin ein Kommentar min einer bestimmten Mindestlänge angegeben wurde. Es gibt ja
bereits mit den Powertools eine Policy die prüft, ob überhaupt ein Kommentar angegeben
wurde, aber wir wollen auch zu einem gewissen Maße prüfen, ob der Kommentar auch sinnvoll
ist indem wir eine Mindestlänge erwarten. Zur Erstellung dieser Policy gehen wir als
folgendermaßen vor:</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <span style="mso-bookmark: wi_4792">
            <font face="Arial">
              <font style="font-size: 11pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpFirst">
          <span style="mso-bookmark: wi_4792">
            <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
              <span style="mso-list: ignore">
                <font face="Arial">
                  <font style="font-size: 11pt">1.)</font>
                </font>
                <span style="line-height: normal; font-family: ">
                  <font face="Times New Roman">
                    <font style="font-size: 7pt">      </font>
                  </font>
                </span>
              </span>
            </span>
            <font face="Arial">
              <font style="font-size: 11pt">Wir
erstellen ein neues ClassLibrary Projekt in Visual Studio</font>
            </font>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpMiddle">
          <span style="mso-bookmark: wi_4792">
            <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
              <span style="mso-list: ignore">
                <font face="Arial">
                  <font style="font-size: 11pt">2.)</font>
                </font>
                <span style="line-height: normal; font-family: ">
                  <font face="Times New Roman">
                    <font style="font-size: 7pt">      </font>
                  </font>
                </span>
              </span>
            </span>
            <font face="Arial">
              <font style="font-size: 11pt">Wir
fügen eine Referenz zur Microsoft.Teafoundation.VersionControl.Client.dll hinzu. Diese
findet man unter ReferenceAssemblies im VS DIE Ordner, also z.B. C:\Program Files
(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.VersionControl.Client.dll</font>
            </font>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpMiddle">
          <span style="mso-bookmark: wi_4792">
            <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
              <span style="mso-list: ignore">
                <font face="Arial">
                  <font style="font-size: 11pt">3.)</font>
                </font>
                <span style="line-height: normal; font-family: ">
                  <font face="Times New Roman">
                    <font style="font-size: 7pt">      </font>
                  </font>
                </span>
              </span>
            </span>
            <font face="Arial">
              <font style="font-size: 11pt">Wir
leiten unsere Klasse von PolicyBase ab und lassen Stubs generieren. Der Zwischenstand
sieht dann so aus:</font>
            </font>
            <br />
            <span style="mso-no-proof: yes">
              <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image002%5B4%5D.jpg">
                <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image002%5B4%5D_thumb.jpg" width="604" height="427" />
              </a>
            </span>
            <br style="mso-special-character: line-break" />
            <br style="mso-special-character: line-break" />
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpLast">
          <span style="mso-bookmark: wi_4792">
            <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
              <span style="mso-list: ignore">
                <font face="Arial">
                  <font style="font-size: 11pt">4.)</font>
                </font>
                <span style="line-height: normal; font-family: ">
                  <font face="Times New Roman">
                    <font style="font-size: 7pt">      </font>
                  </font>
                </span>
              </span>
            </span>
            <font face="Arial">
              <font style="font-size: 11pt">Wir
setzen nun die Properties mit entsprechenden Werten, z.B.</font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff">public
override string Description</font>
              </font>
            </span>
          </span>
          <span style="mso-bookmark: wi_4792">
            <span style="font-family: ; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt" lang="EN-US">
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">    </font>
                  </span>
                  <font style="font-size: 7pt">
                    <span style="mso-spacerun: yes">    </span>{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">get </font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">                </font>
                  </span>
                  <font style="font-size: 7pt">return </font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#a31515">"Will
check if the checkin comment is at least 10 letters long."</font>
                </span>
              </font>
              <span lang="EN-US">
                <font color="#0000ff">
                  <font style="font-size: 7pt">;</font>
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">    </font>
                  </span>
                </font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff"> </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">public
override bool Edit(</font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#2b91af">IPolicyEditArgs</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff"> policyEditArgs)</font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">return
true;</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff"> </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">public
override </font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#2b91af">PolicyFailure</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff">[]
Evaluate()</font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">throw
new </font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#2b91af">NotImplementedException</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff">();</font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff"> </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">public
override string Type</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">get </font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">                </font>
                  </span>
                  <font style="font-size: 7pt">return </font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#a31515">"Changeset
Comments Length Policy"</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff">;</font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff"> </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">public
override string TypeDescription</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">get</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">{</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">                </font>
                  </span>
                  <font style="font-size: 7pt">return </font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#a31515">"This
policy will require users to provide checkin comments of a minimum length."</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff">;</font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">            </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">        </font>
                  </span>
                  <font style="font-size: 7pt">}</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpFirst">
          <span style="mso-bookmark: wi_4792">
            <font face="Arial">
              <font style="font-size: 11pt">Wichtig
sind hier vor allem Type und Type Description da diese bei der Auswahl der Policy
angezeigt werden.</font>
            </font>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpLast">
          <span style="mso-bookmark: wi_4792">
            <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
              <span style="mso-list: ignore">
                <font face="Arial">
                  <font style="font-size: 11pt">5.)</font>
                </font>
                <span style="line-height: normal; font-family: ">
                  <font face="Times New Roman">
                    <font style="font-size: 7pt">      </font>
                  </font>
                </span>
              </span>
            </span>
            <font face="Arial">
              <font style="font-size: 11pt">Nun
wollen wir die Evaluate-Methode implementieren. Diese wird vor dem Checkin ausgeführt
und liefert mögliche Verletzungen der Policy zurück. Nur wenn keine Verletzungen gemeldet
werden, wird der Checkin ausgeführt. Da wir hier den Checkin Comment prüfen wollen,
brauchen wir Zugriff auf das Changeset. Dazu brauchen wir zuerst ein Feld das den
Checkin enthält:</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoListParagraph">
          <span style="mso-bookmark: wi_4792">
            <span style="font-family: ; color: ">
              <font face="Consolas">
                <font style="font-size: 9.5pt" color="#0000ff"> </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <font style="font-size: 7pt">private </font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#2b91af">IPendingCheckin</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff"> currentPendingCheckin;</font>
              </span>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraph">
          <span style="mso-bookmark: wi_4792">
            <b style="mso-bidi-font-weight: normal">
              <font face="Arial">
                <font style="font-size: 11pt"> </font>
              </font>
            </b>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung">
          <span style="mso-bookmark: wi_4792">
            <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
              <span style="mso-list: ignore">
                <font face="Arial">
                  <font style="font-size: 11pt">6.)</font>
                </font>
                <span style="line-height: normal; font-family: ">
                  <font face="Times New Roman">
                    <font style="font-size: 7pt">      </font>
                  </font>
                </span>
              </span>
            </span>
            <font face="Arial">
              <font style="font-size: 11pt">Nun
überschreiben wir die Initialize-Methode und setzen hier unser currentPendingCheckin:</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraph">
          <span style="mso-bookmark: wi_4792">
            <font face="Arial">
              <font style="font-size: 11pt"> </font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span style="mso-bookmark: wi_4792">
              <span lang="EN-US">
                <font color="#0000ff">
                  <font style="font-size: 7pt">public
override void Initialize(</font>
                </font>
              </span>
            </span>
            <span style="mso-bookmark: wi_4792">
              <font style="font-size: 7pt">
                <span style="color: " lang="EN-US">
                  <font color="#2b91af">IPendingCheckin</font>
                </span>
              </font>
              <span lang="EN-US">
                <font style="font-size: 7pt" color="#0000ff"> pendingCheckin)</font>
              </span>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff">{</font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">    </font>
                  </span>
                  <font style="font-size: 7pt">base.Initialize(pendingCheckin);</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff"> </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font color="#0000ff">
                  <span style="mso-spacerun: yes">
                    <font style="font-size: 7pt">    </font>
                  </span>
                  <font style="font-size: 7pt">currentPendingCheckin
= pendingCheckin;</font>
                </font>
              </font>
            </span>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span style="mso-bookmark: wi_4792">
            <span lang="EN-US">
              <font face="Consolas">
                <font style="font-size: 7pt" color="#0000ff">}</font>
              </font>
            </span>
          </span>
          <a name="WI_4816">
            <span lang="EN-US">
            </span>
          </a>
        </p>
        <span style="mso-bookmark: wi_4816">
        </span>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt; tab-stops: 363.55pt" class="MsoNormal">
          <span style="mso-ansi-language: en-us" lang="EN-US">
            <span style="mso-tab-count: 1">
              <font face="Arial">
                <font style="font-size: 11pt">                                                                                                                         </font>
              </font>
            </span>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">7.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">      </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Anschließend
implementieren wir unsere Validierungslogik in der Evaluate-Methode:</font>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span lang="EN-US">
              <font color="#0000ff">
                <font style="font-size: 7pt">public
override </font>
              </font>
            </span>
            <font style="font-size: 7pt">
              <span style="color: " lang="EN-US">
                <font color="#2b91af">PolicyFailure</font>
              </span>
            </font>
            <span lang="EN-US">
              <font style="font-size: 7pt" color="#0000ff">[]
Evaluate()</font>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font style="font-size: 7pt" color="#0000ff">{</font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span lang="EN-US">
              <font color="#0000ff">
                <span style="mso-spacerun: yes">
                  <font style="font-size: 7pt">    </font>
                </span>
                <font style="font-size: 7pt">var
failures = new </font>
              </font>
            </span>
            <font style="font-size: 7pt">
              <span style="color: " lang="EN-US">
                <font color="#2b91af">List</font>
              </span>
              <span lang="EN-US">
                <font color="#0000ff">&lt;</font>
              </span>
              <span style="color: " lang="EN-US">
                <font color="#2b91af">PolicyFailure</font>
              </span>
            </font>
            <span lang="EN-US">
              <font style="font-size: 7pt" color="#0000ff">&gt;();</font>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font color="#0000ff">
                <span style="mso-spacerun: yes">
                  <font style="font-size: 7pt">    </font>
                </span>
                <font style="font-size: 7pt">if
(currentPendingCheckin.PendingChanges.Comment.Length &lt; 10)</font>
              </font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font color="#0000ff">
                <span style="mso-spacerun: yes">
                  <font style="font-size: 7pt">    </font>
                </span>
                <font style="font-size: 7pt">{</font>
              </font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm -21.4pt 0pt 42.55pt" class="Code">
          <font face="Consolas">
            <span lang="EN-US">
              <font color="#0000ff">
                <span style="mso-spacerun: yes">
                  <font style="font-size: 7pt">        </font>
                </span>
                <font style="font-size: 7pt">failures.Add(new </font>
              </font>
            </span>
            <font style="font-size: 7pt">
              <span style="color: " lang="EN-US">
                <font color="#2b91af">PolicyFailure</font>
              </span>
              <span lang="EN-US">
                <font color="#0000ff">(</font>
              </span>
              <span style="color: " lang="EN-US">
                <font color="#a31515">"Checkin
Comment is too short, at least 10 letters are required"</font>
              </span>
            </font>
            <span lang="EN-US">
              <font style="font-size: 7pt" color="#0000ff">,
this));</font>
            </span>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font color="#0000ff">
                <span style="mso-spacerun: yes">
                  <font style="font-size: 7pt">    </font>
                </span>
                <font style="font-size: 7pt">}</font>
              </font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font color="#0000ff">
                <span style="mso-spacerun: yes">
                  <font style="font-size: 7pt">    </font>
                </span>
                <font style="font-size: 7pt">return
failures.ToArray();</font>
              </font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font style="font-size: 7pt" color="#0000ff">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">8.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">      </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Dann
folgt noch ein wichtiger Schritt, wir müssen die Klasse serialisierbar machen </font>
          </font>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font style="font-size: 7pt" color="#0000ff">[Serializable]</font>
            </font>
          </span>
        </p>
        <p style="margin: 0cm 0cm 0pt 42.55pt" class="Code">
          <span lang="EN-US">
            <font face="Consolas">
              <font style="font-size: 7pt" color="#0000ff">public
class CheckinCommentLengthPolicy : PolicyBase</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">9.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">      </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Nun
kompilieren wir die Solution und kopieren die DLL in einen lokalen Ordner. Anschließend
tragen wir in der Registry unter „HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin
Policies“ einen neuen String Value ein dem wir den Pfad zu unserer Assembly übergeben.
Der angegebene Pfad in der Registry ist dabei für x64 Systeme angegeben. Bei c86 Systemen
lautet der passende Pfad „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin
Policies“.</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraph">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image004%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image004%5B4%5D_thumb.jpg" width="605" height="148" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpFirst">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">10.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Nun
starten wir Visual Studio neu und aktivieren die neue Checkin Policy. Dazu klicken
wir im Team-Explorer mit der rechten Maustaste auf das Team-Projekt dann unter Team
Project Settings / Source Control und dort wechseln wir dann auf den Reiter „Check-in
Policy“. Über den Button Add können wir unsere Policy auswählen und hinzufügen.</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpMiddle">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image006%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006[4]" border="0" alt="clip_image006[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image006%5B4%5D_thumb.jpg" width="280" height="194" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpMiddle">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpLast">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">11.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Nun
können wir einen Eincheckvorgang vornehmen und wir werden sehen, wenn wir einen leere
checkin Comment angeben oder einen zu kurzen, erhalten wir eine Meldung.</font>
          </font>
        </p>
        <span style="font-family: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: de; mso-fareast-language: de; mso-bidi-language: ar-sa">
          <br style="page-break-before: always; mso-special-character: line-break" clear="all" />
        </span>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpFirst">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image008%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008[4]" border="0" alt="clip_image008[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image008%5B4%5D_thumb.jpg" width="250" height="170" />
            </a>
          </span>
        </p>
        <p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpLast">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <h1>
          <a name="_Toc294042000">
            <font face="Arial Black">
              <font style="font-size: 12pt" color="#244061">
                <font style="font-weight: normal">Konfigurierbarkeit
der Policy hinzufügen</font>
              </font>
            </font>
          </a>
        </h1>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt">Nun wollen wir die Anzahl der Mindestzeichen
noch konfigurierbar machen. Dazu erweitern wir unsere Policy.</font>
          </font>
        </p>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpFirst">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">1.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Zunächst
fügen wir einen Winforms-Dialog hinzu der für die Eingabe des Wertes dient.</font>
          </font>
          <br />
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image010%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010[4]" border="0" alt="clip_image010[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image010%5B4%5D_thumb.jpg" width="231" height="69" />
            </a>
          </span>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpLast">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">2.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Im
Code definieren wir ein public field über das wir die Anzahl übergeben bzw. auslesen
können.</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; color: ">
              <font color="#0000ff">
                <font style="font-size: 7pt">public</font>
              </font>
            </span>
            <span style="font-family: ">
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">partial</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">class</font>
                </span>
                <span style="color: ">
                  <font color="#2b91af">CheckinCommentLengthConfigDialog</font>
                </span> : </font>
              <span style="color: ">
                <font style="font-size: 7pt" color="#2b91af">Form</font>
              </span>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt">{</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">public</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">int</font>
                </span> MinimumCommentLength;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">public</font>
                </span> CheckinCommentLengthConfigDialog()</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">{</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">InitializeComponent();</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">private</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">void</font>
                </span> btnOK_Click(<span style="color: "><font color="#0000ff">object</font></span> sender, <span style="color: "><font color="#2b91af">EventArgs</font></span> e)</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
            </span>
            <span style="font-family: ">
              <font style="font-size: 7pt">{</font>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">MinimumCommentLength
= (<span style="color: "><font color="#0000ff">int</font></span>)<span style="color: "><font color="#0000ff">this</font></span>.numericUpDown1.Value;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
            </span>
            <span style="font-family: ">
              <font style="font-size: 7pt">}</font>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">private</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">void</font>
                </span> CheckinCommentLengthConfigDialog_Load(<span style="color: "><font color="#0000ff">object</font></span> sender, <span style="color: "><font color="#2b91af">EventArgs</font></span> e)</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
            </span>
            <span style="font-family: ">
              <font style="font-size: 7pt">{</font>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">this</font>
                </span>.numericUpDown1.Value
= MinimumCommentLength;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraph">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">3.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Im
Code unserer Policy fügen wir ein private field hinzu in dem wir den Wert speichern
können und verwenden diesen in unserer Evaluate Methode. Zusätzlich geben wir im Property
CanEdit den Wert true zurück. Und wir implementieren die Edit-Methode so, dass hier
unser Formular aufgerufen wird:</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US">
              <font color="#0000ff">
                <font style="font-size: 7pt">public</font>
              </font>
            </span>
            <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">override</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">bool</font>
                </span> Edit(<span style="color: "><font color="#2b91af">IPolicyEditArgs</font></span> policyEditArgs)</font>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt">{</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">using</font>
                </span> (<span style="color: "><font color="#2b91af">CheckinCommentLengthConfigDialog</font></span> dialog
= <span style="color: "><font color="#0000ff">new</font></span><span style="color: "><font color="#2b91af">CheckinCommentLengthConfigDialog</font></span>())</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
            </span>
            <span style="font-family: ">
              <font style="font-size: 7pt">{</font>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">dialog.MinimumCommentLength
= minimumCommentLength;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">if</font>
                </span> (dialog.ShowDialog()
== <span style="color: "><font color="#2b91af">DialogResult</font></span>.OK)</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">{</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">            </font>
              </span>
              <font style="font-size: 7pt">minimumCommentLength
= dialog.MinimumCommentLength;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">            </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">return</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">true</font>
                </span>;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">return</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">false</font>
                </span>;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt"> </font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <font face="Consolas">
            <span style="font-family: ; color: ">
              <font color="#0000ff">
                <font style="font-size: 7pt">public</font>
              </font>
            </span>
            <span style="font-family: ">
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">override</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">bool</font>
                </span> CanEdit</font>
            </span>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt">{</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <span style="color: ">
                <font style="font-size: 7pt" color="#0000ff">get</font>
              </span>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">{</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">        </font>
              </span>
              <font style="font-size: 7pt">
                <span style="color: ">
                  <font color="#0000ff">return</font>
                </span>
                <span style="color: ">
                  <font color="#0000ff">true</font>
                </span>;</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <span style="mso-spacerun: yes">
                <font style="font-size: 7pt">    </font>
              </span>
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 7pt">}</font>
            </font>
          </span>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpFirst">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">4.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Nach
dem Kompilieren können wir dann die DLL an den Ort kopieren den wir in der Registry
eingetragen haben (bei mir c:\temp). Damit diese Date überschrieben werden kann, müssen
wir Visual Studio beenden. Nun können wir für unsere Policy den Edit-Dialog aufrufen:</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpLast">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image012%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012[4]" border="0" alt="clip_image012[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image012%5B4%5D_thumb.jpg" width="300" height="208" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <h1>
          <a name="_Toc294042001">
            <font face="Arial Black">
              <font style="font-size: 12pt" color="#244061">
                <font style="font-weight: normal">Verbessertes
Deployment der Policy</font>
              </font>
            </font>
          </a>
        </h1>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt">Nun wollen wir das Deployment unserer
Policy nov vereinfachen. Aktuell wäre es so, dass auf jedem Rechner auf dem die Policy
geprüft werden soll die DLL kopiert und der entsprechende Registry-Eintrag vorgenommen
werden muss. Das ist natürlich nicht besonders elegant. Wir müssen die Policy zwar
auf jedem Rechner installieren, da sonst die Policy immer als verletzt gilt, aber
die Installation können wir durch den Einsatz von VSIX deutlich einfacher machen.</font>
          </font>
        </p>
        <p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpFirst">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">1.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Zunächst
müssen wir das Visual Studio SDK herunterladen und installieren. Der Download für
die SP1-Version befindet sich unter </font>
          </font>
          <font style="font-size: 11pt">
            <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=21307C23-F0FF-4EF2-A0A4-DCA54DDB1E21">
              <font color="#0000ff" face="Arial">
                <u>http://www.microsoft.com/downloads/en/details.aspx?FamilyID=21307C23-F0FF-4EF2-A0A4-DCA54DDB1E21</u>
              </font>
            </a>
          </font>
          <font face="Arial">
            <font style="font-size: 11pt">
            </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">2.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Dann
fügen wir ein neues Projekt zu unserer Solution hinzu und wählen die Vorlage VSIX
Project</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image014%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image014[4]" border="0" alt="clip_image014[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image014%5B4%5D_thumb.jpg" width="430" height="304" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">3.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Im
Manifest des VSIX Projektes tragen wir nun die entsprechenden Werte ein und fügen
unser Policy-Projekt als MEF Component im Bereich Content hinzu.</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image016%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016[4]" border="0" alt="clip_image016[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image016%5B4%5D_thumb.jpg" width="604" height="386" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpLast">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">4.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Damit
unser Eintrag in der Registry noch hinzugefügt wird, fügen wir noch eine Text-Datei
mit dem Namen „Policies.pkgdef“ hinzu und schreiben dort folgenden Inhalt rein:</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ; mso-ansi-language: en-us" lang="EN-US">
            <font face="Consolas">
              <font style="font-size: 9.5pt">[$RootKey$\TeamFoundation\SourceControl\Checkin
Policies]</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal">
          <span style="font-family: ">
            <font face="Consolas">
              <font style="font-size: 9.5pt">"artisoCheckinPolicies"="$PackageFolder$\artisoCheckinPolicies.dll"</font>
            </font>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpFirst">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">5.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Wichtig
ist noch, dass wir bei der pkgdef-Datei in den Eigenschaften „Include in VSIX“ auf
True stellen.</font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image018%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image018[4]" border="0" alt="clip_image018[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image018%5B4%5D_thumb.jpg" width="211" height="131" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">6.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Nun
kompilieren wir unsere Solution. Wenn alles fehlerfrei erstellt wird, bereinigen wir
zunächst unsere manuellen Einstellungen, d.h. wir entfernen zunächst die Policy auf
unserem Team-Projekt. Anschließen löschen wir die DLL und die Registry-Einträge die
wir im ersten Teil angelegt haben. Dazu müssen wir zuvor Visual Studio wieder beenden.
Nach dem Entfernen sollte die Policy in der Liste der verfügbaren Checkin Policies
nicht mehr erscheinen. Aus dem Output unseres Setup-Projektes können wir nun die vsix-Datei
starten und die Policy installieren. </font>
          </font>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <span style="mso-no-proof: yes">
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image020%5B4%5D.jpg">
              <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image020[4]" border="0" alt="clip_image020[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image020%5B4%5D_thumb.jpg" width="260" height="182" />
            </a>
          </span>
        </p>
        <p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle">
          <font face="Arial">
            <font style="font-size: 11pt"> </font>
          </font>
        </p>
        <p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpLast">
          <span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin">
            <span style="mso-list: ignore">
              <font face="Arial">
                <font style="font-size: 11pt">7.)</font>
              </font>
              <span style="line-height: normal; font-family: ">
                <font face="Times New Roman">
                  <font style="font-size: 7pt">   </font>
                </font>
              </span>
            </span>
          </span>
          <font face="Arial">
            <font style="font-size: 11pt">Danach
sollte sich die Policy genauso aktivieren lassen wie zuvor.</font>
          </font>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=55f176f6-d945-4689-b446-bf0f4f5ae465" />
      </body>
      <title>Erstellung von Custom Checkin Policies für Team Foundation Server 2010</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,55f176f6-d945-4689-b446-bf0f4f5ae465.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,55f176f6-d945-4689-b446-bf0f4f5ae465.aspx</link>
      <pubDate>Mon, 12 Sep 2011 22:30:13 GMT</pubDate>
      <description>&lt;h1&gt;&lt;a name="_Toc294041999"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font face="Arial Black"&gt;&lt;font style="font-size: 12pt" color="#244061"&gt;&lt;font style="font-weight: normal"&gt;Erstellen
einer simplen Custom Checkin Policy&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;/span&gt;
&lt;/h1&gt;
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;In
diesem Beispiel wollen wir eine Custom Checkin Policy erstellen die prüft, ob beim
Checkin ein Kommentar min einer bestimmten Mindestlänge angegeben wurde. Es gibt ja
bereits mit den Powertools eine Policy die prüft, ob überhaupt ein Kommentar angegeben
wurde, aber wir wollen auch zu einem gewissen Maße prüfen, ob der Kommentar auch sinnvoll
ist indem wir eine Mindestlänge erwarten. Zur Erstellung dieser Policy gehen wir als
folgendermaßen vor:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpFirst"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;1.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Wir
erstellen ein neues ClassLibrary Projekt in Visual Studio&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpMiddle"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;2.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Wir
fügen eine Referenz zur Microsoft.Teafoundation.VersionControl.Client.dll hinzu. Diese
findet man unter ReferenceAssemblies im VS DIE Ordner, also z.B. C:\Program Files
(x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.VersionControl.Client.dll&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpMiddle"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;3.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Wir
leiten unsere Klasse von PolicyBase ab und lassen Stubs generieren. Der Zwischenstand
sieht dann so aus:&lt;/font&gt;&lt;/font&gt;
&lt;br&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image002%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image002%5B4%5D_thumb.jpg" width="604" height="427"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;br style="mso-special-character: line-break"&gt;
&lt;br style="mso-special-character: line-break"&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpLast"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;4.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Wir
setzen nun die Properties mit entsprechenden Werten, z.B.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;public
override string Description&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="font-family: ; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 11.0pt" lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;get &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;return &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#a31515"&gt;"Will
check if the checkin comment is at least 10 letters long."&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;;&lt;/font&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;public
override bool Edit(&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;IPolicyEditArgs&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt; policyEditArgs)&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;return
true;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;public
override &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;PolicyFailure&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;[]
Evaluate()&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;throw
new &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;NotImplementedException&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;();&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;public
override string Type&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;get &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;return &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#a31515"&gt;"Changeset
Comments Length Policy"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;public
override string TypeDescription&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;get&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;return &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#a31515"&gt;"This
policy will require users to provide checkin comments of a minimum length."&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpFirst"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Wichtig
sind hier vor allem Type und Type Description da diese bei der Auswahl der Policy
angezeigt werden.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpLast"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;5.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun
wollen wir die Evaluate-Methode implementieren. Diese wird vor dem Checkin ausgeführt
und liefert mögliche Verletzungen der Policy zurück. Nur wenn keine Verletzungen gemeldet
werden, wird der Checkin ausgeführt. Da wir hier den Checkin Comment prüfen wollen,
brauchen wir Zugriff auf das Changeset. Dazu brauchen wir zuerst ein Feld das den
Checkin enthält:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt; text-autospace: ; mso-layout-grid-align: none" class="MsoListParagraph"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;private &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;IPendingCheckin&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt; currentPendingCheckin;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraph"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;6.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun
überschreiben wir die Initialize-Methode und setzen hier unser currentPendingCheckin:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraph"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;public
override void Initialize(&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bookmark: wi_4792"&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;IPendingCheckin&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt; pendingCheckin)&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;base.Initialize(pendingCheckin);&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;currentPendingCheckin
= pendingCheckin;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span style="mso-bookmark: wi_4792"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;a name="WI_4816"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;span style="mso-bookmark: wi_4816"&gt;&lt;/span&gt; 
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt; tab-stops: 363.55pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;7.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Anschließend
implementieren wir unsere Validierungslogik in der Evaluate-Methode:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;public
override &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;PolicyFailure&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;[]
Evaluate()&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;var
failures = new &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;PolicyFailure&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;&amp;gt;();&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;if
(currentPendingCheckin.PendingChanges.Comment.Length &amp;lt; 10)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm -21.4pt 0pt 42.55pt" class="Code"&gt;
&lt;font face="Consolas"&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;failures.Add(new &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#2b91af"&gt;PolicyFailure&lt;/font&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/span&gt;&lt;span style="color: " lang="EN-US"&gt;&lt;font color="#a31515"&gt;"Checkin
Comment is too short, at least 10 letters are required"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="EN-US"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;,
this));&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;return
failures.ToArray();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;8.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Dann
folgt noch ein wichtiger Schritt, wir müssen die Klasse serialisierbar machen &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;[Serializable]&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 0pt 42.55pt" class="Code"&gt;
&lt;span lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;public
class CheckinCommentLengthPolicy : PolicyBase&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="Aufzhlung"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;9.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun
kompilieren wir die Solution und kopieren die DLL in einen lokalen Ordner. Anschließend
tragen wir in der Registry unter „HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin
Policies“ einen neuen String Value ein dem wir den Pfad zu unserer Assembly übergeben.
Der angegebene Pfad in der Registry ist dabei für x64 Systeme angegeben. Bei c86 Systemen
lautet der passende Pfad „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Checkin
Policies“.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraph"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image004%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image004%5B4%5D_thumb.jpg" width="605" height="148"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpFirst"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;10.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun
starten wir Visual Studio neu und aktivieren die neue Checkin Policy. Dazu klicken
wir im Team-Explorer mit der rechten Maustaste auf das Team-Projekt dann unter Team
Project Settings / Source Control und dort wechseln wir dann auf den Reiter „Check-in
Policy“. Über den Button Add können wir unsere Policy auswählen und hinzufügen.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpMiddle"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image006%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006[4]" border="0" alt="clip_image006[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image006%5B4%5D_thumb.jpg" width="280" height="194"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpMiddle"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: l2 level1 lfo1" class="AufzhlungCxSpLast"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;11.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun
können wir einen Eincheckvorgang vornehmen und wir werden sehen, wenn wir einen leere
checkin Comment angeben oder einen zu kurzen, erhalten wir eine Meldung.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;span style="font-family: ; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: de; mso-fareast-language: de; mso-bidi-language: ar-sa"&gt;
&lt;br style="page-break-before: always; mso-special-character: line-break" clear="all"&gt;
&lt;/span&gt; 
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpFirst"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image008%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008[4]" border="0" alt="clip_image008[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image008%5B4%5D_thumb.jpg" width="250" height="170"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -24.55pt; margin: 0cm 0cm 0pt 42.55pt; mso-list: none" class="AufzhlungCxSpLast"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;h1&gt;&lt;a name="_Toc294042000"&gt;&lt;font face="Arial Black"&gt;&lt;font style="font-size: 12pt" color="#244061"&gt;&lt;font style="font-weight: normal"&gt;Konfigurierbarkeit
der Policy hinzufügen&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun wollen wir die Anzahl der Mindestzeichen
noch konfigurierbar machen. Dazu erweitern wir unsere Policy.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;1.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Zunächst
fügen wir einen Winforms-Dialog hinzu der für die Eingabe des Wertes dient.&lt;/font&gt;&lt;/font&gt;
&lt;br&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image010%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010[4]" border="0" alt="clip_image010[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image010%5B4%5D_thumb.jpg" width="231" height="69"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpLast"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;2.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Im
Code definieren wir ein public field über das wir die Anzahl übergeben bzw. auslesen
können.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: "&gt;&lt;font style="font-size: 7pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;partial&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;CheckinCommentLengthConfigDialog&lt;/font&gt;&lt;/span&gt; : &lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 7pt" color="#2b91af"&gt;Form&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; MinimumCommentLength;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; CheckinCommentLengthConfigDialog()&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;InitializeComponent();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnOK_Click(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;EventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: "&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;MinimumCommentLength
= (&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt;)&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.numericUpDown1.Value;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: "&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; CheckinCommentLengthConfigDialog_Load(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;EventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: "&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.numericUpDown1.Value
= MinimumCommentLength;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraph"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;3.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Im
Code unserer Policy fügen wir ein private field hinzu in dem wir den Wert speichern
können und verwenden diesen in unserer Evaluate Methode. Zusätzlich geben wir im Property
CanEdit den Wert true zurück. Und wir implementieren die Edit-Methode so, dass hier
unser Formular aufgerufen wird:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font style="font-size: 7pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;override&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;/span&gt; Edit(&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IPolicyEditArgs&lt;/font&gt;&lt;/span&gt; policyEditArgs)&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;CheckinCommentLengthConfigDialog&lt;/font&gt;&lt;/span&gt; dialog
= &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;CheckinCommentLengthConfigDialog&lt;/font&gt;&lt;/span&gt;())&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: "&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;dialog.MinimumCommentLength
= minimumCommentLength;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (dialog.ShowDialog()
== &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;DialogResult&lt;/font&gt;&lt;/span&gt;.OK)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;minimumCommentLength
= dialog.MinimumCommentLength;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;font face="Consolas"&gt;&lt;span style="font-family: ; color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 7pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: "&gt;&lt;font style="font-size: 7pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;override&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;bool&lt;/font&gt;&lt;/span&gt; CanEdit&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 7pt" color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 7pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo2" class="MsoListParagraphCxSpFirst"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;4.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nach
dem Kompilieren können wir dann die DLL an den Ort kopieren den wir in der Registry
eingetragen haben (bei mir c:\temp). Damit diese Date überschrieben werden kann, müssen
wir Visual Studio beenden. Nun können wir für unsere Policy den Edit-Dialog aufrufen:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpLast"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image012%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012[4]" border="0" alt="clip_image012[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image012%5B4%5D_thumb.jpg" width="300" height="208"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;h1&gt;&lt;a name="_Toc294042001"&gt;&lt;font face="Arial Black"&gt;&lt;font style="font-size: 12pt" color="#244061"&gt;&lt;font style="font-weight: normal"&gt;Verbessertes
Deployment der Policy&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun wollen wir das Deployment unserer
Policy nov vereinfachen. Aktuell wäre es so, dass auf jedem Rechner auf dem die Policy
geprüft werden soll die DLL kopiert und der entsprechende Registry-Eintrag vorgenommen
werden muss. Das ist natürlich nicht besonders elegant. Wir müssen die Policy zwar
auf jedem Rechner installieren, da sonst die Policy immer als verletzt gilt, aber
die Installation können wir durch den Einsatz von VSIX deutlich einfacher machen.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 18pt; margin: 0cm 0cm 0pt" class="MsoNormal"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpFirst"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;1.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Zunächst
müssen wir das Visual Studio SDK herunterladen und installieren. Der Download für
die SP1-Version befindet sich unter &lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 11pt"&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=21307C23-F0FF-4EF2-A0A4-DCA54DDB1E21"&gt;&lt;font color="#0000ff" face="Arial"&gt;&lt;u&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=21307C23-F0FF-4EF2-A0A4-DCA54DDB1E21&lt;/u&gt;&lt;/font&gt;&lt;/a&gt;&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt; &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;2.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Dann
fügen wir ein neues Projekt zu unserer Solution hinzu und wählen die Vorlage VSIX
Project&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image014%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image014[4]" border="0" alt="clip_image014[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image014%5B4%5D_thumb.jpg" width="430" height="304"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;3.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Im
Manifest des VSIX Projektes tragen wir nun die entsprechenden Werte ein und fügen
unser Policy-Projekt als MEF Component im Bereich Content hinzu.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image016%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016[4]" border="0" alt="clip_image016[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image016%5B4%5D_thumb.jpg" width="604" height="386"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpLast"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;4.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Damit
unser Eintrag in der Registry noch hinzugefügt wird, fügen wir noch eine Text-Datei
mit dem Namen „Policies.pkgdef“ hinzu und schreiben dort folgenden Inhalt rein:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: ; mso-ansi-language: en-us" lang="EN-US"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt"&gt;[$RootKey$\TeamFoundation\SourceControl\Checkin
Policies]&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 35.45pt; text-autospace: ; mso-layout-grid-align: none" class="MsoNormal"&gt;
&lt;span style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.5pt"&gt;"artisoCheckinPolicies"="$PackageFolder$\artisoCheckinPolicies.dll"&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpFirst"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;5.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Wichtig
ist noch, dass wir bei der pkgdef-Datei in den Eigenschaften „Include in VSIX“ auf
True stellen.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image018%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image018[4]" border="0" alt="clip_image018[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image018%5B4%5D_thumb.jpg" width="211" height="131"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;6.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Nun
kompilieren wir unsere Solution. Wenn alles fehlerfrei erstellt wird, bereinigen wir
zunächst unsere manuellen Einstellungen, d.h. wir entfernen zunächst die Policy auf
unserem Team-Projekt. Anschließen löschen wir die DLL und die Registry-Einträge die
wir im ersten Teil angelegt haben. Dazu müssen wir zuvor Visual Studio wieder beenden.
Nach dem Entfernen sollte die Policy in der Liste der verfügbaren Checkin Policies
nicht mehr erscheinen. Aus dem Output unseres Setup-Projektes können wir nun die vsix-Datei
starten und die Policy installieren. &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image020%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image020[4]" border="0" alt="clip_image020[4]" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/7f6e31deaad6_2D6/clip_image020%5B4%5D_thumb.jpg" width="260" height="182"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="text-indent: 0cm; margin: 0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"&gt;
&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; mso-list: l1 level1 lfo3" class="MsoListParagraphCxSpLast"&gt;
&lt;span style="mso-fareast-font-family: arial; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-latin"&gt;&lt;span style="mso-list: ignore"&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;7.)&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height: normal; font-family: "&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size: 7pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Arial"&gt;&lt;font style="font-size: 11pt"&gt;Danach
sollte sich die Policy genauso aktivieren lassen wie zuvor.&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=55f176f6-d945-4689-b446-bf0f4f5ae465" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,55f176f6-d945-4689-b446-bf0f4f5ae465.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>TFS API</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/93ce7e2dedc7_F779/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/93ce7e2dedc7_F779/image_thumb.png" width="310" height="89" />
          </a>
        </p>
        <p>
Auf der diesjährigen <a href="http://www.nrwconf.de/">NRW Conf</a> in Wuppertal hatte
ich am ersten Konferenztag einen ganztägigen Workshop zum Thema SCRUM und am zweiten
Tag einen Vortrag zum Thema Agile Projektplanung mit Scrum und User Stories. Die Veranstaltung
war wieder einmal super organisiert und sowohl der Workshop als auch der Vortrag waren
sehr gut besucht. 
</p>
        <p>
Die Folien zum Vortrag können hier heruntergeladen werden: 
</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:4f1cd78d-0c90-4776-ab1b-94a457f2979b" class="wlWriterEditableSmartContent">
          <div>
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/93ce7e2dedc7_F779/Agiles.Projektmanagement.pptx" target="_self">Download</a>
          </div>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3" />
      </body>
      <title>Vortr&amp;auml;ge auf der NRW Conf 2011</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3.aspx</link>
      <pubDate>Fri, 09 Sep 2011 15:53:58 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/93ce7e2dedc7_F779/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/93ce7e2dedc7_F779/image_thumb.png" width="310" height="89"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Auf der diesjährigen &lt;a href="http://www.nrwconf.de/"&gt;NRW Conf&lt;/a&gt; in Wuppertal hatte
ich am ersten Konferenztag einen ganztägigen Workshop zum Thema SCRUM und am zweiten
Tag einen Vortrag zum Thema Agile Projektplanung mit Scrum und User Stories. Die Veranstaltung
war wieder einmal super organisiert und sowohl der Workshop als auch der Vortrag waren
sehr gut besucht. 
&lt;/p&gt;
&lt;p&gt;
Die Folien zum Vortrag können hier heruntergeladen werden: 
&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:4f1cd78d-0c90-4776-ab1b-94a457f2979b" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/93ce7e2dedc7_F779/Agiles.Projektmanagement.pptx" target="_self"&gt;Download&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4b4100c7-2627-42c8-9b89-bd4ce1e2fdb3.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=02abface-1d3c-4eb6-8313-a76d9f947cec</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,02abface-1d3c-4eb6-8313-a76d9f947cec.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,02abface-1d3c-4eb6-8313-a76d9f947cec.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=02abface-1d3c-4eb6-8313-a76d9f947cec</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/SCRUM-Community-Event-bei-.Net-Developer_BFF3/scrumit_g_2.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="scrumit_g" border="0" alt="scrumit_g" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/SCRUM-Community-Event-bei-.Net-Developer_BFF3/scrumit_g_thumb.jpg" width="393" height="111" />
          </a>
        </p>
        <p>
Die .Net Developer-Group Ulm bietet am 13.10. die Möglichkeit sich 1 Tag lang rund
um das Thema SCRUM zu informieren. Hochkarätige Sprecher werden ihre Erfahrung und
ihr Wissen zu Scrum weitergeben. Die Themen sind dabei breit gefächert. Vom Einsteigervortrag
über tiefgreifende Aspekte von Scrum für diejenigen die Scrum bereits nutzen bis hin
zu Erfahrungsberichten decken wir ein breites Spektrum ab. Da ist für jeden etwas
bdabei, egal ob Entwickler, Scrum-Master, Product Owner oder Entscheider, egal ob
sie planen SCRUM einzuführen, sich nur mal informieren wollen oder SCRUM bereits einsetzen.
</p>
        <p>
Für eine Verpflegungspauschale von nur 20,—€ bekommen sie geballte Informationen aus
Expertenhand und können sich mit vielen Gleichgesinnten austauschen. Also nicht zögern,
sondern am besten gleich anmelden, die Plätze sind limitiert. 
</p>
        <p>
Anmeldung unter: <a href="http://www.dotnet-ulm.de/Anmeldung.aspx">http://www.dotnet-ulm.de/Anmeldung.aspx</a></p>
        <p>
Weitere Informationen und die Agenda in Kürze.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02abface-1d3c-4eb6-8313-a76d9f947cec" />
      </body>
      <title>SCRUM Community Event bei der .Net Developer-Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,02abface-1d3c-4eb6-8313-a76d9f947cec.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,02abface-1d3c-4eb6-8313-a76d9f947cec.aspx</link>
      <pubDate>Fri, 09 Sep 2011 15:23:24 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/SCRUM-Community-Event-bei-.Net-Developer_BFF3/scrumit_g_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="scrumit_g" border="0" alt="scrumit_g" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/SCRUM-Community-Event-bei-.Net-Developer_BFF3/scrumit_g_thumb.jpg" width="393" height="111"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Die .Net Developer-Group Ulm bietet am 13.10. die Möglichkeit sich 1 Tag lang rund
um das Thema SCRUM zu informieren. Hochkarätige Sprecher werden ihre Erfahrung und
ihr Wissen zu Scrum weitergeben. Die Themen sind dabei breit gefächert. Vom Einsteigervortrag
über tiefgreifende Aspekte von Scrum für diejenigen die Scrum bereits nutzen bis hin
zu Erfahrungsberichten decken wir ein breites Spektrum ab. Da ist für jeden etwas
bdabei, egal ob Entwickler, Scrum-Master, Product Owner oder Entscheider, egal ob
sie planen SCRUM einzuführen, sich nur mal informieren wollen oder SCRUM bereits einsetzen.
&lt;/p&gt;
&lt;p&gt;
Für eine Verpflegungspauschale von nur 20,—€ bekommen sie geballte Informationen aus
Expertenhand und können sich mit vielen Gleichgesinnten austauschen. Also nicht zögern,
sondern am besten gleich anmelden, die Plätze sind limitiert. 
&lt;/p&gt;
&lt;p&gt;
Anmeldung unter: &lt;a href="http://www.dotnet-ulm.de/Anmeldung.aspx"&gt;http://www.dotnet-ulm.de/Anmeldung.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen und die Agenda in Kürze.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02abface-1d3c-4eb6-8313-a76d9f947cec" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,02abface-1d3c-4eb6-8313-a76d9f947cec.aspx</comments>
      <category>Scrum</category>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3e17a4d6-ae98-4e02-a7b1-d73ff7342184</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3e17a4d6-ae98-4e02-a7b1-d73ff7342184.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3e17a4d6-ae98-4e02-a7b1-d73ff7342184.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3e17a4d6-ae98-4e02-a7b1-d73ff7342184</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Zwei Felder auf den Workitems im Team Foundation Server sind Area und Iteration. Das
besondere an diesen Feldern ist, dass sie hierarchische Inhalte abbilden. Als Standard-Wert
haben diese Felder den jeweiligen Root-Knoten der gleich heißt wie das zugehörige
Teamprojekt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_thumb.png" width="444" height="110" />
          </a>
        </p>
        <p>
Um zu verhindern, dass Workitems nicht einer spezifischen Area oder Iteration zugeordnet
sind und damit von entsprechenden Queries nicht mehr erfasst werden, wäre es ideal,
wenn man erzwingen könnte, dass eine spezifische Area oder Iteration ausgewählt sein
muss. 
</p>
        <p>
Leider schlagen die naheliegenden Lösungsansätze fehl. Wenn man auf dem IterationPath
oder der IterationID eine REQUIRED-Rule definiert, dann greift diese nicht, da die
Iteration ja nicht leer ist. Wenn man versucht mit deiner PROHIBITETED-Rule den Rootknoten
zum ungültigen Wert zu erklären, dann funktioniert das leider auch nicht. Dieser Versuch
wird quitiert mit der Meldung
</p>
        <p>
---------------------------<br />
Error<br />
---------------------------<br />
Error importing work item type definition:
</p>
        <p>
TF26062: Rule '&lt;REQUIRED /&gt;' is not supported for the field 'System.IterationPath'.<br />
---------------------------<br />
OK   
<br />
---------------------------<br /></p>
        <p>
 
</p>
        <p>
Deshalb müssen wir hier ein wenig in die Trickkiste greifen. Dazu legen wir zunächst
ein neues String-Feld an
</p>
        <pre class="csharpcode">
          <span class="kwrd">&lt;</span>
          <span class="html">FIELD</span>
          <span class="attr">refname</span>
          <span class="kwrd">="artiso.Iteration"</span>
          <span class="attr">name</span>
          <span class="kwrd">="Iteration"</span>
          <span class="attr">type</span>
          <span class="kwrd">="String"</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span>
          <span class="html">WHEN</span>
          <span class="attr">field</span>
          <span class="kwrd">="System.IterationPath"</span>
          <span class="attr">value</span>
          <span class="kwrd">="Training"</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span>
          <span class="html">COPY</span>
          <span class="attr">from</span>
          <span class="kwrd">="value"</span>
          <span class="attr">value</span>
          <span class="kwrd">="Empty"</span>
          <span class="kwrd">/&gt;</span>
          <span class="kwrd">&lt;/</span>
          <span class="html">WHEN</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span>
          <span class="html">WHENNOT</span>
          <span class="attr">field</span>
          <span class="kwrd">="System.IterationPath"</span>
          <span class="attr">value</span>
          <span class="kwrd">="Training"</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span>
          <span class="html">COPY</span>
          <span class="attr">from</span>
          <span class="kwrd">="value"</span>
          <span class="attr">value</span>
          <span class="kwrd">="Valid"</span>
          <span class="kwrd">/&gt;</span>
          <span class="kwrd">&lt;/</span>
          <span class="html">WHENNOT</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span>
          <span class="html">PROHIBITEDVALUES</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;</span>
          <span class="html">LISTITEM</span>
          <span class="attr">value</span>
          <span class="kwrd">="Empty"</span>
          <span class="kwrd">/&gt;</span>
          <span class="kwrd">&lt;/</span>
          <span class="html">PROHIBITEDVALUES</span>
          <span class="kwrd">&gt;</span>
          <span class="kwrd">&lt;/</span>
          <span class="html">FIELD</span>
          <span class="kwrd">&gt;</span>
        </pre>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
Wenn das Feld IterationPath den Inhalt “Training” (Root-Knoten) hat, dann wird in
dieses Feld “Empty” geschrieben, ansonsten “Valid”. Zusätzlich wird “Empty” als unzulässiger
Wert definiert. Dieses Feld fügen wir nicht in’s Layout ein, sondern lassen es unsichtbar.
Dadurch haben wir eine Validierung ob im Iterations-Feld ein andeer Wert als der Root-Wert
eingetragen ist. Einzige unschönheit dabei ist, dass die Meldung nicht eindeutig zu
dem Feld zugeordnet ist. Aber der gleiche Ansatz funktioniert für auch für Areas.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_thumb_1.png" width="954" height="174" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_thumb_2.png" width="954" height="178" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3e17a4d6-ae98-4e02-a7b1-d73ff7342184" />
      </body>
      <title>Iteration und Area im TFS als Pflichtfelder</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3e17a4d6-ae98-4e02-a7b1-d73ff7342184.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3e17a4d6-ae98-4e02-a7b1-d73ff7342184.aspx</link>
      <pubDate>Mon, 29 Aug 2011 23:06:45 GMT</pubDate>
      <description>&lt;p&gt;
Zwei Felder auf den Workitems im Team Foundation Server sind Area und Iteration. Das
besondere an diesen Feldern ist, dass sie hierarchische Inhalte abbilden. Als Standard-Wert
haben diese Felder den jeweiligen Root-Knoten der gleich heißt wie das zugehörige
Teamprojekt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_thumb.png" width="444" height="110"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Um zu verhindern, dass Workitems nicht einer spezifischen Area oder Iteration zugeordnet
sind und damit von entsprechenden Queries nicht mehr erfasst werden, wäre es ideal,
wenn man erzwingen könnte, dass eine spezifische Area oder Iteration ausgewählt sein
muss. 
&lt;/p&gt;
&lt;p&gt;
Leider schlagen die naheliegenden Lösungsansätze fehl. Wenn man auf dem IterationPath
oder der IterationID eine REQUIRED-Rule definiert, dann greift diese nicht, da die
Iteration ja nicht leer ist. Wenn man versucht mit deiner PROHIBITETED-Rule den Rootknoten
zum ungültigen Wert zu erklären, dann funktioniert das leider auch nicht. Dieser Versuch
wird quitiert mit der Meldung
&lt;/p&gt;
&lt;p&gt;
---------------------------&lt;br&gt;
Error&lt;br&gt;
---------------------------&lt;br&gt;
Error importing work item type definition:
&lt;/p&gt;
&lt;p&gt;
TF26062: Rule '&amp;lt;REQUIRED /&amp;gt;' is not supported for the field 'System.IterationPath'.&lt;br&gt;
---------------------------&lt;br&gt;
OK&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
---------------------------&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Deshalb müssen wir hier ein wenig in die Trickkiste greifen. Dazu legen wir zunächst
ein neues String-Feld an
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;="artiso.Iteration"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Iteration"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="String"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WHEN&lt;/span&gt; &lt;span class="attr"&gt;field&lt;/span&gt;&lt;span class="kwrd"&gt;="System.IterationPath"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Training"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;COPY&lt;/span&gt; &lt;span class="attr"&gt;from&lt;/span&gt;&lt;span class="kwrd"&gt;="value"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Empty"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WHEN&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WHENNOT&lt;/span&gt; &lt;span class="attr"&gt;field&lt;/span&gt;&lt;span class="kwrd"&gt;="System.IterationPath"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Training"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;COPY&lt;/span&gt; &lt;span class="attr"&gt;from&lt;/span&gt;&lt;span class="kwrd"&gt;="value"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Valid"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WHENNOT&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PROHIBITEDVALUES&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LISTITEM&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Empty"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PROHIBITEDVALUES&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
Wenn das Feld IterationPath den Inhalt “Training” (Root-Knoten) hat, dann wird in
dieses Feld “Empty” geschrieben, ansonsten “Valid”. Zusätzlich wird “Empty” als unzulässiger
Wert definiert. Dieses Feld fügen wir nicht in’s Layout ein, sondern lassen es unsichtbar.
Dadurch haben wir eine Validierung ob im Iterations-Feld ein andeer Wert als der Root-Wert
eingetragen ist. Einzige unschönheit dabei ist, dass die Meldung nicht eindeutig zu
dem Feld zugeordnet ist. Aber der gleiche Ansatz funktioniert für auch für Areas.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_thumb_1.png" width="954" height="174"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Iteration-und-Area-im-TFS-als-Pflichtfel_14FB2/image_thumb_2.png" width="954" height="178"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3e17a4d6-ae98-4e02-a7b1-d73ff7342184" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3e17a4d6-ae98-4e02-a7b1-d73ff7342184.aspx</comments>
      <category>Team System Server</category>
      <category>Tipps und Tricks</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f7ae4a85-3781-4982-90ab-c8a600c2efc8</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f7ae4a85-3781-4982-90ab-c8a600c2efc8.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f7ae4a85-3781-4982-90ab-c8a600c2efc8.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f7ae4a85-3781-4982-90ab-c8a600c2efc8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Lab Management des Team Foundation Servers eignet sich besonders gut um darin
Coded UI Tests automatisiert im Rahmen eines Builds auszuführen. Der Build setzt die
VM dabei auf einen Snapshot zurück, deployed die Applikation dann in die VM und führt
dann die CUIT aus. Wie das Ganze funktioniert habe ich in einem Webcast beschrieben
(<a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032476976">http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032476976</a>).
</p>
        <p>
Dabei kann allerdings nun ein Problem auftreten. Der Test meldet bei der Ausführung:
</p>
        <p>
          <strong>“Automation engine is unable to playback the test because it is not able to
interact with the desktop.  This could happen if the computer running the test
is locked or it’s remote session window is minimized.”</strong>
        </p>
        <p>
Das Problem besteht darin, dass der CUIT eine interaktive Desktop Session benötigt
um darin ausgeführt werden zu können. Als ich mich mit dem Environment Viewer auf
die Environment verbunden habe, konnte ich feststellen, dass die VM beim Anmeldebildschirm
stand. Das hatte ich nicht erwartet das die VM mit einem Autologon versehen war und
ich den Snapshot auch im angemeldeten Zustand erstellt habe. ich hätte also erwartet,
dass die VM nach einem Restore des Snapshots auch wieder angemeldet ist und der Test
problemlos laufen kann. 
</p>
        <p>
Um die Ursache des Problems zu erläutern müssen wir etwas tiefer einsteigen. Der Environmen
Viewer hat 2 Betriebs-Modi. Einmal Host-based und einmal Guest-based. Der aktuelle
Modus wird rechts unten im Environment Viewr angezeigt
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_thumb.png" width="367" height="90" />
          </a>
        </p>
        <p>
Host-based ist dabei die Verbindungsart bei der der Environment Viewer über den Hyper-V
Host auf die VM zugreift. Dieser Modus erlaubt es auch mit der VM zu interagieren
wenn diese noch gar nicht komplett hochgefahren ist, z.B. um aus dem Boot-Menü einen
Eintrag zu wählen. 
</p>
        <p>
Guest-based ist eine normale RDP (Remote Desktop Protocol) Verbindung. Dafür muss
die VM bereits hochgefahren sein. Guest-based Verbindungen sind etwas performanter
und erlauben auch zusätzliche Features wie z.B. den Austausch von daten über die Zwischenablage.
</p>
        <p>
Host-based wird dann verwendet wenn:
</p>
        <p>
1.) Der client der den Environment Viewer ausführt als Betriebssystem mindestens Windows
XP SP3, Windows Visua SP1, Windows 7 oder Windows Server 2008 ausführt und<br />
2.) Der Benutzer der den Environment Viewer ausführt auch der Ownder der Environment
ist
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_thumb_1.png" width="661" height="218" />
          </a>
        </p>
        <p>
Weitere Informationen zu den verschiedenen Connection Types finden sich unter <a href="http://msdn.microsoft.com/en-us/library/ee518907.aspx">http://msdn.microsoft.com/en-us/library/ee518907.aspx</a>.
</p>
        <p>
Zurück zu dem obenen beschriebenen Problem. Der Build funktioniert nur dann, wenn
der Snapshot auf den der Build zurücksetzt im Host-based Modus erstellt wurde. Andernfalls
bekommt man auch in der Build Definition bei der Auswahl des Snapshots einen entsprechenden
Hinweis.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_thumb_2.png" width="416" height="509" />
          </a>
        </p>
        <p>
Zu beachten ist allerdings, dass dieser Hinweis nur an dieser Stelle kommt, d.h. wenn
man den Wizard des Lab BuildProcessTemplates anzeigt oder bei der Ausführung bekommt
man keinen Hinweis mehr. Problem bei mir war, dass ich den Snapshot initial im Host-based
Modus erstellt hatte und damit den Build angelegt habe. Anschließend habe ich den
Snapshot aber gelöscht und neu angelegt und nun war ich im Guest-based Modus.
</p>
        <p>
          <strong>Problem-Lösung:</strong>
        </p>
        <p>
Wie lösen wir nun also dieses Problem? Es gibt zwei Möglichkeiten:
</p>
        <p>
1.) Wir erstellen die Snapshots immer im Host-based Modus. Dazu müssen wir im Environment
Viewer mit dem Benutzer angemeldet sein der auch der Owner der Environment ist. Wie
man den Owner einer Environment ändert ist hier beschrieben: <a href="http://blogs.msdn.com/b/lab_management/archive/2010/11/08/enabling-host-based-connection-for-virtual-environments.aspx">http://blogs.msdn.com/b/lab_management/archive/2010/11/08/enabling-host-based-connection-for-virtual-environments.aspx</a></p>
        <p>
2.) Wir verwenden einen Snapshot der im nicht gebooteten Zustand der VM erstellt wird.
Der Build startet die VM dann automatisch und die VM nutzt einen Autologon um sich
anzumelden. Damit kann der CUIT nun auch ausgeführt werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f7ae4a85-3781-4982-90ab-c8a600c2efc8" />
      </body>
      <title>Problem beim Ausführen von Coded UI Tests im Lab</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f7ae4a85-3781-4982-90ab-c8a600c2efc8.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f7ae4a85-3781-4982-90ab-c8a600c2efc8.aspx</link>
      <pubDate>Fri, 26 Aug 2011 10:28:13 GMT</pubDate>
      <description>&lt;p&gt;
Das Lab Management des Team Foundation Servers eignet sich besonders gut um darin
Coded UI Tests automatisiert im Rahmen eines Builds auszuführen. Der Build setzt die
VM dabei auf einen Snapshot zurück, deployed die Applikation dann in die VM und führt
dann die CUIT aus. Wie das Ganze funktioniert habe ich in einem Webcast beschrieben
(&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032476976"&gt;http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032476976&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
Dabei kann allerdings nun ein Problem auftreten. Der Test meldet bei der Ausführung:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;“Automation engine is unable to playback the test because it is not able to
interact with the desktop.&amp;nbsp; This could happen if the computer running the test
is locked or it’s remote session window is minimized.”&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Das Problem besteht darin, dass der CUIT eine interaktive Desktop Session benötigt
um darin ausgeführt werden zu können. Als ich mich mit dem Environment Viewer auf
die Environment verbunden habe, konnte ich feststellen, dass die VM beim Anmeldebildschirm
stand. Das hatte ich nicht erwartet das die VM mit einem Autologon versehen war und
ich den Snapshot auch im angemeldeten Zustand erstellt habe. ich hätte also erwartet,
dass die VM nach einem Restore des Snapshots auch wieder angemeldet ist und der Test
problemlos laufen kann. 
&lt;/p&gt;
&lt;p&gt;
Um die Ursache des Problems zu erläutern müssen wir etwas tiefer einsteigen. Der Environmen
Viewer hat 2 Betriebs-Modi. Einmal Host-based und einmal Guest-based. Der aktuelle
Modus wird rechts unten im Environment Viewr angezeigt
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_thumb.png" width="367" height="90"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Host-based ist dabei die Verbindungsart bei der der Environment Viewer über den Hyper-V
Host auf die VM zugreift. Dieser Modus erlaubt es auch mit der VM zu interagieren
wenn diese noch gar nicht komplett hochgefahren ist, z.B. um aus dem Boot-Menü einen
Eintrag zu wählen. 
&lt;/p&gt;
&lt;p&gt;
Guest-based ist eine normale RDP (Remote Desktop Protocol) Verbindung. Dafür muss
die VM bereits hochgefahren sein. Guest-based Verbindungen sind etwas performanter
und erlauben auch zusätzliche Features wie z.B. den Austausch von daten über die Zwischenablage.
&lt;/p&gt;
&lt;p&gt;
Host-based wird dann verwendet wenn:
&lt;/p&gt;
&lt;p&gt;
1.) Der client der den Environment Viewer ausführt als Betriebssystem mindestens Windows
XP SP3, Windows Visua SP1, Windows 7 oder Windows Server 2008 ausführt und&lt;br&gt;
2.) Der Benutzer der den Environment Viewer ausführt auch der Ownder der Environment
ist
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_thumb_1.png" width="661" height="218"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen zu den verschiedenen Connection Types finden sich unter &lt;a href="http://msdn.microsoft.com/en-us/library/ee518907.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee518907.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Zurück zu dem obenen beschriebenen Problem. Der Build funktioniert nur dann, wenn
der Snapshot auf den der Build zurücksetzt im Host-based Modus erstellt wurde. Andernfalls
bekommt man auch in der Build Definition bei der Auswahl des Snapshots einen entsprechenden
Hinweis.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-beim-Ausfhren-von-Coded-UI-Tests_A336/image_thumb_2.png" width="416" height="509"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Zu beachten ist allerdings, dass dieser Hinweis nur an dieser Stelle kommt, d.h. wenn
man den Wizard des Lab BuildProcessTemplates anzeigt oder bei der Ausführung bekommt
man keinen Hinweis mehr. Problem bei mir war, dass ich den Snapshot initial im Host-based
Modus erstellt hatte und damit den Build angelegt habe. Anschließend habe ich den
Snapshot aber gelöscht und neu angelegt und nun war ich im Guest-based Modus.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Problem-Lösung:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Wie lösen wir nun also dieses Problem? Es gibt zwei Möglichkeiten:
&lt;/p&gt;
&lt;p&gt;
1.) Wir erstellen die Snapshots immer im Host-based Modus. Dazu müssen wir im Environment
Viewer mit dem Benutzer angemeldet sein der auch der Owner der Environment ist. Wie
man den Owner einer Environment ändert ist hier beschrieben: &lt;a href="http://blogs.msdn.com/b/lab_management/archive/2010/11/08/enabling-host-based-connection-for-virtual-environments.aspx"&gt;http://blogs.msdn.com/b/lab_management/archive/2010/11/08/enabling-host-based-connection-for-virtual-environments.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
2.) Wir verwenden einen Snapshot der im nicht gebooteten Zustand der VM erstellt wird.
Der Build startet die VM dann automatisch und die VM nutzt einen Autologon um sich
anzumelden. Damit kann der CUIT nun auch ausgeführt werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f7ae4a85-3781-4982-90ab-c8a600c2efc8" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f7ae4a85-3781-4982-90ab-c8a600c2efc8.aspx</comments>
      <category>Lab Management</category>
      <category>Team System Server</category>
      <category>Testing</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=a815ab06-3d74-4097-a87e-d29cfd27bb94</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,a815ab06-3d74-4097-a87e-d29cfd27bb94.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,a815ab06-3d74-4097-a87e-d29cfd27bb94.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=a815ab06-3d74-4097-a87e-d29cfd27bb94</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ich bin vor kurzem auf ein unangenehmes Verhalten der TFS Work Item Queries gestossen.
Als Operator für textfelder bietet der TFS hier “Contains” an. Damit kann man nach
Teiltexten suchen, also z.B. findet eine Suche nach “Admin” Treffer mit “Admin”, “Administrator”,
Administration” etc. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_thumb.png" width="421" height="131" />
          </a>
        </p>
        <p>
Das funktioniert aber leider nur mit String-Feldern und nicht mit Plaintext. Bei Plaintext
funktioniert nur die Suche nach ganzen Wörtern. Das ist auch beim Einsatz des Plugins <a href="http://visualstudiogallery.msdn.microsoft.com/3f31bfff-5ecb-4e05-8356-04815851b8e7/">Search
Work Item for TFS 2010</a> der Fall, da diese Erweiterung im Hintergrund Queries verwendet
und man nicht deutlich erkennt, dass man nur eine Teilmenge erhalten hat, da die Suche
zwar in String-Feldern Teiltextegefunden hat aber nicht in den Plaintext-Feldern.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_thumb_1.png" width="420" height="177" />
          </a>
        </p>
        <p>
Das Problem dabei ist, dass der TFS hier die Full Text Search Engine des SQL-Servers
verwendet der dieses Verhalten besitzt. Als Workaround, der allerdings nicht besonders
schön ist, kann man sich behelfen indem man die Full Text Search Engine vom SQL-Server
deinstalliert. Alss Fallback sucht der TFS dann direkt auf den DB Tabellen und kann
dann auch auf Plaintext Teiltexte finden. Natürlich wirkt sich das negativ auf die
Performance der Suche aus, aber in einigen Fällen ist dieser Nachteil akzeptabel.
Die Full Text Seach Engine kann man übrigens entfernen indem man das SQL Server Setup
erneut aufruf und dann auf Remove klickt. Keine Angst, das deinstalliert nicht den
gesamten SQL-Server, sondern man kann in einer Liste die zu deinstallierenden Features
auswählen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=a815ab06-3d74-4097-a87e-d29cfd27bb94" />
      </body>
      <title>Problem mit Contains-Suche auf TFS Work Items</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,a815ab06-3d74-4097-a87e-d29cfd27bb94.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,a815ab06-3d74-4097-a87e-d29cfd27bb94.aspx</link>
      <pubDate>Tue, 09 Aug 2011 17:57:22 GMT</pubDate>
      <description>&lt;p&gt;
Ich bin vor kurzem auf ein unangenehmes Verhalten der TFS Work Item Queries gestossen.
Als Operator für textfelder bietet der TFS hier “Contains” an. Damit kann man nach
Teiltexten suchen, also z.B. findet eine Suche nach “Admin” Treffer mit “Admin”, “Administrator”,
Administration” etc. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_thumb.png" width="421" height="131"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Das funktioniert aber leider nur mit String-Feldern und nicht mit Plaintext. Bei Plaintext
funktioniert nur die Suche nach ganzen Wörtern. Das ist auch beim Einsatz des Plugins &lt;a href="http://visualstudiogallery.msdn.microsoft.com/3f31bfff-5ecb-4e05-8356-04815851b8e7/"&gt;Search
Work Item for TFS 2010&lt;/a&gt; der Fall, da diese Erweiterung im Hintergrund Queries verwendet
und man nicht deutlich erkennt, dass man nur eine Teilmenge erhalten hat, da die Suche
zwar in String-Feldern Teiltextegefunden hat aber nicht in den Plaintext-Feldern.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Problem-mit-Contains-Suche-auf-TFS-Work-_114B1/image_thumb_1.png" width="420" height="177"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Das Problem dabei ist, dass der TFS hier die Full Text Search Engine des SQL-Servers
verwendet der dieses Verhalten besitzt. Als Workaround, der allerdings nicht besonders
schön ist, kann man sich behelfen indem man die Full Text Search Engine vom SQL-Server
deinstalliert. Alss Fallback sucht der TFS dann direkt auf den DB Tabellen und kann
dann auch auf Plaintext Teiltexte finden. Natürlich wirkt sich das negativ auf die
Performance der Suche aus, aber in einigen Fällen ist dieser Nachteil akzeptabel.
Die Full Text Seach Engine kann man übrigens entfernen indem man das SQL Server Setup
erneut aufruf und dann auf Remove klickt. Keine Angst, das deinstalliert nicht den
gesamten SQL-Server, sondern man kann in einer Liste die zu deinstallierenden Features
auswählen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=a815ab06-3d74-4097-a87e-d29cfd27bb94" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,a815ab06-3d74-4097-a87e-d29cfd27bb94.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=aa97a6ee-f153-4571-a285-f9107a4712d7</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,aa97a6ee-f153-4571-a285-f9107a4712d7.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,aa97a6ee-f153-4571-a285-f9107a4712d7.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aa97a6ee-f153-4571-a285-f9107a4712d7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/2d5d216f9747_E90B/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/2d5d216f9747_E90B/image_thumb.png" width="442" height="157" />
          </a>
        </p>
        <p>
Auf den ALM Days 2011 am 23.11 werde ich einen Workshop anbieten zum Thema “Scrum
mit TFS”. Dabei werde ich zeigen, wie man mit dem TFS Scrumm effizient umsetz, welche
Tricks es gibt um bestimmte Szenarien abzubilden und wie Visual Studio 2010 und TFS
dabei helfen können Herausforderungen bei agiler Entwicklung zu lösen.
</p>
        <p>
          <strong>Abstract:</strong> Agilität ist in und wer agil sagt, meint fast immer Scrum.
Die Konzepte die hinter Agilität stehen versprechen nicht nur effizientere Projekte
sondern auch motiviertere Teams mit mehr Spass am Entwickeln. Wer mit Scrum arbeitet
steht vor der Wahl, entweder ein Teamboard einzurichten auf dem Artefakte mit Zetteln
verwaltet werden oder auf ein Tool zu setzen um die Artefakte elektronisch abzubilden.
Der Workshop zeigt, wie sie mit dem TFS Scrum effizient abbilden und dabei die eine
oder andere Hürde überwinden. Dabei wird nicht nur auf den Planungsprozess eingegangen
sondern es wird auch aufgezeigt, wie Visual Studio 2010 und der TFS verschiedene Herausforderungen
im Bereich der agilen Entwicklung wie z.B.agiles Testing lösen. Kurzum, dieser Workshop
ist für jeden ein Muss der mit dem TFS arbeitet und agiler werden möchte oder der
Scrum einsetzt und sich eine passende Toolunterstützung wünscht.
</p>
        <p>
Weitere Infos unter <a href="http://www.teamconf.de/workshops/articles/ganztagesworkshop-1-mein-tfs-kann-scrum-wie-der-tfs-effizient-mit-scrum-genutzt-werden-kann.html">http://www.teamconf.de/workshops/articles/ganztagesworkshop-1-mein-tfs-kann-scrum-wie-der-tfs-effizient-mit-scrum-genutzt-werden-kann.html</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa97a6ee-f153-4571-a285-f9107a4712d7" />
      </body>
      <title>Workshop &amp;ldquo;Scrum mit TFS&amp;rdquo; auf den ALM Days 2011</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,aa97a6ee-f153-4571-a285-f9107a4712d7.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,aa97a6ee-f153-4571-a285-f9107a4712d7.aspx</link>
      <pubDate>Tue, 19 Jul 2011 14:52:27 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/2d5d216f9747_E90B/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/2d5d216f9747_E90B/image_thumb.png" width="442" height="157"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Auf den ALM Days 2011 am 23.11 werde ich einen Workshop anbieten zum Thema “Scrum
mit TFS”. Dabei werde ich zeigen, wie man mit dem TFS Scrumm effizient umsetz, welche
Tricks es gibt um bestimmte Szenarien abzubilden und wie Visual Studio 2010 und TFS
dabei helfen können Herausforderungen bei agiler Entwicklung zu lösen.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Abstract:&lt;/strong&gt; Agilität ist in und wer agil sagt, meint fast immer Scrum.
Die Konzepte die hinter Agilität stehen versprechen nicht nur effizientere Projekte
sondern auch motiviertere Teams mit mehr Spass am Entwickeln. Wer mit Scrum arbeitet
steht vor der Wahl, entweder ein Teamboard einzurichten auf dem Artefakte mit Zetteln
verwaltet werden oder auf ein Tool zu setzen um die Artefakte elektronisch abzubilden.
Der Workshop zeigt, wie sie mit dem TFS Scrum effizient abbilden und dabei die eine
oder andere Hürde überwinden. Dabei wird nicht nur auf den Planungsprozess eingegangen
sondern es wird auch aufgezeigt, wie Visual Studio 2010 und der TFS verschiedene Herausforderungen
im Bereich der agilen Entwicklung wie z.B.agiles Testing lösen. Kurzum, dieser Workshop
ist für jeden ein Muss der mit dem TFS arbeitet und agiler werden möchte oder der
Scrum einsetzt und sich eine passende Toolunterstützung wünscht.
&lt;/p&gt;
&lt;p&gt;
Weitere Infos unter &lt;a href="http://www.teamconf.de/workshops/articles/ganztagesworkshop-1-mein-tfs-kann-scrum-wie-der-tfs-effizient-mit-scrum-genutzt-werden-kann.html"&gt;http://www.teamconf.de/workshops/articles/ganztagesworkshop-1-mein-tfs-kann-scrum-wie-der-tfs-effizient-mit-scrum-genutzt-werden-kann.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa97a6ee-f153-4571-a285-f9107a4712d7" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,aa97a6ee-f153-4571-a285-f9107a4712d7.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=681b4fda-91c8-413d-8faf-7838ea4a7a16</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,681b4fda-91c8-413d-8faf-7838ea4a7a16.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,681b4fda-91c8-413d-8faf-7838ea4a7a16.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=681b4fda-91c8-413d-8faf-7838ea4a7a16</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Es gibt häufiger die Situation, dass man die Url des Team Project Portals eines TeamProjects
per API ermitteln möchte um beispielsweise im zugehörigen Portal Dokumente zu generieren
oder abzulegen etc. Hier kann man natürlich versuchen sich die Url aus Server-URL,
Project Collection Name und Project Name zusammenzubauen, also http://&lt;servername&gt;/sites/&lt;ProjectCollection&gt;/&lt;TeamProject&gt;.
Problem ist, dass die Url frei konfiguriert werden kann und von diesem Default-Wert
abweichen kann. 
</p>
        <p>
Mein Szenario ist, dass ich ausgehend von einem Work Item die Url des Projekt Portals
ermitteln möchte um für das Work Item ein entsprechendes Dokument anzulegen. Das Projekt
zum Work Item lässt sich einfach ermitteln mit myWorkItem.Project aber auf dem Projekt
sucht man vergeblich nach einer Eigenschaft für das Portal. Der Zugriff darauf istt
leider ein wenig komplizierter. Die einzige Möglichkeit die Prortal Url zu ermitteln
geht über den TFS Catalog. Der Code sieht dann so aus:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:523285e3-027f-4e94-b95a-2dc32b224071" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #fff; max-height: 400px; overflow: auto">
              <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;">
                <li>
                  <span style="color:#0000ff">private</span>
                  <span style="color:#0000ff">static</span>
                  <span style="color:#0000ff">string</span> GetProjectPortalUrl(<span style="color:#2b91af">WorkItem</span> wi)</li>
                <li style="background: #f3f3f3">
{</li>
                <li>
                  <span style="color:#008000">// Get the CatalogeNode representing the ProjectCollection
the work item is assigned to</span>
                </li>
                <li style="background: #f3f3f3">
                  <span style="color:#2b91af">CatalogNode</span> projectCollectionNode = wi.Store.TeamProjectCollection.CatalogNode;</li>
                <li>
 </li>
                <li style="background: #f3f3f3">
                  <span style="color:#008000">// Getting the CatalogNode represeting the TeamProject
by querying for the project name</span>
                </li>
                <li>
                  <span style="color:#2b91af">CatalogNode</span> projectNode = projectCollectionNode.QueryChildren(</li>
                <li style="background: #f3f3f3">
                  <span style="color:#0000ff">new</span>
                  <span style="color:#2b91af">Guid</span>[] { <span style="color:#2b91af">CatalogResourceTypes</span>.TeamProject
},</li>
                <li>
                  <span style="color:#0000ff">new</span>
                  <span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">KeyValuePair</span>&lt;<span style="color:#0000ff">string</span>, <span style="color:#0000ff">string</span>&gt;&gt;
{ <span style="color:#0000ff">new</span><span style="color:#2b91af">KeyValuePair</span>&lt;<span style="color:#0000ff">string</span>, <span style="color:#0000ff">string</span>&gt;(<span style="color:#a31515">"ProjectName"</span>,
wi.Project.Name) },</li>
                <li style="background: #f3f3f3">
                  <span style="color:#0000ff">true</span>,</li>
                <li>
                  <span style="color:#2b91af">CatalogQueryOptions</span>.None)[0];</li>
                <li style="background: #f3f3f3">
 </li>
                <li>
                  <span style="color:#008000">// Querying for the ProjectPortal</span>
                </li>
                <li style="background: #f3f3f3">
                  <span style="color:#2b91af">ReadOnlyCollection</span>&lt;<span style="color:#2b91af">CatalogNode</span>&gt;
PortalNodes = projectNode.QueryChildren(</li>
                <li>
                  <span style="color:#0000ff">new</span>
                  <span style="color:#2b91af">Guid</span>[] { <span style="color:#2b91af">CatalogResourceTypes</span>.ProjectPortal
},</li>
                <li style="background: #f3f3f3">
                  <span style="color:#0000ff">true</span>,</li>
                <li>
                  <span style="color:#2b91af">CatalogQueryOptions</span>.None);</li>
                <li style="background: #f3f3f3">
 </li>
                <li>
                  <span style="color:#008000">// If the ProjectPortal is set, return the Url, otherwise
return an empty string</span>
                </li>
                <li style="background: #f3f3f3">
                  <span style="color:#0000ff">if</span> (PortalNodes.Count &gt; 0)</li>
                <li>
{</li>
                <li style="background: #f3f3f3">
                  <span style="color:#0000ff">return</span> PortalNodes[0].Resource.Properties[<span style="color:#a31515">"FullyQualifiedUrl"</span>];</li>
                <li>
}</li>
                <li style="background: #f3f3f3">
                  <span style="color:#0000ff">return</span>
                  <span style="color:#a31515">""</span>;</li>
                <li>
}</li>
              </ol>
            </div>
          </div>
        </div>
        <p>
Wir ermitteln zunächst den CatalogNode für die Project Collection unseres Work Items.
Davon ausgehend ermitteln wir dann den Knoten für das Projekt mit Hilfe des Projektnamens
den wir von dem Work Item lesen. Vom Projekt aus können wir nun den Project Portal
Knoten ermitteln der die Url beinhaltet.
</p>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=681b4fda-91c8-413d-8faf-7838ea4a7a16" />
      </body>
      <title>Url des Projektportals mit der TFS API ermitteln</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,681b4fda-91c8-413d-8faf-7838ea4a7a16.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,681b4fda-91c8-413d-8faf-7838ea4a7a16.aspx</link>
      <pubDate>Wed, 22 Jun 2011 20:52:04 GMT</pubDate>
      <description>&lt;p&gt;
Es gibt häufiger die Situation, dass man die Url des Team Project Portals eines TeamProjects
per API ermitteln möchte um beispielsweise im zugehörigen Portal Dokumente zu generieren
oder abzulegen etc. Hier kann man natürlich versuchen sich die Url aus Server-URL,
Project Collection Name und Project Name zusammenzubauen, also http://&amp;lt;servername&amp;gt;/sites/&amp;lt;ProjectCollection&amp;gt;/&amp;lt;TeamProject&amp;gt;.
Problem ist, dass die Url frei konfiguriert werden kann und von diesem Default-Wert
abweichen kann. 
&lt;/p&gt;
&lt;p&gt;
Mein Szenario ist, dass ich ausgehend von einem Work Item die Url des Projekt Portals
ermitteln möchte um für das Work Item ein entsprechendes Dokument anzulegen. Das Projekt
zum Work Item lässt sich einfach ermitteln mit myWorkItem.Project aber auf dem Projekt
sucht man vergeblich nach einer Eigenschaft für das Portal. Der Zugriff darauf istt
leider ein wenig komplizierter. Die einzige Möglichkeit die Prortal Url zu ermitteln
geht über den TFS Catalog. Der Code sieht dann so aus:
&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:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:523285e3-027f-4e94-b95a-2dc32b224071" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #fff; max-height: 400px; overflow: auto"&gt;
&lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt;
&lt;li&gt;
&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; GetProjectPortalUrl(&lt;span style="color:#2b91af"&gt;WorkItem&lt;/span&gt; wi)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
{&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#008000"&gt;// Get the CatalogeNode representing the ProjectCollection
the work item is assigned to&lt;/span&gt;
&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#2b91af"&gt;CatalogNode&lt;/span&gt; projectCollectionNode = wi.Store.TeamProjectCollection.CatalogNode;&lt;/li&gt;
&lt;li&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#008000"&gt;// Getting the CatalogNode represeting the TeamProject
by querying for the project name&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#2b91af"&gt;CatalogNode&lt;/span&gt; projectNode = projectCollectionNode.QueryChildren(&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Guid&lt;/span&gt;[] { &lt;span style="color:#2b91af"&gt;CatalogResourceTypes&lt;/span&gt;.TeamProject
},&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;
{ &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color:#a31515"&gt;&amp;quot;ProjectName&amp;quot;&lt;/span&gt;,
wi.Project.Name) },&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#2b91af"&gt;CatalogQueryOptions&lt;/span&gt;.None)[0];&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#008000"&gt;// Querying for the ProjectPortal&lt;/span&gt;
&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#2b91af"&gt;ReadOnlyCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;CatalogNode&lt;/span&gt;&amp;gt;
PortalNodes = projectNode.QueryChildren(&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Guid&lt;/span&gt;[] { &lt;span style="color:#2b91af"&gt;CatalogResourceTypes&lt;/span&gt;.ProjectPortal
},&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#2b91af"&gt;CatalogQueryOptions&lt;/span&gt;.None);&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;
&lt;span style="color:#008000"&gt;// If the ProjectPortal is set, return the Url, otherwise
return an empty string&lt;/span&gt;
&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (PortalNodes.Count &amp;gt; 0)&lt;/li&gt;
&lt;li&gt;
{&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; PortalNodes[0].Resource.Properties[&lt;span style="color:#a31515"&gt;&amp;quot;FullyQualifiedUrl&amp;quot;&lt;/span&gt;];&lt;/li&gt;
&lt;li&gt;
}&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;
&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;
}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Wir ermitteln zunächst den CatalogNode für die Project Collection unseres Work Items.
Davon ausgehend ermitteln wir dann den Knoten für das Projekt mit Hilfe des Projektnamens
den wir von dem Work Item lesen. Vom Projekt aus können wir nun den Project Portal
Knoten ermitteln der die Url beinhaltet.
&lt;/p&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=681b4fda-91c8-413d-8faf-7838ea4a7a16" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,681b4fda-91c8-413d-8faf-7838ea4a7a16.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>TFS API</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3450108f-93c7-4368-b9fa-49e270fd17b4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3450108f-93c7-4368-b9fa-49e270fd17b4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3450108f-93c7-4368-b9fa-49e270fd17b4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3450108f-93c7-4368-b9fa-49e270fd17b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Planning-Poker-Karten-von-artiso_12957/image_2.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Planning-Poker-Karten-von-artiso_12957/image_thumb.png" width="623" height="290" />
          </a>
        </p>
        <p>
Von <a href="http://www.artiso.com">artiso</a> gibt es jetzt auch Planning Poker®
Karten. Planning Poker® ist eine sehr gute Möglichkeit, im Team Komplexitätsschätzungen
für Anforderungen vorzunehmen. Dies ist insbesondere bei agilen Methoden eine sehr
gute Vorgehensweise. Am Beispiel von Scrum möchte ich kurz erläutern, wie so eine
Planning Poker Runde abläuft:
</p>
        <p>
Der PO trifft sich mit dem Team für ein Estimation. Der PO stellt dem Team eine User
Story vor und das Team stell so lange Fragen bis es schätzfähig ist.Dann zieht jeder
Teilnehmner eine Karte, hält diese aber zunächst verdeckt um die anderen Teilnehmer
bei ihrer Schätzung nicht zu beeinflussen. Alle decken ihre Schätzung gleichzeitig
auf. Der Teilnehmer mit der höchsten und mit der niedrigsten Schätzung begründen nun
ihre Schätzung. Dabei werden Argumente ausgetauscht warum die Komplexität so hoch
bzw. so niedrig ist. Die anderen Teilnehmer können sich natürlich an der Diskussion
beteiligen. Unter den neuen Diskussionsaspekten findet dann eine neue Schätzrunde
statt. Hat das Team eine Näherung erziehlt, dann wir die häufigste Nennung als Wert
für die Schätzung übernommen.
</p>
        <p>
Eine häufige Diskussion ist, ob nur das Team schätzt oder der PO auch eine Schätzung
abgibt. Ich bevorzuge es, wenn der PO mitschätzt. Da wir mit Story Points relative
Komplexitäten schätzen, sond Bedenken meist unbegründet, dass der PO die Schätzung
“drücken” möchte. Aber bei Abweichungen der Abschätzung von PO und Team werden oftmals
durch die Diskussion Missverständnisse oder unterschiedliches Verständnis der Anforderung
aufgedeckt.
</p>
        <p>
Der Vorteil von Planning Poker® liegt nun nicht nur darin, genauere Schätzungen zu
erhalten, sondern man vermeidet die Situation dass bei solchen Schätzrunden wenige
aktiv die Schätzung beeinflussen und die anderen passiv dabei sitzen und nur die Vorschläge
abnicken. 
</p>
        <p>
Die Karten von artiso besitzen noch eine Besonderheit. Hier gibt es zwei Skalen. Mit
den Werten auf den weißen Flächen mit der Reihung ?,0,½,1,2,3,5,8,13,20,40,100,∞ werden
Story Points geschätzt. Die andere Seite mit den Werten ?,½,1,2,3,4,6,8,10,12,16,20,25
kann dazu genutzt werden, Aufwände in Stunden nach dem selben Vorgehen zu schätzen.
</p>
        <p>
Unter den Lesern meines Blogs verlose ich 5 Sets zu je 8 Decks. Einfach Mail an tschissler
(at) artiso.com schicken, die ersten 5 Einsedungen erhalten die Karten umgehend per
Post zugeschickt.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3450108f-93c7-4368-b9fa-49e270fd17b4" />
      </body>
      <title>Planning Poker Karten von artiso</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3450108f-93c7-4368-b9fa-49e270fd17b4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3450108f-93c7-4368-b9fa-49e270fd17b4.aspx</link>
      <pubDate>Wed, 08 Jun 2011 20:59:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Planning-Poker-Karten-von-artiso_12957/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Planning-Poker-Karten-von-artiso_12957/image_thumb.png" width="623" height="290"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Von &lt;a href="http://www.artiso.com"&gt;artiso&lt;/a&gt; gibt es jetzt auch Planning Poker®
Karten. Planning Poker® ist eine sehr gute Möglichkeit, im Team Komplexitätsschätzungen
für Anforderungen vorzunehmen. Dies ist insbesondere bei agilen Methoden eine sehr
gute Vorgehensweise. Am Beispiel von Scrum möchte ich kurz erläutern, wie so eine
Planning Poker Runde abläuft:&gt;&gt;
&lt;/p&gt;
&lt;p&gt;
Der PO trifft sich mit dem Team für ein Estimation. Der PO stellt dem Team eine User
Story vor und das Team stell so lange Fragen bis es schätzfähig ist.Dann zieht jeder
Teilnehmner eine Karte, hält diese aber zunächst verdeckt um die anderen Teilnehmer
bei ihrer Schätzung nicht zu beeinflussen. Alle decken ihre Schätzung gleichzeitig
auf. Der Teilnehmer mit der höchsten und mit der niedrigsten Schätzung begründen nun
ihre Schätzung. Dabei werden Argumente ausgetauscht warum die Komplexität so hoch
bzw. so niedrig ist. Die anderen Teilnehmer können sich natürlich an der Diskussion
beteiligen. Unter den neuen Diskussionsaspekten findet dann eine neue Schätzrunde
statt. Hat das Team eine Näherung erziehlt, dann wir die häufigste Nennung als Wert
für die Schätzung übernommen.
&lt;/p&gt;
&lt;p&gt;
Eine häufige Diskussion ist, ob nur das Team schätzt oder der PO auch eine Schätzung
abgibt. Ich bevorzuge es, wenn der PO mitschätzt. Da wir mit Story Points relative
Komplexitäten schätzen, sond Bedenken meist unbegründet, dass der PO die Schätzung
“drücken” möchte. Aber bei Abweichungen der Abschätzung von PO und Team werden oftmals
durch die Diskussion Missverständnisse oder unterschiedliches Verständnis der Anforderung
aufgedeckt.
&lt;/p&gt;
&lt;p&gt;
Der Vorteil von Planning Poker® liegt nun nicht nur darin, genauere Schätzungen zu
erhalten, sondern man vermeidet die Situation dass bei solchen Schätzrunden wenige
aktiv die Schätzung beeinflussen und die anderen passiv dabei sitzen und nur die Vorschläge
abnicken. 
&lt;/p&gt;
&lt;p&gt;
Die Karten von artiso besitzen noch eine Besonderheit. Hier gibt es zwei Skalen. Mit
den Werten auf den weißen Flächen mit der Reihung ?,0,½,1,2,3,5,8,13,20,40,100,∞ werden
Story Points geschätzt. Die andere Seite mit den Werten ?,½,1,2,3,4,6,8,10,12,16,20,25
kann dazu genutzt werden, Aufwände in Stunden nach dem selben Vorgehen zu schätzen.
&lt;/p&gt;
&lt;p&gt;
Unter den Lesern meines Blogs verlose ich 5 Sets zu je 8 Decks. Einfach Mail an tschissler
(at) artiso.com schicken, die ersten 5 Einsedungen erhalten die Karten umgehend per
Post zugeschickt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3450108f-93c7-4368-b9fa-49e270fd17b4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3450108f-93c7-4368-b9fa-49e270fd17b4.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f016d208-b87b-426e-8bb9-52e7ab720987</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f016d208-b87b-426e-8bb9-52e7ab720987.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f016d208-b87b-426e-8bb9-52e7ab720987.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f016d208-b87b-426e-8bb9-52e7ab720987</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/image_thumb.png" width="244" height="87" />
          </a>
        </p>
        <p>
Auf der dotnet Cologne war ich dieses Jahr mit 2 Vorträgen vertreten, einmal mit dem
TFS 2010 Quickstart wo ich innerhalb des Vortrags in einer Stunde live einen TFS installiert,
die Versionsverwaltung und den Build eingerichtet, Requirements und Test Cases angelegt,
Testfälle spezifiziert und ausgeführt, Bugs angelegt und die Traceability demonstriert.
Im zweiten Vortrag habe ich verschiedene Best Practices zu SCRUM vorgestellt und die
Umsetzung mit TFS vorgestellt. Es war wieder eine tolle Konferenz, vielen Dank an
das Orga-Team. 
</p>
        <p>
Wer sich nochmals die Folien anschauen mag, hier sind die Links zum Download. Wenn
es nachträglich noch Fragen gibt, dann könnt ihreuch gerne per Mail an mich wenden.
</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:ab5d1b81-4280-4ce7-be2c-8b76977c7f79" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/SCRUM%20mit%20TFS.pdf" target="_blank">SCRUM
mit TFS 2010</a>
            <br />
            <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/TFS%202010%20Quickstart.pdf" target="_blank">TFS
2010 Quickstart</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f016d208-b87b-426e-8bb9-52e7ab720987" />
      </body>
      <title>Vortragsfolien zu meinen Vortr&amp;auml;gen auf der dotnet Cologne 2011</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f016d208-b87b-426e-8bb9-52e7ab720987.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f016d208-b87b-426e-8bb9-52e7ab720987.aspx</link>
      <pubDate>Sun, 08 May 2011 22:49:42 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/image_thumb.png" width="244" height="87"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Auf der dotnet Cologne war ich dieses Jahr mit 2 Vorträgen vertreten, einmal mit dem
TFS 2010 Quickstart wo ich innerhalb des Vortrags in einer Stunde live einen TFS installiert,
die Versionsverwaltung und den Build eingerichtet, Requirements und Test Cases angelegt,
Testfälle spezifiziert und ausgeführt, Bugs angelegt und die Traceability demonstriert.
Im zweiten Vortrag habe ich verschiedene Best Practices zu SCRUM vorgestellt und die
Umsetzung mit TFS vorgestellt. Es war wieder eine tolle Konferenz, vielen Dank an
das Orga-Team. 
&lt;/p&gt;
&lt;p&gt;
Wer sich nochmals die Folien anschauen mag, hier sind die Links zum Download. Wenn
es nachträglich noch Fragen gibt, dann könnt ihreuch gerne per Mail an mich wenden.
&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:ab5d1b81-4280-4ce7-be2c-8b76977c7f79" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/SCRUM%20mit%20TFS.pdf" target="_blank"&gt;SCRUM
mit TFS 2010&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/0c914cf1701c_149EA/TFS%202010%20Quickstart.pdf" target="_blank"&gt;TFS
2010 Quickstart&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f016d208-b87b-426e-8bb9-52e7ab720987" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f016d208-b87b-426e-8bb9-52e7ab720987.aspx</comments>
      <category>Scrum</category>
      <category>TFS 2010</category>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=ecd7ed19-e9b0-43b7-b293-403a25067efc</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,ecd7ed19-e9b0-43b7-b293-403a25067efc.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,ecd7ed19-e9b0-43b7-b293-403a25067efc.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=ecd7ed19-e9b0-43b7-b293-403a25067efc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Reporting Services cachen Reports um eine höhere Ausführungsgeschwindigkeit zu erreichen.
Es gibt allerdings einige Szenarien wo dadurch nicht die gewünschten aktuellsten Daten
im Report angezeigt werden, vor allem beim Entwickeln von neuen Reports. Deshalb kann
es in diesen Fällen sinnvoll sein das Caching abzuschalten. Dazu geht man auf <a href="http://&lt;SSRS Server&gt;/reportserver">http://&lt;SSRS
Server&gt;/reportserver</a>, wechselt zu dem entsprechenden Report und ruft aus dem
Dropdonw-Menü dn Punkt Verwalten auf (bei SQL Server 2008 R2, im SQL Server 2008 geht
das über den Reiter “Eigenschaften”) 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_thumb.png" width="297" height="288" />
          </a>
        </p>
        <p>
Im Bereich “Verarbeitungsoptionen” (Ausführung bei SQL Server 2008) kann dann die
Option “Keine temporären Kopien dieses Berichts zwischenspeichern” ausgewählt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_thumb_2.png" width="804" height="331" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ecd7ed19-e9b0-43b7-b293-403a25067efc" />
      </body>
      <title>Cache-Einstellungen f&amp;uuml;r Reporting Services</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,ecd7ed19-e9b0-43b7-b293-403a25067efc.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,ecd7ed19-e9b0-43b7-b293-403a25067efc.aspx</link>
      <pubDate>Tue, 19 Apr 2011 14:12:33 GMT</pubDate>
      <description>&lt;p&gt;
Reporting Services cachen Reports um eine höhere Ausführungsgeschwindigkeit zu erreichen.
Es gibt allerdings einige Szenarien wo dadurch nicht die gewünschten aktuellsten Daten
im Report angezeigt werden, vor allem beim Entwickeln von neuen Reports. Deshalb kann
es in diesen Fällen sinnvoll sein das Caching abzuschalten. Dazu geht man auf &lt;a href="http://&amp;lt;SSRS Server&amp;gt;/reportserver"&gt;http://&amp;lt;SSRS
Server&amp;gt;/reportserver&lt;/a&gt;, wechselt zu dem entsprechenden Report und ruft aus dem
Dropdonw-Menü dn Punkt Verwalten auf (bei SQL Server 2008 R2, im SQL Server 2008 geht
das über den Reiter “Eigenschaften”) 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_thumb.png" width="297" height="288"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Im Bereich “Verarbeitungsoptionen” (Ausführung bei SQL Server 2008) kann dann die
Option “Keine temporären Kopien dieses Berichts zwischenspeichern” ausgewählt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/Cache-Einstellungen-fr-Reporting-Service_97E7/image_thumb_2.png" width="804" height="331"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ecd7ed19-e9b0-43b7-b293-403a25067efc" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,ecd7ed19-e9b0-43b7-b293-403a25067efc.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=68cec6bc-2c94-4996-915e-eba58cef79cf</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,68cec6bc-2c94-4996-915e-eba58cef79cf.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,68cec6bc-2c94-4996-915e-eba58cef79cf.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=68cec6bc-2c94-4996-915e-eba58cef79cf</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Es gibt verschiedene Situationen in denen man nachträglich Reports oder SharePoint
Dokumente nachträglich für ein bestehendes Team Project einrichten möchte, z.B. nach
einer Migration von einer älteren TFS Version oder wenn das Projekt ohne Reports oder
SharePoint Portal angelegt wurde. Dafür gibt es bei den Team Foundation Server Power
Tools die Befehle
</p>
        <ul>
          <li>
            <font face="Courier New">tfpt addprojectportal   Add or move portal for
an existing team project</font>
          </li>
          <li>
            <font face="Courier New">tfpt addprojectreports  Add or overwrite reports for
an existing team project</font>
          </li>
        </ul>
        <p>
Mit dieser Methode hatte ich aber bereits mehrfach Probleme und die Einstellungen
sind auch nicht so feingranular möglich. Deshalb möchte ich hier eine andere Methode
beschreiben. Hierzu legt man zunächst eine XML-Datei an. Für die SharePoint-Dokumente
sieht die XML-Datei folgendermaßen aus:
</p>
        <div>
          <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <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><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Project</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="ProjectCreationSettingsFileSchema.xsd"</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">TFSName</span><span style="color: #0000ff">&gt;</span>http://vs2010:8080/tfs/sandbox<span style="color: #0000ff">&lt;/</span><span style="color: #800000">TFSName</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">LogFolder</span><span style="color: #0000ff">&gt;</span>c:\Temp\<span style="color: #0000ff">&lt;/</span><span style="color: #800000">LogFolder</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectName</span><span style="color: #0000ff">&gt;</span>VS2010_Demos<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectName</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">AddFeaturesToExistingProject</span><span style="color: #0000ff">&gt;</span>true<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AddFeaturesToExistingProject</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectSiteEnabled</span><span style="color: #0000ff">&gt;</span>true<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectSiteEnabled</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectSiteWebApplication</span><span style="color: #0000ff">&gt;</span>VS2010<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectSiteWebApplication</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectSitePath</span><span style="color: #0000ff">&gt;</span>/sites/sandbox/vs2010_demos/<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectSitePath</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectSiteTitle</span><span style="color: #0000ff">&gt;</span>VS2010
Demos<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectSiteTitle</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectSiteDescription</span><span style="color: #0000ff">&gt;</span>Demo<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectSiteDescription</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProcessTemplateName</span><span style="color: #0000ff">&gt;</span>MSF
for Agile Software Development v5.0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProcessTemplateName</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Project</span><span style="color: #0000ff">&gt;</span></pre>
        </div>
        <div> 
</div>
        <div>Für die Reports hat die Datei folgenden Aufbau:
</div>
        <div> 
</div>
        <div id="codeSnippetWrapper">
          <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <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><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Project</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="ProjectCreationSettingsFileSchema.xsd"</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">TFSName</span><span style="color: #0000ff">&gt;</span>http://vs2010:8080/tfs/sandbox<span style="color: #0000ff">&lt;/</span><span style="color: #800000">TFSName</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">LogFolder</span><span style="color: #0000ff">&gt;</span>c:\temp<span style="color: #0000ff">&lt;/</span><span style="color: #800000">LogFolder</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectName</span><span style="color: #0000ff">&gt;</span>VS2010_Demos<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectName</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">AddFeaturesToExistingProject</span><span style="color: #0000ff">&gt;</span>true<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AddFeaturesToExistingProject</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectReportsEnabled</span><span style="color: #0000ff">&gt;</span>true<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectReportsEnabled</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectReportsForceUpload</span><span style="color: #0000ff">&gt;</span>true<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectReportsForceUpload</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProjectSiteEnabled</span><span style="color: #0000ff">&gt;</span>false<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProjectSiteEnabled</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">ProcessTemplateName</span><span style="color: #0000ff">&gt;</span>MSF
for Agile Software Development v5.0<span style="color: #0000ff">&lt;/</span><span style="color: #800000">ProcessTemplateName</span><span style="color: #0000ff">&gt;</span><br /><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Project</span><span style="color: #0000ff">&gt;</span></pre>
          <br />
        </div>
        <div>
          <br />
        </div>
        <p>
Die Parameter sollten weitgehend selbsterklärend sein, eine weitere Beschreibung finden
sich <a href="http://msdn.microsoft.com/en-us/library/ff462695.aspx?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(VSTF.ADMIN.GLOBAL.GROUP.PERM)&amp;rd=true">hier</a>.
Diese XML-Dateien können nun ausgeführt werden indem im Command-Window innerhalb von
Visual Studio der Befehl 
</p>
        <p>
          <font face="Courier New">File.BatchNewTeamProject &lt;XML-Datei&gt;</font>
        </p>
        <p>
Der Import wird damit angestoßen. Zu beachten ist, dass der Vorgang eine Weile dauern
kann. Den Erfolg des Imports kann man in der Log-Datei im angegebenen Ordner überprüfen. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=68cec6bc-2c94-4996-915e-eba58cef79cf" />
      </body>
      <title>Reports und SharePoint Dokumente f&amp;uuml;r ein TFS Portal nachtr&amp;auml;glich einspielen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,68cec6bc-2c94-4996-915e-eba58cef79cf.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,68cec6bc-2c94-4996-915e-eba58cef79cf.aspx</link>
      <pubDate>Tue, 15 Mar 2011 01:47:51 GMT</pubDate>
      <description>&lt;p&gt;
Es gibt verschiedene Situationen in denen man nachträglich Reports oder SharePoint
Dokumente nachträglich für ein bestehendes Team Project einrichten möchte, z.B. nach
einer Migration von einer älteren TFS Version oder wenn das Projekt ohne Reports oder
SharePoint Portal angelegt wurde. Dafür gibt es bei den Team Foundation Server Power
Tools die Befehle
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font face="Courier New"&gt;tfpt addprojectportal&amp;nbsp;&amp;nbsp; Add or move portal for
an existing team project&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Courier New"&gt;tfpt addprojectreports&amp;nbsp; Add or overwrite reports for
an existing team project&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Mit dieser Methode hatte ich aber bereits mehrfach Probleme und die Einstellungen
sind auch nicht so feingranular möglich. Deshalb möchte ich hier eine andere Methode
beschreiben. Hierzu legt man zunächst eine XML-Datei an. Für die SharePoint-Dokumente
sieht die XML-Datei folgendermaßen aus:
&lt;/p&gt;
&lt;div&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ProjectCreationSettingsFileSchema.xsd"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TFSName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://vs2010:8080/tfs/sandbox&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;TFSName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LogFolder&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\Temp\&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LogFolder&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;VS2010_Demos&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AddFeaturesToExistingProject&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AddFeaturesToExistingProject&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteWebApplication&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;VS2010&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteWebApplication&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSitePath&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;/sites/sandbox/vs2010_demos/&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSitePath&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteTitle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;VS2010
Demos&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteTitle&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Demo&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteDescription&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProcessTemplateName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;MSF
for Agile Software Development v5.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProcessTemplateName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Für die Reports hat die Datei folgenden Aufbau:
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ProjectCreationSettingsFileSchema.xsd"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TFSName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://vs2010:8080/tfs/sandbox&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;TFSName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;LogFolder&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;c:\temp&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;LogFolder&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;VS2010_Demos&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AddFeaturesToExistingProject&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AddFeaturesToExistingProject&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectReportsEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectReportsEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectReportsForceUpload&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectReportsForceUpload&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectSiteEnabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProcessTemplateName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;MSF
for Agile Software Development v5.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ProcessTemplateName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;p&gt;
Die Parameter sollten weitgehend selbsterklärend sein, eine weitere Beschreibung finden
sich &lt;a href="http://msdn.microsoft.com/en-us/library/ff462695.aspx?appId=Dev10IDEF1&amp;amp;l=EN-US&amp;amp;k=k(VSTF.ADMIN.GLOBAL.GROUP.PERM)&amp;amp;rd=true"&gt;hier&lt;/a&gt;.
Diese XML-Dateien können nun ausgeführt werden indem im Command-Window innerhalb von
Visual Studio der Befehl 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;File.BatchNewTeamProject &amp;lt;XML-Datei&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Der Import wird damit angestoßen. Zu beachten ist, dass der Vorgang eine Weile dauern
kann. Den Erfolg des Imports kann man in der Log-Datei im angegebenen Ordner überprüfen. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=68cec6bc-2c94-4996-915e-eba58cef79cf" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,68cec6bc-2c94-4996-915e-eba58cef79cf.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4474667b-bd10-4e18-9246-be1098e1f5c3</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4474667b-bd10-4e18-9246-be1098e1f5c3.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4474667b-bd10-4e18-9246-be1098e1f5c3.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4474667b-bd10-4e18-9246-be1098e1f5c3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Inzwischen hat es sich sicher herumgesprochen, dass das SP1 für Visual Studio und
den TFS verfügbar ist. Allerdings bekomme ich einige Fragen zu Installation, was muss
wo installiert werden. Deshalb möchte ich hier auf einen <a href="http://blogs.msdn.com/b/bharry/archive/2011/03/09/installing-all-the-new-stuff.aspx">Blog
Post</a> von Brian Harry verweisen der die Details beschreibt.
</p>
        <p>
          <img src="http://www.microsoft.com/visualstudio/_base_v1/images/boxshots/hero-box-vs-load.png" />
        </p>
        <p>
Und dann möchte ich noch auf einen Punkt aufmerksam machen der vielleicht etwas untergegangen
ist. Ab sofort steht den Besitzer einer Visual Studio 2010 Ultimate mit MSDN Subscription
der Load Test Virtual User Pack für eine unbegrenzte Anzahl virtueller User zur Verfügung.
Damit sind nun Load Tests ohne zusätzliche Lizenzkosten möglich. Und Load Tests sind
nicht nur für Stress Tests sinnvoll sondern können auch Concurrency-Probleme aufdecken
und eignen sich auch sehr gut um Performance-Tests auch für kleinere Anwendungen.
Weitere Infos zur Lizenzänderung gibt es hier: <a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/load-test-virtual-user-pack">http://www.microsoft.com/visualstudio/en-us/products/2010-editions/load-test-virtual-user-pack</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4474667b-bd10-4e18-9246-be1098e1f5c3" />
      </body>
      <title>Visual Studio SP1, Team Foundation Server SP1 und weitere Ank&amp;uuml;ndigungen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4474667b-bd10-4e18-9246-be1098e1f5c3.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4474667b-bd10-4e18-9246-be1098e1f5c3.aspx</link>
      <pubDate>Mon, 14 Mar 2011 09:23:14 GMT</pubDate>
      <description>&lt;p&gt;
Inzwischen hat es sich sicher herumgesprochen, dass das SP1 für Visual Studio und
den TFS verfügbar ist. Allerdings bekomme ich einige Fragen zu Installation, was muss
wo installiert werden. Deshalb möchte ich hier auf einen &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/03/09/installing-all-the-new-stuff.aspx"&gt;Blog
Post&lt;/a&gt; von Brian Harry verweisen der die Details beschreibt.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.microsoft.com/visualstudio/_base_v1/images/boxshots/hero-box-vs-load.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Und dann möchte ich noch auf einen Punkt aufmerksam machen der vielleicht etwas untergegangen
ist. Ab sofort steht den Besitzer einer Visual Studio 2010 Ultimate mit MSDN Subscription
der Load Test Virtual User Pack für eine unbegrenzte Anzahl virtueller User zur Verfügung.
Damit sind nun Load Tests ohne zusätzliche Lizenzkosten möglich. Und Load Tests sind
nicht nur für Stress Tests sinnvoll sondern können auch Concurrency-Probleme aufdecken
und eignen sich auch sehr gut um Performance-Tests auch für kleinere Anwendungen.
Weitere Infos zur Lizenzänderung gibt es hier: &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/load-test-virtual-user-pack"&gt;http://www.microsoft.com/visualstudio/en-us/products/2010-editions/load-test-virtual-user-pack&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4474667b-bd10-4e18-9246-be1098e1f5c3" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4474667b-bd10-4e18-9246-be1098e1f5c3.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=fea6f355-e474-44be-8ebb-a6f9dfd272b5</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,fea6f355-e474-44be-8ebb-a6f9dfd272b5.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,fea6f355-e474-44be-8ebb-a6f9dfd272b5.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=fea6f355-e474-44be-8ebb-a6f9dfd272b5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bei verschiedenen Diagrammtypen, z.B. stacked Areas möchte man das Diagramm am Ende
gerade abschneiden und nicht zunächst noch einen 0-Wert anzeigen.
</p>
        <p>
Also statt der Schräge am Ende des Diagramms (zum 23.02 liegen keine Werte vor)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb_1.png" width="446" height="269" />
          </a>
        </p>
        <p>
hätte man das lieber sauber abgeschnitten um zu signalisieren, dass die letzten gültigen
Werte vom 22.02 sind.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb.png" width="438" height="261" />
          </a>
        </p>
        <p>
Dies kann man mit Reporting Services Diagrammen relativ einfach erreichen. Zunächst
ist wichtig, dass für die Werte ab 23.02 nicht 0 sondern Null bzw. Nothing (für Expressions)
als Ergebnis zurückgegeben wird. Dies kann man im Query Designer kontrollieren 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb_2.png" width="283" height="238" />
          </a>
        </p>
        <p>
Dann muss man in den Properties der Serie noch in den EmptyPoint Einstellungen die
Farbe auf “No Color” stellen, d.h. dass leere Datenpunkte nicht gezeichnet werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_8.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb_3.png" width="244" height="242" />
          </a>
        </p>
        <p>
Und schon hat man das gewünschte Ergebnis.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=fea6f355-e474-44be-8ebb-a6f9dfd272b5" />
      </body>
      <title>Charts in Reporting Services am Ende gerade abschneiden</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,fea6f355-e474-44be-8ebb-a6f9dfd272b5.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,fea6f355-e474-44be-8ebb-a6f9dfd272b5.aspx</link>
      <pubDate>Tue, 22 Feb 2011 21:21:32 GMT</pubDate>
      <description>&lt;p&gt;
Bei verschiedenen Diagrammtypen, z.B. stacked Areas möchte man das Diagramm am Ende
gerade abschneiden und nicht zunächst noch einen 0-Wert anzeigen.
&lt;/p&gt;
&lt;p&gt;
Also statt der Schräge am Ende des Diagramms (zum 23.02 liegen keine Werte vor)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb_1.png" width="446" height="269"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
hätte man das lieber sauber abgeschnitten um zu signalisieren, dass die letzten gültigen
Werte vom 22.02 sind.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb.png" width="438" height="261"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dies kann man mit Reporting Services Diagrammen relativ einfach erreichen. Zunächst
ist wichtig, dass für die Werte ab 23.02 nicht 0 sondern Null bzw. Nothing (für Expressions)
als Ergebnis zurückgegeben wird. Dies kann man im Query Designer kontrollieren 
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb_2.png" width="283" height="238"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Dann muss man in den Properties der Serie noch in den EmptyPoint Einstellungen die
Farbe auf “No Color” stellen, d.h. dass leere Datenpunkte nicht gezeichnet werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40783ab701b7_1276D/image_thumb_3.png" width="244" height="242"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Und schon hat man das gewünschte Ergebnis.
&lt;/p&gt;
&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=fea6f355-e474-44be-8ebb-a6f9dfd272b5" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,fea6f355-e474-44be-8ebb-a6f9dfd272b5.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e2d86c91-b408-4fce-be5f-95deee53bd13</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e2d86c91-b408-4fce-be5f-95deee53bd13.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e2d86c91-b408-4fce-be5f-95deee53bd13.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e2d86c91-b408-4fce-be5f-95deee53bd13</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MSDN-Bus-Halt-be.Net-Developer-Group-Ulm_13F59/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MSDN-Bus-Halt-be.Net-Developer-Group-Ulm_13F59/image_thumb.png" width="971" height="205" />
          </a>
        </p>
        <p>
Wir freuen uns, dass der <a href="http://www.msdn-on-tour.de/Details3101.aspx">MSDN-Bus</a> auch
bei uns in Blaustein halt macht. Im Rahmen des nächsten Treffens der .Net Developer
Group Ulm finden im MSDN-Bus 2 Vorträge zum Thema “Windows Azure” und “Schreiben von
sicherem Code” statt. Die Veranstaltung ist öffentlich und alle Mitgleider der .Net
Developer Group Ulm sowie Gäste sind herzlich willkommen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e2d86c91-b408-4fce-be5f-95deee53bd13" />
      </body>
      <title>MSDN-Bus Halt bei der .Net Developer Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e2d86c91-b408-4fce-be5f-95deee53bd13.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e2d86c91-b408-4fce-be5f-95deee53bd13.aspx</link>
      <pubDate>Thu, 27 Jan 2011 22:54:56 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MSDN-Bus-Halt-be.Net-Developer-Group-Ulm_13F59/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/MSDN-Bus-Halt-be.Net-Developer-Group-Ulm_13F59/image_thumb.png" width="971" height="205"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Wir freuen uns, dass der &lt;a href="http://www.msdn-on-tour.de/Details3101.aspx"&gt;MSDN-Bus&lt;/a&gt; auch
bei uns in Blaustein halt macht. Im Rahmen des nächsten Treffens der .Net Developer
Group Ulm finden im MSDN-Bus 2 Vorträge zum Thema “Windows Azure” und “Schreiben von
sicherem Code” statt. Die Veranstaltung ist öffentlich und alle Mitgleider der .Net
Developer Group Ulm sowie Gäste sind herzlich willkommen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e2d86c91-b408-4fce-be5f-95deee53bd13" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e2d86c91-b408-4fce-be5f-95deee53bd13.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=352a70f6-f893-404d-b891-a5bb843d3e7b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,352a70f6-f893-404d-b891-a5bb843d3e7b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,352a70f6-f893-404d-b891-a5bb843d3e7b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=352a70f6-f893-404d-b891-a5bb843d3e7b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/b/allclark">Allen Clark</a> hat auf der MSDN Code Gallery
Schema Files für die TFS Work Item Type Definition veröffentlicht. Damit bekommt man
nun IntelliSense Support und Validierung beim Bearbeiten der XML-Dateien. War kann
man über den Process Template Editor der <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/c255a1e4-04ba-4f68-8f4e-cd473d6b971f">TFS
Power Tools</a> ohne direkte XML-Bearbeitung die Work Item Type Definitions über einen
grafischen Editor anpassen, jedoch gibt es eine ganze Reihe von Situationen wo das
Bearbeiten im XML schneller geht oder einfach nicht zu vermeiden ist. Mit den Schema-Files
wird dies nun deutlich angenehmer.
</p>
        <p>
Link zur Code Gallery: <a href="http://code.msdn.microsoft.com/TFSchemas">http://code.msdn.microsoft.com/TFSchemas</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=352a70f6-f893-404d-b891-a5bb843d3e7b" />
      </body>
      <title>Schema-Files f&amp;uuml;r TFS Work Item Type Definition</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,352a70f6-f893-404d-b891-a5bb843d3e7b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,352a70f6-f893-404d-b891-a5bb843d3e7b.aspx</link>
      <pubDate>Mon, 17 Jan 2011 08:19:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.msdn.com/b/allclark"&gt;Allen Clark&lt;/a&gt; hat auf der MSDN Code Gallery
Schema Files für die TFS Work Item Type Definition veröffentlicht. Damit bekommt man
nun IntelliSense Support und Validierung beim Bearbeiten der XML-Dateien. War kann
man über den Process Template Editor der &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;TFS
Power Tools&lt;/a&gt; ohne direkte XML-Bearbeitung die Work Item Type Definitions über einen
grafischen Editor anpassen, jedoch gibt es eine ganze Reihe von Situationen wo das
Bearbeiten im XML schneller geht oder einfach nicht zu vermeiden ist. Mit den Schema-Files
wird dies nun deutlich angenehmer.
&lt;/p&gt;
&lt;p&gt;
Link zur Code Gallery: &lt;a href="http://code.msdn.microsoft.com/TFSchemas"&gt;http://code.msdn.microsoft.com/TFSchemas&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=352a70f6-f893-404d-b891-a5bb843d3e7b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,352a70f6-f893-404d-b891-a5bb843d3e7b.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=c60dfcb4-cafb-489e-8edf-05350b0639f4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,c60dfcb4-cafb-489e-8edf-05350b0639f4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,c60dfcb4-cafb-489e-8edf-05350b0639f4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c60dfcb4-cafb-489e-8edf-05350b0639f4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das MSF for Agile Template kommt mit einer vorgefertigten Excel-Datei für ein Interations-
bzw. Sprint-Backlog. Diese liegt im SharePoint unter Shared Documents\Iteration 1\Iteration
Backlog.xlsm. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_thumb.png" width="237" height="284" />
          </a>
        </p>
        <p>
Beim Öffnen der Datei kam es bei mir alledings zu Fehlern:
</p>
        <p>
---------------------------<br />
Microsoft Excel<br />
---------------------------<br />
TF80076: The data in the work item is not valid or you do not have permissions to
modify the data. Please correct the problem and retry.<br />
---------------------------<br />
OK   
<br />
---------------------------
</p>
        <p>
und
</p>
        <p>
---------------------------<br />
Microsoft Excel<br />
---------------------------<br />
TF208103: The initialization of the workbook to connect to Team Foundation Server
was not successful. The workbook will close. You can try to connect again by re-opening
the workbook.
</p>
        <p>
If repeated attempts fail to initialize the workbook and you need to work with the
data in the workbook, then you should disable the Team Foundation add-in. For new
or other workbooks with lists bound to Team Foundation Server, you will need to re-enable
the Team Foundation add-in.<br />
---------------------------<br />
OK   
<br />
---------------------------<br /></p>
        <p>
          <br />
Das Problem liegt darin, dass ich bei mir die Iterationen umbennant habe und das Dokument
damit nun nicht mehr zurecht kommt. Es gibt aber einen relativ einfachen Workaround
dafür:
</p>
        <ol>
          <li>
Zunächst muss man dafür sorgen, dass es wieder einer Iteration “\Iteration 1” gibt.
Diese kann man entweder temporär anlegen oder eine bestehende umbenennen.</li>
          <li>
Jetzt lässt sich die Datei ohne Fehler öffnen</li>
          <li>
Dann wechselt man auf das Sheet “Settings”</li>
          <li>
Hier wählt man im Bereich Area &amp; Iteration eine gültige Iteration aus, z.B. \
oder eine der anderen gültigen Iterationen. 
<br /><strong>Achtung:</strong> In der Liste werden nur Iterationen erlaubt die in dem Sheet
“Iteration Backlog” in der Spalte “Iteration Path” vorkommen. Evtl. muss zuvor die
Query “Team Queries\Iteration 1\Iteration Backlog” angepasst und hier die entsprechende
Iteration als Filter eingestellt werden. Dann kann mit dem Refresh-Button auf dem
team Tab im Excel die Liste aktualisiert werden.<br /><a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_thumb_1.png" width="595" height="100" /></a></li>
          <li>
Danach speichert man die Excel-Datei</li>
          <li>
Nun kann die temporär angelegte Iteration gelöscht werden oder die Iteration wieder
umbenannt werden. Das Excel-Dokument lässt sich nun ohne Fehler öffnen.</li>
        </ol>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c60dfcb4-cafb-489e-8edf-05350b0639f4" />
      </body>
      <title>Fehler beim &amp;Ouml;ffnen der Iteration Backlog.xlsm Datei im TFS</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,c60dfcb4-cafb-489e-8edf-05350b0639f4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,c60dfcb4-cafb-489e-8edf-05350b0639f4.aspx</link>
      <pubDate>Sat, 15 Jan 2011 14:59:43 GMT</pubDate>
      <description>&lt;p&gt;
Das MSF for Agile Template kommt mit einer vorgefertigten Excel-Datei für ein Interations-
bzw. Sprint-Backlog. Diese liegt im SharePoint unter Shared Documents\Iteration 1\Iteration
Backlog.xlsm. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_thumb.png" width="237" height="284"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Beim Öffnen der Datei kam es bei mir alledings zu Fehlern:
&lt;/p&gt;
&lt;p&gt;
---------------------------&lt;br&gt;
Microsoft Excel&lt;br&gt;
---------------------------&lt;br&gt;
TF80076: The data in the work item is not valid or you do not have permissions to
modify the data. Please correct the problem and retry.&lt;br&gt;
---------------------------&lt;br&gt;
OK&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
---------------------------
&lt;/p&gt;
&lt;p&gt;
und
&lt;/p&gt;
&lt;p&gt;
---------------------------&lt;br&gt;
Microsoft Excel&lt;br&gt;
---------------------------&lt;br&gt;
TF208103: The initialization of the workbook to connect to Team Foundation Server
was not successful. The workbook will close. You can try to connect again by re-opening
the workbook.
&lt;/p&gt;
&lt;p&gt;
If repeated attempts fail to initialize the workbook and you need to work with the
data in the workbook, then you should disable the Team Foundation add-in. For new
or other workbooks with lists bound to Team Foundation Server, you will need to re-enable
the Team Foundation add-in.&lt;br&gt;
---------------------------&lt;br&gt;
OK&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
---------------------------&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Das Problem liegt darin, dass ich bei mir die Iterationen umbennant habe und das Dokument
damit nun nicht mehr zurecht kommt. Es gibt aber einen relativ einfachen Workaround
dafür:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Zunächst muss man dafür sorgen, dass es wieder einer Iteration “\Iteration 1” gibt.
Diese kann man entweder temporär anlegen oder eine bestehende umbenennen.&lt;/li&gt;
&lt;li&gt;
Jetzt lässt sich die Datei ohne Fehler öffnen&lt;/li&gt;
&lt;li&gt;
Dann wechselt man auf das Sheet “Settings”&lt;/li&gt;
&lt;li&gt;
Hier wählt man im Bereich Area &amp;amp; Iteration eine gültige Iteration aus, z.B. \
oder eine der anderen gültigen Iterationen. 
&lt;br&gt;
&lt;strong&gt;Achtung:&lt;/strong&gt; In der Liste werden nur Iterationen erlaubt die in dem Sheet
“Iteration Backlog” in der Spalte “Iteration Path” vorkommen. Evtl. muss zuvor die
Query “Team Queries\Iteration 1\Iteration Backlog” angepasst und hier die entsprechende
Iteration als Filter eingestellt werden. Dann kann mit dem Refresh-Button auf dem
team Tab im Excel die Liste aktualisiert werden.&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/40aaaeab76c1_DB2B/image_thumb_1.png" width="595" height="100"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Danach speichert man die Excel-Datei&lt;/li&gt;
&lt;li&gt;
Nun kann die temporär angelegte Iteration gelöscht werden oder die Iteration wieder
umbenannt werden. Das Excel-Dokument lässt sich nun ohne Fehler öffnen.&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c60dfcb4-cafb-489e-8edf-05350b0639f4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,c60dfcb4-cafb-489e-8edf-05350b0639f4.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8dfc50ec-9041-46db-9727-60eefdf9cab3</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8dfc50ec-9041-46db-9727-60eefdf9cab3.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8dfc50ec-9041-46db-9727-60eefdf9cab3.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8dfc50ec-9041-46db-9727-60eefdf9cab3</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Definition of Done Workitem Control</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8dfc50ec-9041-46db-9727-60eefdf9cab3.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8dfc50ec-9041-46db-9727-60eefdf9cab3.aspx</link>
      <pubDate>Tue, 04 Jan 2011 23:52:32 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;See english version below.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In Scrum ist eine zentrale Frage, wann ist eine User Story erledigt, also done? Dies
wird durch die sog. “Definition of Done” festgelegt die sich das Team selbst gibt.
Die Definition of Done beschreibt Aspekte die erfüllt sein müssen, damit eine Story
als done gelten kann und somit im Review dem Product Owner präsentiert wird. Dies
können beispielsweise Testausführung, Code-Reviews oder anderes sein. Genau festzuhalten,
welche Punkte der DoD für eine User Story bereits erfüllt sind, ist Zweck des DoD
Work Item Controls für den Team Foundation Server.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f4a13b6168af_13DE2/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f4a13b6168af_13DE2/image_thumb.png" width="643" height="324"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Am Ende des Posts gibt es einen Downloadlink für das Control. Im Folgenden wird kurz
erklärt, wie das Control eingerichtet wird. Zuerst müssen wir ein Feld auf dem User
Story Workitem Type anlegen. 
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldDefinition&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;="artiso.UserStory.DefinitionOfDoneState"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Definition
of Done State"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="Integer"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Danach fügen wir für das Feld ein neues Control ein. Für das Control müssen verschiedene
Einstellungen im Bereich CustomControlOptions vorgenommen werden:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Zunächst geben wir im Attribut DoneState den Status an, auf den die User Story gesetzt
werden soll wenn alle DoD Kriterienj erfüllt sind, also die User Story done ist. 
&lt;li&gt;
Unter ActiveState wird ein Status angegeben auf den die User Story gesetzt wird wenn
von den vollständig gesetzten DoD Kriterien wieder eines entfernt wird, also z.B.
wenn doch noch Bugs gefunden werden. 
&lt;li&gt;
Unter DoDCriteria werden nun die individuellen Kriterien der DoD angegeben. Jedes
Kriterium braucht eine eindeutige ID. Aus den aktivierten Checkboxen wird durch eine
2er Potenz der ID eine Summe gebildet die im Integer-Feld abgelegt werden. Somit mit
darauf geachtet werden, dass beim Ändern der ID die Aussage der bestehenden Work Items
verändert wird. &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Control&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;="artiso.UserStory.DefinitionOfDoneState"&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;="DefinitionOfDoneControl"&lt;/span&gt; &lt;span class="attr"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;="Definition
of Done:"&lt;/span&gt; &lt;span class="attr"&gt;LabelPosition&lt;/span&gt;&lt;span class="kwrd"&gt;="Top"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CustomControlOptions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoneState&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Done"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ActiveState&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Implemented"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoDCriteria&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="All
acceptance criteria of PO are fulfilled"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Code
Reviews are executed without findings"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="UI
Reviews are executed without findings"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="All
Test Cases are executed without findings"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Test
Cases are reviewed"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="No
known bugs for this User Story"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="6"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="All
Issues related to the User Story are closed"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="7"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000"&gt;&lt;span class="kwrd"&gt;/&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt; span&gt;&lt;span class="html"&gt;DoDCriteria&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;font color="#000000"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span class="kwrd"&gt;&lt; span&gt;&lt;span class="html"&gt;CustomControlOptions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt; span&gt;&lt;span class="html"&gt;&lt;font color="#000000"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;Control&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
Nun ist die Userstory einsatzbereit und alle im Team haben einen genauen Überblick,
was noch zur Fertigstellung einer Story getan werden muss.
&lt;/p&gt;
&lt;p&gt;
Das Control kann hier heruntergeladen werden.
&lt;/p&gt;
&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-18619769313fc484.office.live.com/embedicon.aspx/Blog%20Downloads/DefinitionOfDoneControlSetup.msi" frameborder="0" marginwidth="0" scrolling="no"&gt;
&lt;/iframe&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;&lt;font size="4"&gt;English version&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
One of the big questions in a Scrum project is, when is a User Story “done”? This
is defined by a so called “Definition of Done” which is defined by the team itself.
The Definition of Done describes aspects which have to be fulfilled to declare a User
Story to be done und so can be presented in the Sprint Review to the Product Owner.
These aspects can be test execution, code reviews or other points. To track exactly
which aspects of the DoD for a specific User Story is already fulfilled is the purpose
of this Work Item Control for Team Foundation Server.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/ct.ashx?id=8dfc50ec-9041-46db-9727-60eefdf9cab3&amp;amp;url=http%3a%2f%2fwww.artiso.com%2fProBlog%2fcontent%2fbinary%2fWindows-Live-Writer%2ff4a13b6168af_13DE2%2fimage_2.png"&gt;&lt;img title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/f4a13b6168af_13DE2/image_thumb.png" width="643" height="324"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
You’ll find a link to download the control at the end of this post. Here is described
how to configure the control. First we have to define a field on the Work Item Type
for the User Story to store the data.
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FieldDefinition&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;="artiso.UserStory.DefinitionOfDoneState"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Definition
of Done State"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="Integer"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Then we add for the new field a control to the form. For the control we have to do
some settings in the CustomControlOptions:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
First we provide in the attribute DoneState the status to which the User Story will
be set after fulfilling all DoD criterias (the Use Story is done)&lt;li&gt;
With ActiveState provide a state to which the User Story will be set after for a done
User Story we uncheck one of the DoD criteria e.g. when later bugs are found&lt;li&gt;
&lt;div align="left"&gt;With DoDCriteria you can provide individual criterias for your DoD.
Every criteria needs a unique ID. From the checked checkboxes we create a sum with
binary operations which will be stored to the integer field. So you should keep in
mind that the meaning of your DoD status will be changed if you change the IDs.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Control&lt;/span&gt; &lt;span class="attr"&gt;FieldName&lt;/span&gt;&lt;span class="kwrd"&gt;="artiso.UserStory.DefinitionOfDoneState"&lt;/span&gt; &lt;span class="attr"&gt;Type&lt;/span&gt;&lt;span class="kwrd"&gt;="DefinitionOfDoneControl"&lt;/span&gt; &lt;span class="attr"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;="Definition
of Done:"&lt;/span&gt; &lt;span class="attr"&gt;LabelPosition&lt;/span&gt;&lt;span class="kwrd"&gt;="Top"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CustomControlOptions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoneState&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Done"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ActiveState&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Implemented"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoDCriteria&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="All
acceptance criteria of PO are fulfilled"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Code
Reviews are executed without findings"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="UI
Reviews are executed without findings"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="All
Test Cases are executed without findings"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Test
Cases are reviewed"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="No
known bugs for this User Story"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="6"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Criterion&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="All
Issues related to the User Story are closed"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="7"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000"&gt;&lt;span class="kwrd"&gt;/&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt; span&gt;&lt;span class="html"&gt;DoDCriteria&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;font color="#000000"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span class="kwrd"&gt;&lt; span&gt;&lt;span class="html"&gt;CustomControlOptions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt; span&gt;&lt;span class="html"&gt;&lt;font color="#000000"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;Control&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Now the User Story is ready to use and everyone on the team has a good overview what
is left to do to finish a Story.
&lt;/p&gt;
&lt;p&gt;
The control can be downloaded here.
&lt;/p&gt;
&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-18619769313fc484.office.live.com/embedicon.aspx/Blog%20Downloads/DefinitionOfDoneControlSetup.msi" frameborder="0" marginwidth="0" scrolling="no"&gt;
&lt;/iframe&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8dfc50ec-9041-46db-9727-60eefdf9cab3" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8dfc50ec-9041-46db-9727-60eefdf9cab3.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=5977b769-1253-45af-90e1-ce4968153480</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,5977b769-1253-45af-90e1-ce4968153480.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,5977b769-1253-45af-90e1-ce4968153480.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=5977b769-1253-45af-90e1-ce4968153480</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem Microsoft Test Manager 2010 hat Microsoft sog. Rich Information Bugs eingeführt.
Damit sind Bugs gemeint die automatisch mit Informationen zur Testausführung angereichert
sind um dem Entwickler das reproduzieren und identifizieren von Bugs erleichtert.
Dazu gehören beispielsweise Videos, IntelliTrace Logs, Systeminformationen und weitere.
Diese extrem hilfreiche Funktion bringt jedoch leider auch ein Problem mit sich. Diese
Informationen werden alle als Attachements and die TestCase Work Items gehängt was
dazu führt, dass die TFS Datenbank schnell sehr groß werden kann. Bisher hatte der
Datenbankadministrator keine effiziente Möglichkeit zur Anlayse und Bereinigung dieser
Daten. Diese Lücke wird nun mit dem <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3d37ce86-05f1-4165-957c-26aaa5ea1010">Test
Attachement Cleaner Power Tool</a> geschlossen.
</p>
        <p>
Mit diesem Tool kann der Datenverbrauch in der Datenbank analysiert und in einerDatei
ausgegeben werden. Zudem können bestimmte Löschoperationen ausgeführt werden, z.B.
Videos die älter sind als ein bestimmtes Datum, Alle IntelliTrace Logs die größer
sind als ein bestimmter Wert etc. Dadurch dass das Tool als Kommandozeilentool implementiert
ist, können damit auch automatisierte Datenbereinigungen einfach eingestellt werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5977b769-1253-45af-90e1-ce4968153480" />
      </body>
      <title>Test Case Attachments l&amp;ouml;schen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,5977b769-1253-45af-90e1-ce4968153480.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,5977b769-1253-45af-90e1-ce4968153480.aspx</link>
      <pubDate>Fri, 17 Dec 2010 07:44:35 GMT</pubDate>
      <description>&lt;p&gt;
Mit dem Microsoft Test Manager 2010 hat Microsoft sog. Rich Information Bugs eingeführt.
Damit sind Bugs gemeint die automatisch mit Informationen zur Testausführung angereichert
sind um dem Entwickler das reproduzieren und identifizieren von Bugs erleichtert.
Dazu gehören beispielsweise Videos, IntelliTrace Logs, Systeminformationen und weitere.
Diese extrem hilfreiche Funktion bringt jedoch leider auch ein Problem mit sich. Diese
Informationen werden alle als Attachements and die TestCase Work Items gehängt was
dazu führt, dass die TFS Datenbank schnell sehr groß werden kann. Bisher hatte der
Datenbankadministrator keine effiziente Möglichkeit zur Anlayse und Bereinigung dieser
Daten. Diese Lücke wird nun mit dem &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3d37ce86-05f1-4165-957c-26aaa5ea1010"&gt;Test
Attachement Cleaner Power Tool&lt;/a&gt; geschlossen.
&lt;/p&gt;
&lt;p&gt;
Mit diesem Tool kann der Datenverbrauch in der Datenbank analysiert und in einerDatei
ausgegeben werden. Zudem können bestimmte Löschoperationen ausgeführt werden, z.B.
Videos die älter sind als ein bestimmtes Datum, Alle IntelliTrace Logs die größer
sind als ein bestimmter Wert etc. Dadurch dass das Tool als Kommandozeilentool implementiert
ist, können damit auch automatisierte Datenbereinigungen einfach eingestellt werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5977b769-1253-45af-90e1-ce4968153480" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,5977b769-1253-45af-90e1-ce4968153480.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=09ca90a5-b75d-424b-9892-c932f196c38d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,09ca90a5-b75d-424b-9892-c932f196c38d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,09ca90a5-b75d-424b-9892-c932f196c38d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=09ca90a5-b75d-424b-9892-c932f196c38d</wfw:commentRss>
      <title>Tests mit TeamBuild automatisiert auf Remoterechnern ausf&amp;uuml;hren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,09ca90a5-b75d-424b-9892-c932f196c38d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,09ca90a5-b75d-424b-9892-c932f196c38d.aspx</link>
      <pubDate>Sun, 21 Nov 2010 22:32:09 GMT</pubDate>
      <description>&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Mit
dem Team Foundation Build ist es einfach, Tests im Rahmen von automatisierten Builds
auszuführen. Standardmäßig werden die Tests jedoch auf dem Buildrechner selbst ausgeführt.
Das ist in verschiedenen Szenarien jedoch nicht erwünscht, sondern man möchte die
Tests in einer Referenzumgebung ausführen die der Zielumgebung, in der die Anwendung
ausgeführt werden soll, möglichst nahe kommt. Vor allem für GUI-Tests ist dieses Szenario
wichtig.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb.png" width="369" height="289"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Mit Visual
Studio 2010 gibt es dafür LabManagement um virtualisierte Testumgebungen bereitzustellen
und über ein vorbereitetes Build Template Tests darin auszuführen. Jedoch lässt sich
diese Funktion auch ohne LabManagement erreichen, z.B. wenn ein anderes Virtualisierungssystem
als Hyper-V oder rein physikalische Testumgebungen eingesetzt werden sollen. Im Folgenden
soll beschrieben werden, wie dieses Szenario einzurichten ist.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-ansi-language: de"&gt;Hierzu muss
zunächst ein Testcontroller eingerichtet werden. Dieser kann beispielsweise auf dem
TFS Server installiert werden. Auf der Testmaschine muss anschließend ein Testagent
installiert und auf den Testcontroller registriert werden. Weitere Hinweise zur Installation
und Konfiguration von Testcontrollern und –agents finden sie unter &lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://msdn.microsoft.com/de-de/library/dd648127.aspx"&gt;&lt;span style="mso-ansi-language: de" lang="DE"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;http://msdn.microsoft.com/de-de/library/dd648127.aspx&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="mso-ansi-language: de"&gt;.
Es sollte beachtet werden, dass der Test Agent als interaktiver Prozess konfiguriert
sein muss, wenn UI-Tests auf der Testmaschine ausgeführt werden sollen. Und der Testagent
muss auf dem Testcontroller registriert &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;sein. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_1.png" width="419" height="428"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_2.png" width="424" height="378"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Der Testcontroller
darf nicht für ein Teamprojekt registriert sein.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_3.png" width="464" height="292"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Anschließend
können wir einen Build für das gewünschte Projekt einrichten. Der Build soll in unserem
Szenario auf einem separaten Buildcomputer ausgeführt werden. Um das Deployment des
Buildergebnisses auf die Testmaschine zu bewerkstelligen, passen wir das Buildtemplate
ein wenig an. Dazu legen wir zunächst 2 neue Arguments an. Anschließend Platzieren
wir unterhalb der „If BuildSettings.HasProjectToBuild“ Activity eine If-Condition
auf der wir auf das Argument DeployForTest prüfen. Im Then-Zweig fügen wir dann eine
CopyDirectory-Activity ein für die wir als Source die Droplocation und als Destination
das Argument DeployForTestTarget einstellen. Damit wird unser Buildergebnis in dan
Verzeichnis kopiert das wir in unserer Build Definition einstellen können.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/2010-11-22_2207_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2010-11-22_2207" border="0" alt="2010-11-22_2207" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/2010-11-22_2207_thumb.png" width="824" height="585"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Das BuildTemplate
können wir nun unter einem neuen Namen speichern und einchecken. Auf dieser Basis
erstellen wir nun mal einen ersten Build. In den Process Einstellungen definieren
wir nun, dass das Deployment auf die Testmaschine ausgeführt werden soll und wir geben
den UNC-Pfad an wohin die Dateien deployed werden sollen. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_12.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_5.png" width="507" height="341"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Nach dem Ausführen
des Builds können wir prüfen, ob die Dateien korrekt auf die Testmaschine deployed
wurden. Die Tests die wir in unserem Projekt haben werden allerdings immer noch auf
unserer Buildmaschine ausgeführt. Um das zu ändern, müssen wir die Testsettings anpassen.
Unter Test / Edit Test Settings &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;wählen
wir zunächst Local aus um diese Einstellung anzupassen. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_14.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_6.png" width="512" height="385"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Hier müssen
wir Remote Execution einstelle und den entsprechenden Build Controller auswählen.
Diese Einstellungen können wir dann unter einem neuen Namen abspeichern und einchecken.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Anschließend
wählen wir diese Test Settings in unserem Build aus. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_16.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_7.png" width="556" height="117"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_18.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_8.png" width="366" height="344"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Damit werden
unsere Tests die wir in der Solution definiert haben nun auf unserer Testmaschine
ausgeführt. Dies können sowohl Unit-Tests als auch Coded UI Tests sein. Als erweitertes
Szenario können z.B. im Rahmen des Build Setups erstellt werden die dann über die
CopyDirectory Activity auf die Testmaschine kopiert werden. Dann kann mit Hilfe eines
Coded UI Tests das Setup ausgeführt und anschließend die Funktionen der Anwendung
getestet werden.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Ein wichtiger
Punkt ist noch, dass wir aktuell nicht kontrollieren können, auf welchem Testcomputer
die Tests ausgeführt werden, wenn wir auf dem Testcontroller mehrere Agents registriert
haben. Das wollen wir nun noch ändern. Dazu wählen wir unter Test / Manage Test Controllers
unseren Testcontroller und den entsprechenden Agent aus.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_20.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_9.png" width="367" height="320"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Über Properties
können wir dem Agent nun Attribute zuordnen, z.B. ein MachineName.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_22.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_10.png" width="377" height="447"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Nun können
wir in unseren Testsettings einstellen auf welchem Agent unsere Tests ausgeführt werden
sollen. Dazu fügen wir erst eine Rolle hinzu und wählen aus, dass auf dieser Rolle
Tests ausgeführt werden können. Nun Geben wir das zuvor definierte Attribut mit dem
selben Wert an.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_24.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/Windows-Live-Writer/ec8a12e04278_148D4/image_thumb_11.png" width="548" height="412"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style="margin: 0cm 0cm 10pt" class="MsoNormal"&gt;
&lt;span style="mso-ansi-language: de"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Nun können
wir eindeutig steuern, wo die Ausführung der Tests erfolgen soll und wir können beispielsweise
mehrere Testcomputer mit verschiedenen Betriebssystemen zur Ausführung der Tests nutzen.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=09ca90a5-b75d-424b-9892-c932f196c38d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,09ca90a5-b75d-424b-9892-c932f196c38d.aspx</comments>
      <category>Team System Server</category>
      <category>Testing</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=99702b24-428f-46cb-aa96-e57e154de346</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,99702b24-428f-46cb-aa96-e57e154de346.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,99702b24-428f-46cb-aa96-e57e154de346.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=99702b24-428f-46cb-aa96-e57e154de346</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sehr viele Software-Projekte nutzen Datenbanken und damit stellt sich die Frage, wie
kann die Datenbank im Build so aufbereiten, dass sie für Tests deployed werden kann.
Hierzu gibt es auf MSDN eine sehr gute Artiekelserie die Beschreibt wie mit den Datenbankfunktionen
im Visual Studio 2010 Datenbanken verwaltet und im Build für Tests deployed werden
kann.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/library/dd193413.aspx">http://msdn.microsoft.com/en-us/library/dd193413.aspx</a>
        </p>
        <p>
Speziell die Schritt für Schritt Anleitung zur Anpassung des Build Workflows möchte
ich empfehlen.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/library/ff805001.aspx">http://msdn.microsoft.com/en-us/library/ff805001.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=99702b24-428f-46cb-aa96-e57e154de346" />
      </body>
      <title>Deployment von SQL Datenbanken mit TeamBuild</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,99702b24-428f-46cb-aa96-e57e154de346.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,99702b24-428f-46cb-aa96-e57e154de346.aspx</link>
      <pubDate>Wed, 20 Oct 2010 22:27:32 GMT</pubDate>
      <description>&lt;p&gt;
Sehr viele Software-Projekte nutzen Datenbanken und damit stellt sich die Frage, wie
kann die Datenbank im Build so aufbereiten, dass sie für Tests deployed werden kann.
Hierzu gibt es auf MSDN eine sehr gute Artiekelserie die Beschreibt wie mit den Datenbankfunktionen
im Visual Studio 2010 Datenbanken verwaltet und im Build für Tests deployed werden
kann.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/dd193413.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd193413.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Speziell die Schritt für Schritt Anleitung zur Anpassung des Build Workflows möchte
ich empfehlen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/ff805001.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff805001.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=99702b24-428f-46cb-aa96-e57e154de346" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,99702b24-428f-46cb-aa96-e57e154de346.aspx</comments>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=cd01ed51-e5fb-48bc-ab2b-e09d2a480870</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,cd01ed51-e5fb-48bc-ab2b-e09d2a480870.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,cd01ed51-e5fb-48bc-ab2b-e09d2a480870.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=cd01ed51-e5fb-48bc-ab2b-e09d2a480870</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der einfachste Weg, um Daten aus dem OLAP Cube im TFS Warehause auszuwerten ist über
Excel. Wie dies funktioniert, soll im Folgenden kurz beschrieben werden:
</p>
        <p>
Zunächst müssen dem entsprechenden Benutzer Berechtigungen für den OLAP-Cube eingerichtet
werden. Dazu verbindet man sich im Management Studio zu den Analysis Services.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_6.png" width="420" height="315" />
          </a>
        </p>
        <p>
Unter dem Cube im Ordner Roles findet sich dann die Rolle TfsWarehouseDataReader
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_16.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_7.png" width="300" height="229" />
          </a>
        </p>
        <p>
Hier kann man nun unter Memberschip die entsprechenden Benutzer eintragen
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_18.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/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_8.png" width="516" height="464" />
          </a>
        </p>
        <p>
In Excel kann man nun eine Verbindung zum Cube herstellen. Dazu ruft man im Data-Tab
die Verbindung zu den Analysis Services auf.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/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/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb.png" width="521" height="359" />
          </a>
        </p>
        <p>
Im folgenden Dialog gibt man nun die Verbindungsdaten ein. Soll der Zugriff auf eine
bennante Instanz erfolgen, muss diese angegeben werden, z.B. mySQLServer\MyInstance.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/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/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_1.png" width="520" height="363" />
          </a>
        </p>
        <p>
Dann wählt man entweder den Cube oder eine Perspektive aus
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_2.png" width="530" height="377" />
          </a>
        </p>
        <p>
Die Verbindung kann man nun speichern. Sie steht dann unter Existing Connections für
weitere Anwendungen zur Verfügung.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_3.png" width="520" height="435" />
          </a>
        </p>
        <p>
Im nächsten Schritt kann man eine Pivot Table in das bestehende Excel Workbook einfügen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_4.png" width="294" height="246" />
          </a>
        </p>
        <p>
Im rechten Bereich kann man nun Felder in die Bereiche für Filter, Spalten, Zeilen
oder Werte ziehen. Die Felder lassen sich dabei nach verschiedenen Kategorien über
die oberste Dropdownlist filtern.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_5.png" width="356" height="992" />
          </a>
        </p>
        <p>
In einem späteren Post werde ich beschreiben, wie man mit Hilfe der Pivot Tables entsprechende
Auswertungen auf dem Cube erstellt.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cd01ed51-e5fb-48bc-ab2b-e09d2a480870" />
      </body>
      <title>Zugriff auf den TFS Cube aus Excel</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,cd01ed51-e5fb-48bc-ab2b-e09d2a480870.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,cd01ed51-e5fb-48bc-ab2b-e09d2a480870.aspx</link>
      <pubDate>Wed, 20 Oct 2010 07:47:36 GMT</pubDate>
      <description>&lt;p&gt;
Der einfachste Weg, um Daten aus dem OLAP Cube im TFS Warehause auszuwerten ist über
Excel. Wie dies funktioniert, soll im Folgenden kurz beschrieben werden:
&lt;/p&gt;
&lt;p&gt;
Zunächst müssen dem entsprechenden Benutzer Berechtigungen für den OLAP-Cube eingerichtet
werden. Dazu verbindet man sich im Management Studio zu den Analysis Services.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_6.png" width="420" height="315"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Unter dem Cube im Ordner Roles findet sich dann die Rolle TfsWarehouseDataReader
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_7.png" width="300" height="229"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier kann man nun unter Memberschip die entsprechenden Benutzer eintragen
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_18.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/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_8.png" width="516" height="464"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
In Excel kann man nun eine Verbindung zum Cube herstellen. Dazu ruft man im Data-Tab
die Verbindung zu den Analysis Services auf.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/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/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb.png" width="521" height="359"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Im folgenden Dialog gibt man nun die Verbindungsdaten ein. Soll der Zugriff auf eine
bennante Instanz erfolgen, muss diese angegeben werden, z.B. mySQLServer\MyInstance.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/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/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_1.png" width="520" height="363"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Dann wählt man entweder den Cube oder eine Perspektive aus
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_2.png" width="530" height="377"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Die Verbindung kann man nun speichern. Sie steht dann unter Existing Connections für
weitere Anwendungen zur Verfügung.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_3.png" width="520" height="435"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Im nächsten Schritt kann man eine Pivot Table in das bestehende Excel Workbook einfügen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_4.png" width="294" height="246"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Im rechten Bereich kann man nun Felder in die Bereiche für Filter, Spalten, Zeilen
oder Werte ziehen. Die Felder lassen sich dabei nach verschiedenen Kategorien über
die oberste Dropdownlist filtern.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZugriffaufdenTFSCubeausExcel_87F3/image_thumb_5.png" width="356" height="992"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
In einem späteren Post werde ich beschreiben, wie man mit Hilfe der Pivot Tables entsprechende
Auswertungen auf dem Cube erstellt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cd01ed51-e5fb-48bc-ab2b-e09d2a480870" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,cd01ed51-e5fb-48bc-ab2b-e09d2a480870.aspx</comments>
      <category>SQL</category>
      <category>Team System Server</category>
      <category>TFS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=1ccd5d13-30df-440d-a4a0-8eeb858c39b7</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,1ccd5d13-30df-440d-a4a0-8eeb858c39b7.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,1ccd5d13-30df-440d-a4a0-8eeb858c39b7.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1ccd5d13-30df-440d-a4a0-8eeb858c39b7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Beim starten einer Environment im Microsoft Lab Management dauert es meist geraume
Zeit, bis die Workflow capabilities bereit zur Ausführung sind.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/StarteneinerLabEnvironmentbeschleunigen_1305F/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/StarteneinerLabEnvironmentbeschleunigen_1305F/image_thumb.png" width="244" height="83" />
          </a>
        </p>
        <p>
Will man diese Zeit reduzieren, ist ein einfaches Mittel in den VMs das IPv6 Protokoll
auf den Netzwerkkarten zu reduzieren. Bei mir hat das die Wartezeit für die Workflow
capabilities von 2:44 Min auf 0:40 Min reduziert.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1ccd5d13-30df-440d-a4a0-8eeb858c39b7" />
      </body>
      <title>Starten einer Lab Environment beschleunigen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,1ccd5d13-30df-440d-a4a0-8eeb858c39b7.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,1ccd5d13-30df-440d-a4a0-8eeb858c39b7.aspx</link>
      <pubDate>Tue, 12 Oct 2010 19:45:40 GMT</pubDate>
      <description>&lt;p&gt;
Beim starten einer Environment im Microsoft Lab Management dauert es meist geraume
Zeit, bis die Workflow capabilities bereit zur Ausführung sind.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/StarteneinerLabEnvironmentbeschleunigen_1305F/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/StarteneinerLabEnvironmentbeschleunigen_1305F/image_thumb.png" width="244" height="83"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Will man diese Zeit reduzieren, ist ein einfaches Mittel in den VMs das IPv6 Protokoll
auf den Netzwerkkarten zu reduzieren. Bei mir hat das die Wartezeit für die Workflow
capabilities von 2:44 Min auf 0:40 Min reduziert.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1ccd5d13-30df-440d-a4a0-8eeb858c39b7" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,1ccd5d13-30df-440d-a4a0-8eeb858c39b7.aspx</comments>
      <category>Team System Server</category>
      <category>Testing</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=33ba9c71-24fe-4245-8916-9ede5ccfb37d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,33ba9c71-24fe-4245-8916-9ede5ccfb37d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,33ba9c71-24fe-4245-8916-9ede5ccfb37d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=33ba9c71-24fe-4245-8916-9ede5ccfb37d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Beim nächste Treffen der VS ALM User Group hält Ed Blankenship einen Vortrag über
die Anpassungen des Builds im TFS2010. 
</p>
        <p>
Weitere Infos unter <a href="http://www.vsalmug.com">http://www.vsalmug.com</a></p>
        <p>
Date: October 7th, 2010 
<br />
Time: 19:00 CEST (17:00 UTC without summertime) 
<br />
Add to Calendar: <a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Ftinyurl%2Ecom%2F2wmsfgu&amp;urlhash=b3_3" target="_blank"><font color="#006699"><u>http://tinyurl.com/2wmsfgu</u></font></a><span class="text"><br />
Join meeting: </span><a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Ftinyurl%2Ecom%2F2v3u8at&amp;urlhash=IvbQ" target="_blank"><font color="#006699"><u>http://tinyurl.com/2v3u8at</u></font></a><span class="text"><br /><br />
In TFS 2010, the automated build infrastructure has been revamped to use Windows Workflow
Foundation (WF) instead of MSBuild. In this session, we will explore how to customize
the default build process template and how to leverage multiple aspects of the workflow
implementation for TFS 2010 Build. 
<br /><br />
We will cover: 
<br />
• Explore the basics of Windows Workflow Foundation as it is used in TFS 2010 Build 
<br />
• Review the high-level parts of the default build process template in TFS 2010 Build 
<br />
• Adding new functionality to the build process using out of the box workflow activities 
<br />
• Creating variables and process parameters that can be exposed to the end user 
<br />
• Thoughts about designing &amp; architecting your build process for reuse 
<br />
• Building a custom activity for use in the build process template 
<br />
• Deploying the custom activity to all of the build servers in the build farm 
<br /><br />
Presenter: Ed Blankenship 
<br />
Ed is an Application Lifecycle Management (ALM) Consultant with Notion Solutions and
a Microsoft Most Valuable Professional (MVP) in Visual Studio ALM &amp; Team Foundation
Server. 
<br />
Ed was voted as the Microsoft MVP of the Year (Visual Studio ALM, TFS) for 2010 by
his peers. 
<br />
His expertise is in Microsoft Visual Studio Team System and Team Foundation Server
in which he has been actively using, managing, and implementing for nearly five years
since the beginning of those products in 2005. He has been awarded since 2008 as a
Microsoft MVP in Visual Studio ALM, Team Foundation Server and Visual Studio Team
System. 
<br />
As an ALM Consultant, he assists organizations with improving their development lifecycle
by suggesting improvements to their processes and implementing Application Lifecycle
Management tools to assist with that improvement. By using Visual Studio ALM and Team
Foundation Server, customers can immediately see value from their improvements. 
<br />
Ed was previously the Release Engineering Manager at Infragistics where he led a multi-year
TFS &amp; Visual Studio Team System implementation to improve the development process
lifecycle. 
<br />
Ed is the lead author of the Wrox Professional Team Foundation Server 2010 book, has
been a technical editor for the Wrox Silverlight 1.0, Silverlight 2 Developer's Guide,
Silverlight 3 Programmer's Reference, and Silverlight 2 Bible books, author of numerous
articles, and has spoken at various user groups, events, radio shows, and conferences. 
<br />
You can find Ed blogging at </span><a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Eedsquared%2Ecom&amp;urlhash=82hC" target="_blank"><font color="#006699"><u>http://www.edsquared.com</u></font></a><span class="text">,
tweeting at @EdBlankenship (</span><a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Etwitter%2Ecom%2Fedblankenship&amp;urlhash=OE4y" target="_blank"><font color="#006699"><u>http://www.twitter.com/edblankenship</u></font></a><span class="text">),
and more information on his LinkedIn profile page: </span><a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Elinkedin%2Ecom%2Fin%2Fedblankenship&amp;urlhash=-uch" target="_blank"><font color="#006699"><u>http://www.linkedin.com/in/edblankenship</u></font></a><span class="text">.
His MVP profile is also available at </span><a title="New window will open" href="http://www.linkedin.com/redirect?url=https%3A%2F%2Fmvp%2Esupport%2Emicrosoft%2Ecom%2Fprofile%2Fed%2Eblankenship&amp;urlhash=MMCs" target="_blank"><font color="#006699"><u>https://mvp.support.microsoft.com/profile/ed.blankenship</u></font></a><span class="text">.</span></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=33ba9c71-24fe-4245-8916-9ede5ccfb37d" />
      </body>
      <title>Ed Blankenship &amp;uuml;ber Anpassung des Build Prozess mit TFS 2010 Build und Workflow Foundation</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,33ba9c71-24fe-4245-8916-9ede5ccfb37d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,33ba9c71-24fe-4245-8916-9ede5ccfb37d.aspx</link>
      <pubDate>Wed, 06 Oct 2010 20:09:11 GMT</pubDate>
      <description>&lt;p&gt;
Beim nächste Treffen der VS ALM User Group hält Ed Blankenship einen Vortrag über
die Anpassungen des Builds im TFS2010. 
&lt;/p&gt;
&lt;p&gt;
Weitere Infos unter &lt;a href="http://www.vsalmug.com"&gt;http://www.vsalmug.com&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Date: October 7th, 2010 
&lt;br&gt;
Time: 19:00 CEST (17:00 UTC without summertime) 
&lt;br&gt;
Add to Calendar: &lt;a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Ftinyurl%2Ecom%2F2wmsfgu&amp;amp;urlhash=b3_3" target="_blank"&gt;&lt;font color="#006699"&gt;&lt;u&gt;http://tinyurl.com/2wmsfgu&lt;/u&gt;&lt;/font&gt;&lt;/a&gt; &lt;span class="text"&gt;
&lt;br&gt;
Join meeting: &lt;/span&gt;&lt;a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Ftinyurl%2Ecom%2F2v3u8at&amp;amp;urlhash=IvbQ" target="_blank"&gt;&lt;font color="#006699"&gt;&lt;u&gt;http://tinyurl.com/2v3u8at&lt;/u&gt;&lt;/font&gt;&lt;/a&gt; &lt;span class="text"&gt;
&lt;br&gt;
&lt;br&gt;
In TFS 2010, the automated build infrastructure has been revamped to use Windows Workflow
Foundation (WF) instead of MSBuild. In this session, we will explore how to customize
the default build process template and how to leverage multiple aspects of the workflow
implementation for TFS 2010 Build. 
&lt;br&gt;
&lt;br&gt;
We will cover: 
&lt;br&gt;
• Explore the basics of Windows Workflow Foundation as it is used in TFS 2010 Build 
&lt;br&gt;
• Review the high-level parts of the default build process template in TFS 2010 Build 
&lt;br&gt;
• Adding new functionality to the build process using out of the box workflow activities 
&lt;br&gt;
• Creating variables and process parameters that can be exposed to the end user 
&lt;br&gt;
• Thoughts about designing &amp;amp; architecting your build process for reuse 
&lt;br&gt;
• Building a custom activity for use in the build process template 
&lt;br&gt;
• Deploying the custom activity to all of the build servers in the build farm 
&lt;br&gt;
&lt;br&gt;
Presenter: Ed Blankenship 
&lt;br&gt;
Ed is an Application Lifecycle Management (ALM) Consultant with Notion Solutions and
a Microsoft Most Valuable Professional (MVP) in Visual Studio ALM &amp;amp; Team Foundation
Server. 
&lt;br&gt;
Ed was voted as the Microsoft MVP of the Year (Visual Studio ALM, TFS) for 2010 by
his peers. 
&lt;br&gt;
His expertise is in Microsoft Visual Studio Team System and Team Foundation Server
in which he has been actively using, managing, and implementing for nearly five years
since the beginning of those products in 2005. He has been awarded since 2008 as a
Microsoft MVP in Visual Studio ALM, Team Foundation Server and Visual Studio Team
System. 
&lt;br&gt;
As an ALM Consultant, he assists organizations with improving their development lifecycle
by suggesting improvements to their processes and implementing Application Lifecycle
Management tools to assist with that improvement. By using Visual Studio ALM and Team
Foundation Server, customers can immediately see value from their improvements. 
&lt;br&gt;
Ed was previously the Release Engineering Manager at Infragistics where he led a multi-year
TFS &amp;amp; Visual Studio Team System implementation to improve the development process
lifecycle. 
&lt;br&gt;
Ed is the lead author of the Wrox Professional Team Foundation Server 2010 book, has
been a technical editor for the Wrox Silverlight 1.0, Silverlight 2 Developer's Guide,
Silverlight 3 Programmer's Reference, and Silverlight 2 Bible books, author of numerous
articles, and has spoken at various user groups, events, radio shows, and conferences. 
&lt;br&gt;
You can find Ed blogging at &lt;/span&gt;&lt;a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Eedsquared%2Ecom&amp;amp;urlhash=82hC" target="_blank"&gt;&lt;font color="#006699"&gt;&lt;u&gt;http://www.edsquared.com&lt;/u&gt;&lt;/font&gt;&lt;/a&gt; &lt;span class="text"&gt;,
tweeting at @EdBlankenship (&lt;/span&gt; &lt;a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Etwitter%2Ecom%2Fedblankenship&amp;amp;urlhash=OE4y" target="_blank"&gt;&lt;font color="#006699"&gt;&lt;u&gt;http://www.twitter.com/edblankenship&lt;/u&gt;&lt;/font&gt;&lt;/a&gt; &lt;span class="text"&gt;),
and more information on his LinkedIn profile page: &lt;/span&gt;&lt;a title="New window will open" href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fwww%2Elinkedin%2Ecom%2Fin%2Fedblankenship&amp;amp;urlhash=-uch" target="_blank"&gt;&lt;font color="#006699"&gt;&lt;u&gt;http://www.linkedin.com/in/edblankenship&lt;/u&gt;&lt;/font&gt;&lt;/a&gt; &lt;span class="text"&gt;.
His MVP profile is also available at &lt;/span&gt;&lt;a title="New window will open" href="http://www.linkedin.com/redirect?url=https%3A%2F%2Fmvp%2Esupport%2Emicrosoft%2Ecom%2Fprofile%2Fed%2Eblankenship&amp;amp;urlhash=MMCs" target="_blank"&gt;&lt;font color="#006699"&gt;&lt;u&gt;https://mvp.support.microsoft.com/profile/ed.blankenship&lt;/u&gt;&lt;/font&gt;&lt;/a&gt; &lt;span class="text"&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=33ba9c71-24fe-4245-8916-9ede5ccfb37d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,33ba9c71-24fe-4245-8916-9ede5ccfb37d.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=fe68761d-ab95-44ec-8da0-0ce3feb392d4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,fe68761d-ab95-44ec-8da0-0ce3feb392d4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,fe68761d-ab95-44ec-8da0-0ce3feb392d4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=fe68761d-ab95-44ec-8da0-0ce3feb392d4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Um mit dem MS Test Framework eine Code Coverage Analyse auszuführen, muss diese zunächst
aktiviert werden. Da es hierbei immer wieder zu Fragen / Problemen kommt, möchte ich
den Weg hier einmal ausführlich beschreiben:
</p>
        <p>
Zunächst öffnet man eine vorhandene Test Settings Datei
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/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/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb.png" width="533" height="224" />
          </a>
        </p>
        <p>
Hier aktiviert man zunächst unter “Data and Diagnostics”´die Code Coverage und öffnet
dann die Konfiguration für diesen Data Collector.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/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/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_1.png" width="601" height="442" />
          </a>
        </p>
        <p>
Hier wählt man nun die Assemblies für die die Coverage Analyse erstellt werden soll
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_3.png" width="612" height="404" />
          </a>
        </p>
        <p>
Anschließend speichert man die Test Settings unter einem eigenen Namen wie beispielsweise
“CodeCoverage” ab. Dies kann man als aktive Test Settings selektieren.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_4.png" width="556" height="234" />
          </a>
        </p>
        <p>
Nun kann man Unit-Tests ausführen und anschließend im Test Results Fenster die Code
Coverage Results aufrufen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_5.png" width="862" height="94" />
          </a>
        </p>
        <p>
Die Ergebnisse werden nun tabellarisch angezeigt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_6.png" width="556" height="232" />
          </a>
        </p>
        <p>
Zusätzlich kann man dann noch die Coverage im Code anzeigen lassen. Hierzu einfach
in der Toolbar den gekennzeichneten Butten klicken.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_20.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/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_9.png" width="847" height="545" />
          </a>
        </p>
        <p>
Hier sieht man nun, welche Codebereiche noch nicht durch die Tests abgedeckt sind.
Hier sollten also noch ein paar weiter Tests geschrieben werden um die Testabdeckung
zu erhöhen. Welche Input-Parameter diese abdecken sollten, zeigt die Coverage Analyse.
</p>
        <p>
          <strong>Tipp</strong>: Sollte die Coverage Anlayse auf dem oben beschriebenen Weg
nicht gleich angezeeigt werden, hilft manchmal ein neustart von Visual Studio. Ich
hatte schon verschiedendlich Situationen, als die Einstellung nicht sofort übernommen
wurde.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=fe68761d-ab95-44ec-8da0-0ce3feb392d4" />
      </body>
      <title>Code Coverage Analyse in Visual Studio 2010 aktivieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,fe68761d-ab95-44ec-8da0-0ce3feb392d4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,fe68761d-ab95-44ec-8da0-0ce3feb392d4.aspx</link>
      <pubDate>Fri, 01 Oct 2010 21:42:43 GMT</pubDate>
      <description>&lt;p&gt;
Um mit dem MS Test Framework eine Code Coverage Analyse auszuführen, muss diese zunächst
aktiviert werden. Da es hierbei immer wieder zu Fragen / Problemen kommt, möchte ich
den Weg hier einmal ausführlich beschreiben:
&lt;/p&gt;
&lt;p&gt;
Zunächst öffnet man eine vorhandene Test Settings Datei
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/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/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb.png" width="533" height="224"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier aktiviert man zunächst unter “Data and Diagnostics”´die Code Coverage und öffnet
dann die Konfiguration für diesen Data Collector.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/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/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_1.png" width="601" height="442"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier wählt man nun die Assemblies für die die Coverage Analyse erstellt werden soll
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_3.png" width="612" height="404"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Anschließend speichert man die Test Settings unter einem eigenen Namen wie beispielsweise
“CodeCoverage” ab. Dies kann man als aktive Test Settings selektieren.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_4.png" width="556" height="234"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Nun kann man Unit-Tests ausführen und anschließend im Test Results Fenster die Code
Coverage Results aufrufen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_5.png" width="862" height="94"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Die Ergebnisse werden nun tabellarisch angezeigt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_6.png" width="556" height="232"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Zusätzlich kann man dann noch die Coverage im Code anzeigen lassen. Hierzu einfach
in der Toolbar den gekennzeichneten Butten klicken.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_20.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/CodeCoverageAnalyseinVisualStudio2010akt_14B9F/image_thumb_9.png" width="847" height="545"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier sieht man nun, welche Codebereiche noch nicht durch die Tests abgedeckt sind.
Hier sollten also noch ein paar weiter Tests geschrieben werden um die Testabdeckung
zu erhöhen. Welche Input-Parameter diese abdecken sollten, zeigt die Coverage Analyse.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Tipp&lt;/strong&gt;: Sollte die Coverage Anlayse auf dem oben beschriebenen Weg
nicht gleich angezeeigt werden, hilft manchmal ein neustart von Visual Studio. Ich
hatte schon verschiedendlich Situationen, als die Einstellung nicht sofort übernommen
wurde.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=fe68761d-ab95-44ec-8da0-0ce3feb392d4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,fe68761d-ab95-44ec-8da0-0ce3feb392d4.aspx</comments>
      <category>Testing</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=9fb986c9-5693-4a4e-a091-5c93a13d7d8b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,9fb986c9-5693-4a4e-a091-5c93a13d7d8b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,9fb986c9-5693-4a4e-a091-5c93a13d7d8b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9fb986c9-5693-4a4e-a091-5c93a13d7d8b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft schließt eine Sicherheitslücke im ASP.Net durch ein Out-of-Band-Ipdate.
Da der TFS komplett auf ASP.Net basiert, ist au der TFS von dieser Sicherheitslücke
betroffen und wer auf der sicheren Seite sein möchte sollte den nun verfügbaren Patch
installieren.
</p>
        <p>
Weitere Details und die Download-Links gibt es auf TechNet unter <a href="http://blogs.technet.com/b/michaelkranawetter/archive/2010/09/28/update-out-of-band-updates-f-252-r-asp-net-l-252-cke-verf-252-gbar.aspx">http://blogs.technet.com/b/michaelkranawetter/archive/2010/09/28/update-out-of-band-updates-f-252-r-asp-net-l-252-cke-verf-252-gbar.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9fb986c9-5693-4a4e-a091-5c93a13d7d8b" />
      </body>
      <title>Microsoft schlie&amp;szlig;t Sicherheitsl&amp;uuml;cke im ASP.Net Framework</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,9fb986c9-5693-4a4e-a091-5c93a13d7d8b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,9fb986c9-5693-4a4e-a091-5c93a13d7d8b.aspx</link>
      <pubDate>Tue, 28 Sep 2010 19:13:19 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft schließt eine Sicherheitslücke im ASP.Net durch ein Out-of-Band-Ipdate.
Da der TFS komplett auf ASP.Net basiert, ist au der TFS von dieser Sicherheitslücke
betroffen und wer auf der sicheren Seite sein möchte sollte den nun verfügbaren Patch
installieren.
&lt;/p&gt;
&lt;p&gt;
Weitere Details und die Download-Links gibt es auf TechNet unter &lt;a href="http://blogs.technet.com/b/michaelkranawetter/archive/2010/09/28/update-out-of-band-updates-f-252-r-asp-net-l-252-cke-verf-252-gbar.aspx"&gt;http://blogs.technet.com/b/michaelkranawetter/archive/2010/09/28/update-out-of-band-updates-f-252-r-asp-net-l-252-cke-verf-252-gbar.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9fb986c9-5693-4a4e-a091-5c93a13d7d8b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,9fb986c9-5693-4a4e-a091-5c93a13d7d8b.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=bb1b1a5a-9d22-4d26-8dab-e425e68d3058</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,bb1b1a5a-9d22-4d26-8dab-e425e68d3058.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,bb1b1a5a-9d22-4d26-8dab-e425e68d3058.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=bb1b1a5a-9d22-4d26-8dab-e425e68d3058</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wenn das TFS Dashboard zu lange braucht um angezeigt zu werden, dann kann ein Grund
dafür das “Recent Builds Webpart” sein. Dieses hat offensichtlich noch einen Bug und
liest zu viele Informationen vom TFS. Wird die Anzahl der Builds zu hoch, dann hat
das Webpart einen sehr deutlichen Einfluss auf die Performance des Dashboards, insbesondere
beim erstmaligen Laden. 
</p>
        <p>
Microsoft hat das als Bug identifiziert und verspricht mit dem SP1 Abhilfe zu schaffen.
Im Moment hilft leider nur, entweder das WebPart vom Dashboard zu entfernen oder die
Build-Historie regelmäßig zu löschen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=bb1b1a5a-9d22-4d26-8dab-e425e68d3058" />
      </body>
      <title>Performance Probleme mit dem TFS SharePoint Dashboard</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,bb1b1a5a-9d22-4d26-8dab-e425e68d3058.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,bb1b1a5a-9d22-4d26-8dab-e425e68d3058.aspx</link>
      <pubDate>Tue, 28 Sep 2010 06:29:56 GMT</pubDate>
      <description>&lt;p&gt;
Wenn das TFS Dashboard zu lange braucht um angezeigt zu werden, dann kann ein Grund
dafür das “Recent Builds Webpart” sein. Dieses hat offensichtlich noch einen Bug und
liest zu viele Informationen vom TFS. Wird die Anzahl der Builds zu hoch, dann hat
das Webpart einen sehr deutlichen Einfluss auf die Performance des Dashboards, insbesondere
beim erstmaligen Laden. 
&lt;/p&gt;
&lt;p&gt;
Microsoft hat das als Bug identifiziert und verspricht mit dem SP1 Abhilfe zu schaffen.
Im Moment hilft leider nur, entweder das WebPart vom Dashboard zu entfernen oder die
Build-Historie regelmäßig zu löschen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=bb1b1a5a-9d22-4d26-8dab-e425e68d3058" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,bb1b1a5a-9d22-4d26-8dab-e425e68d3058.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7d154da9-f245-486e-9617-83636ea1326a</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7d154da9-f245-486e-9617-83636ea1326a.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7d154da9-f245-486e-9617-83636ea1326a.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7d154da9-f245-486e-9617-83636ea1326a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die neueste Version (September) der TFS Power Tools enthalten auch eine neue Backupfunktion
mit der nicht nur der TFS sondern auch die Reporting Services und der SharePoint Server
gesichert werden können. Aktuell rät Microsoft jedoch vom Einsatz der SharePoint Backup-Funktion
ab, da diese gegen das Service Agreement verstößt wie genauere Recherchen zusammen
mit dem SharePoint-Team ergeben haben. Aktuell wird mit Hochdruck an einer aktualisierten
Version gearbeitet.
</p>
        <p>
Quelle: <a href="http://blogs.msdn.com/b/bharry/archive/2010/09/23/update-on-backing-up-tfs-with-sharepoint.aspx">Brian
Harrys Blog Update on backing up TFS with Sharepoint</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d154da9-f245-486e-9617-83636ea1326a" />
      </body>
      <title>Microsoft r&amp;auml;t vom Einsatz des aktuellen Backups f&amp;uuml;r SharePoint der TFS Power Tools ab</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7d154da9-f245-486e-9617-83636ea1326a.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7d154da9-f245-486e-9617-83636ea1326a.aspx</link>
      <pubDate>Mon, 27 Sep 2010 06:46:13 GMT</pubDate>
      <description>&lt;p&gt;
Die neueste Version (September) der TFS Power Tools enthalten auch eine neue Backupfunktion
mit der nicht nur der TFS sondern auch die Reporting Services und der SharePoint Server
gesichert werden können. Aktuell rät Microsoft jedoch vom Einsatz der SharePoint Backup-Funktion
ab, da diese gegen das Service Agreement verstößt wie genauere Recherchen zusammen
mit dem SharePoint-Team ergeben haben. Aktuell wird mit Hochdruck an einer aktualisierten
Version gearbeitet.
&lt;/p&gt;
&lt;p&gt;
Quelle: &lt;a href="http://blogs.msdn.com/b/bharry/archive/2010/09/23/update-on-backing-up-tfs-with-sharepoint.aspx"&gt;Brian
Harrys Blog Update on backing up TFS with Sharepoint&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d154da9-f245-486e-9617-83636ea1326a" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7d154da9-f245-486e-9617-83636ea1326a.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=56227fe8-41cc-436c-a5d0-7de974cef9bc</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,56227fe8-41cc-436c-a5d0-7de974cef9bc.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,56227fe8-41cc-436c-a5d0-7de974cef9bc.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=56227fe8-41cc-436c-a5d0-7de974cef9bc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Web Performance Tests zeichnen die HTTP-Kommunikation zwischen einem Client und einem
Webserver auf und können diesen dann wieder abspielen. Somit lässt sich der Server-Code
relativ einfach “von Außen” testen und diese Tests eignen sich auch sehr gut um Load-Tests
zu generieren.
</p>
        <p>
Manche Web-Anwendungen verwenden die URL um die Session ID zu übermitteln, vor allem
wenn keine Cookies zur Verfügung stehen. Dann entsteht allerdings das Problem, dass
die aufgezeichneten Requests nicht wieder sauber abgespielt wreden können, da diese
dann ja auf eine nicht mehr aktive Session verweisen. Dieses Problem kann man allerdings
recht elegant lösen:
</p>
        <p>
Zunächst verwendet man einen Request der ohne Session ID arbeitet um die Applikation
zu starten. Dieser liefert normalerweise im Response einen Redirect auf die URL inkl.
SessionID zurück.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/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/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb.png" width="645" height="397" />
          </a>
        </p>
        <p>
Diesem Request kann nun in der Definition des Web Tests eine Extraction Rule hinzugefügt
werden (Rechte Maustaste / Add Extraction Rule). Hier kann mit der Extract Text Rule
nun im Response nach einem Text gesucht werden. Dazu wird eine Startsquenz “(S(" und
eine Endesequenz “))” angegeben. Der Text dazwischen wird dann extrahiert und in den
Parameter “URLSessionID” geschrieben.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_2.png" width="654" height="451" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_3.png" width="340" height="105" />
          </a>
        </p>
        <p>
Mit einem Find and Replace auf dem wurzelknoten des Tests  können nun alle URLs
im Test automatisch aktualisiert werden.<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_10.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_4.png" width="340" height="473" /></a></p>
        <p>
Hier wird einfach die aufgezeichnete Session ID durch den Parameter “{{URLSessionID}}”
ersetzt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_5.png" width="342" height="521" />
          </a>
        </p>
        <p>
Der so modifizierte Test kann nun reproduzierbar ausgeführt werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=56227fe8-41cc-436c-a5d0-7de974cef9bc" />
      </body>
      <title>Session ID bei Web Performance Tests dynamisieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,56227fe8-41cc-436c-a5d0-7de974cef9bc.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,56227fe8-41cc-436c-a5d0-7de974cef9bc.aspx</link>
      <pubDate>Wed, 15 Sep 2010 16:44:54 GMT</pubDate>
      <description>&lt;p&gt;
Web Performance Tests zeichnen die HTTP-Kommunikation zwischen einem Client und einem
Webserver auf und können diesen dann wieder abspielen. Somit lässt sich der Server-Code
relativ einfach “von Außen” testen und diese Tests eignen sich auch sehr gut um Load-Tests
zu generieren.
&lt;/p&gt;
&lt;p&gt;
Manche Web-Anwendungen verwenden die URL um die Session ID zu übermitteln, vor allem
wenn keine Cookies zur Verfügung stehen. Dann entsteht allerdings das Problem, dass
die aufgezeichneten Requests nicht wieder sauber abgespielt wreden können, da diese
dann ja auf eine nicht mehr aktive Session verweisen. Dieses Problem kann man allerdings
recht elegant lösen:
&lt;/p&gt;
&lt;p&gt;
Zunächst verwendet man einen Request der ohne Session ID arbeitet um die Applikation
zu starten. Dieser liefert normalerweise im Response einen Redirect auf die URL inkl.
SessionID zurück.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/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/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb.png" width="645" height="397"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Diesem Request kann nun in der Definition des Web Tests eine Extraction Rule hinzugefügt
werden (Rechte Maustaste / Add Extraction Rule). Hier kann mit der Extract Text Rule
nun im Response nach einem Text gesucht werden. Dazu wird eine Startsquenz “(S(" und
eine Endesequenz “))” angegeben. Der Text dazwischen wird dann extrahiert und in den
Parameter “URLSessionID” geschrieben.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_2.png" width="654" height="451"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_3.png" width="340" height="105"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Mit einem Find and Replace auf dem wurzelknoten des Tests&amp;nbsp; können nun alle URLs
im Test automatisch aktualisiert werden.&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_4.png" width="340" height="473"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier wird einfach die aufgezeichnete Session ID durch den Parameter “{{URLSessionID}}”
ersetzt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SessionIDbeiWebPerformanceTestsdynamisie_105F4/image_thumb_5.png" width="342" height="521"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Der so modifizierte Test kann nun reproduzierbar ausgeführt werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=56227fe8-41cc-436c-a5d0-7de974cef9bc" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,56227fe8-41cc-436c-a5d0-7de974cef9bc.aspx</comments>
      <category>Testing</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=ba4247ee-482f-4683-83f8-f5b4075bc575</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,ba4247ee-482f-4683-83f8-f5b4075bc575.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,ba4247ee-482f-4683-83f8-f5b4075bc575.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=ba4247ee-482f-4683-83f8-f5b4075bc575</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Team Foundation Server bietet ein extrem flexibles und leistungsfähiges Konzept
zur Definition von Work Items. Damit lassen sich viele Szenarien über eine reine Konfiguration
abbilden. Um die Mächtigkeit zu demonstrieren, hier ein paar Beispiele. Diese Beispiele
nutzen den Process Template Editor der Bestandteil der kostenlosen <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da">Team
Foundation Server 2010 Power Tools</a> ist.
</p>
        <p>
          <strong>1.) Nur bestimmte Benutzer sollen ein Workitem eines bestimmten Typs anlegen
dürfen</strong>
        </p>
        <p>
Ein verbreitetes Szenario ist, dass nur ein bestimmter Personenkreis Workitems eines
bestimmten Typs (in diesem Beispiel der Typ Bug) anlegen dürfen, andere Benutzer sollen
diese aber weiter bearbeiten können. Auch wenn die Umsetzung nicht ganz ideal ist
lässt sich diese Funktion mit dem TFS relativ einfach erreichen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb.png" width="548" height="213" />
          </a>
        </p>
        <p>
Wie im Screenshot zu sehen, ist der Status Active für diesen Benutzer ungültig. Damit
kann er das Workitem nicht speichern. Wie gesagt, nicht gerade schön aber wirkungsvoll.
Wie erreichen wir nun diese Funktion?
</p>
        <p>
Im Process Template Editor sehen wir im Workflow des Bug-WIT eine Transition von nirgendwo
nach Active
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_1.png" width="336" height="238" />
          </a>
        </p>
        <p>
Diese Transition wird verwendet wenn ein neues Workitem angelegt wird. Auf dieser
Transition können wir nun eine Berechtigung einstellen. Dazu geben wir in das Feld
“For” eine TFS Gruppe ein die diese Funktion ausführen darf. Alternativ kann bei “Not”
eine Gruppe angeben die diese Transition nicht nutzen darf. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_2.png" width="368" height="165" />
          </a>
        </p>
        <p>
Dieses Feature kann natürlich auch für Transitions zwischen zwei Status genutzt werden,
also z.B. um zu steuern wer den Bug schließen darf.
</p>
        <p>
          <strong>2.) Ein Feld muss gefüllt sein wenn ein anderes einen bestimmten Wert hat</strong>
        </p>
        <p>
In der Praxis kommt es häufiger vor, dass iin Abhängigkeit eines Wertes ein anderes
Feld ausgefüllt sein muss. In unserem Beispiel nehmen wir mal an, dass auf dem Bug
die Repro-Stepsausgefüllt sein müssen wenn der Bug die Priorität 1 hat. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_3.png" width="622" height="305" />
          </a>
        </p>
        <p>
Dazu stellen wir auf dem Feld Repro Steps eine WHEN-Regel ein
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_4.png" width="489" height="407" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_5.png" width="514" height="161" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Und sagen wenn diese Bedingung erfüllt ist, dann soll das Feld ein Pflichtfeld sein
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_6.png" width="514" height="185" />
          </a>
        </p>
        <p>
          <strong>3.) Befüllen einer Auswahlliste in Abhängigkeit eines anderen Feldes</strong>
        </p>
        <p>
Das dritte Beispiel soll uns die Auswahlliste eines Feldes in Abhängigkeit eines anderen
Feldes befüllen. In unserem Beispiel soll das Feld Team in Abhängigkeit der Area befüllt
werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_16.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_7.png" width="337" height="169" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_18.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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_8.png" width="338" height="157" />
          </a>
        </p>
        <p>
Dazu definieren wir für das Feld Team das wir zuvor hinzugefügt haben 2 When-Regeln
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_20.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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_9.png" width="544" height="309" />
          </a>
        </p>
        <p>
An dieser Stelle verwenden wir für die Regel nicht das Feld AreaPath da hierarchische
Felder in Regeln nicht richtig unterstützt werden. Diese produzieren dann beim Import
des WIT den Fehler "TF26204: The account you entered is not recognized". Der Umweg
über die AreaID umgeht diese Problem.
</p>
        <p>
Dann stellen wir einfach die AllowedValues für die beiden Fälle ein.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_22.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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_10.png" width="547" height="409" />
          </a>
        </p>
        <p>
Man sieht also, dass der TFS einiges an Flexibiölität zu beieten hat. Es lohnt sich
damit mal etwas zu experimentieren. Generell möchte ich aber vor Überregulierung warnen
weil dies in der Praxis meist dazu führt, dass die Anwender behindert werden und somit
die Akzeptanz des Tools sinkt.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ba4247ee-482f-4683-83f8-f5b4075bc575" />
      </body>
      <title>Tipps zur Defintion von Funktionen im Work Item Type des TFS</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,ba4247ee-482f-4683-83f8-f5b4075bc575.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,ba4247ee-482f-4683-83f8-f5b4075bc575.aspx</link>
      <pubDate>Sun, 08 Aug 2010 16:32:18 GMT</pubDate>
      <description>&lt;p&gt;
Der Team Foundation Server bietet ein extrem flexibles und leistungsfähiges Konzept
zur Definition von Work Items. Damit lassen sich viele Szenarien über eine reine Konfiguration
abbilden. Um die Mächtigkeit zu demonstrieren, hier ein paar Beispiele. Diese Beispiele
nutzen den Process Template Editor der Bestandteil der kostenlosen &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da"&gt;Team
Foundation Server 2010 Power Tools&lt;/a&gt; ist.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1.) Nur bestimmte Benutzer sollen ein Workitem eines bestimmten Typs anlegen
dürfen&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Ein verbreitetes Szenario ist, dass nur ein bestimmter Personenkreis Workitems eines
bestimmten Typs (in diesem Beispiel der Typ Bug) anlegen dürfen, andere Benutzer sollen
diese aber weiter bearbeiten können. Auch wenn die Umsetzung nicht ganz ideal ist
lässt sich diese Funktion mit dem TFS relativ einfach erreichen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb.png" width="548" height="213"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Wie im Screenshot zu sehen, ist der Status Active für diesen Benutzer ungültig. Damit
kann er das Workitem nicht speichern. Wie gesagt, nicht gerade schön aber wirkungsvoll.
Wie erreichen wir nun diese Funktion?
&lt;/p&gt;
&lt;p&gt;
Im Process Template Editor sehen wir im Workflow des Bug-WIT eine Transition von nirgendwo
nach Active
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_1.png" width="336" height="238"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Diese Transition wird verwendet wenn ein neues Workitem angelegt wird. Auf dieser
Transition können wir nun eine Berechtigung einstellen. Dazu geben wir in das Feld
“For” eine TFS Gruppe ein die diese Funktion ausführen darf. Alternativ kann bei “Not”
eine Gruppe angeben die diese Transition nicht nutzen darf. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_2.png" width="368" height="165"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Dieses Feature kann natürlich auch für Transitions zwischen zwei Status genutzt werden,
also z.B. um zu steuern wer den Bug schließen darf.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2.) Ein Feld muss gefüllt sein wenn ein anderes einen bestimmten Wert hat&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In der Praxis kommt es häufiger vor, dass iin Abhängigkeit eines Wertes ein anderes
Feld ausgefüllt sein muss. In unserem Beispiel nehmen wir mal an, dass auf dem Bug
die Repro-Stepsausgefüllt sein müssen wenn der Bug die Priorität 1 hat. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_3.png" width="622" height="305"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Dazu stellen wir auf dem Feld Repro Steps eine WHEN-Regel ein
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_4.png" width="489" height="407"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_5.png" width="514" height="161"&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;
Und sagen wenn diese Bedingung erfüllt ist, dann soll das Feld ein Pflichtfeld sein
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_6.png" width="514" height="185"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3.) Befüllen einer Auswahlliste in Abhängigkeit eines anderen Feldes&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Das dritte Beispiel soll uns die Auswahlliste eines Feldes in Abhängigkeit eines anderen
Feldes befüllen. In unserem Beispiel soll das Feld Team in Abhängigkeit der Area befüllt
werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_7.png" width="337" height="169"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_18.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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_8.png" width="338" height="157"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Dazu definieren wir für das Feld Team das wir zuvor hinzugefügt haben 2 When-Regeln
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_20.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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_9.png" width="544" height="309"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
An dieser Stelle verwenden wir für die Regel nicht das Feld AreaPath da hierarchische
Felder in Regeln nicht richtig unterstützt werden. Diese produzieren dann beim Import
des WIT den Fehler "TF26204: The account you entered is not recognized". Der Umweg
über die AreaID umgeht diese Problem.
&lt;/p&gt;
&lt;p&gt;
Dann stellen wir einfach die AllowedValues für die beiden Fälle ein.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TippszurDefintionvonFunktionenimWorkItem_102FD/image_22.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/TippszurDefintionvonFunktionenimWorkItem_102FD/image_thumb_10.png" width="547" height="409"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Man sieht also, dass der TFS einiges an Flexibiölität zu beieten hat. Es lohnt sich
damit mal etwas zu experimentieren. Generell möchte ich aber vor Überregulierung warnen
weil dies in der Praxis meist dazu führt, dass die Anwender behindert werden und somit
die Akzeptanz des Tools sinkt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ba4247ee-482f-4683-83f8-f5b4075bc575" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,ba4247ee-482f-4683-83f8-f5b4075bc575.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=93df954f-20e7-4708-9aec-b4e534fefeba</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,93df954f-20e7-4708-9aec-b4e534fefeba.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,93df954f-20e7-4708-9aec-b4e534fefeba.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=93df954f-20e7-4708-9aec-b4e534fefeba</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Tritt beim Konfigurieren eines Labs das in einer Workgroup betrieben wird (keine Domänenintegration
der VMs) folgender Fehler auf, dann fehlt ggf. ein Shadow-Account:  
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF267055FehlerbeimKonfigurierendesLabMan_EEED/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/TF267055FehlerbeimKonfigurierendesLabMan_EEED/image_thumb_1.png" width="550" height="334" />
          </a>
        </p>
        <p>
  
</p>
        <p>
-------------------------------------------------- 
</p>
        <p>
Environment message: Type=Warning; Message=TF267042: One or more machines are not
ready to run tests. For more information, see the individual machine errors.; 
</p>
        <p>
Machine messages: 
</p>
        <p>
Machine name: Windows 7 x64 en 
</p>
        <p>
Machine message: Type=Error; Message=TF267055: The machine is not ready to run tests
because of the following error: Unable to connect to the controller on ---. The agent
can connect to the controller but the controller cannot connect to the agent because
of following reason: The server has rejected the client credentials.<br />
The logon attempt failed.; 
</p>
        <p>
--------------------------------------------------<br /></p>
        <p>
Damit der Testagent mit dem Testcontroller korrekt zusammenarbeitet, müssen beide
mit unterschiedlichen Accounts laufen. Der Testcontroller verwendet dabei typischerweise
einen Domänen-Account, der Testagent arbeitet mit einem lokalen Account. Die jeweiligen
Accounts müssen als Shadow-Accounts (gleicher Name und Kennwort) lokal bzw. in der
Domäne angelegt werden, also für den lokalen Account ein Shadow-Account in der Domäne
und für den Domänen-Account ein lokaler Shadow-Account. 
</p>
        <p>
  
</p>
        <p>
Beispiel: 
</p>
        <p>
 
</p>
        <table border="0" cellspacing="0" cellpadding="2" width="514">
          <tbody>
            <tr>
              <td valign="top" width="133">
 </td>
              <td valign="top" width="190">
                <strong>Account</strong>
              </td>
              <td valign="top" width="189">
                <strong>Shadow-Account</strong>
              </td>
            </tr>
            <tr>
              <td valign="top" width="133">
Testagent</td>
              <td valign="top" width="190">
labmachine\Labuser</td>
              <td valign="top" width="189">
domain\Labuser</td>
            </tr>
            <tr>
              <td valign="top" width="133">
TestController</td>
              <td valign="top" width="190">
domain\TestController</td>
              <td valign="top" width="189">
labmachine\TestController</td>
            </tr>
          </tbody>
        </table>
        <p>
        </p>
        <p>
Die oben beschriebene Meldung erhält man, wenn auf der Labmaschine kein lokaler Shadow-Account
angelegt wurde. Wenn man das nachholt und dann auf “Repaiur testing capabilities”
klickt, dann sollte das Problem behoben sein.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF267055FehlerbeimKonfigurierendesLabMan_EEED/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF267055FehlerbeimKonfigurierendesLabMan_EEED/image_thumb_2.png" width="235" height="136" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=93df954f-20e7-4708-9aec-b4e534fefeba" />
      </body>
      <title>TF267055 &amp;ndash; Fehler beim Konfigurieren des Lab Management Test Agents</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,93df954f-20e7-4708-9aec-b4e534fefeba.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,93df954f-20e7-4708-9aec-b4e534fefeba.aspx</link>
      <pubDate>Sun, 08 Aug 2010 15:06:41 GMT</pubDate>
      <description>&lt;p&gt;
Tritt beim Konfigurieren eines Labs das in einer Workgroup betrieben wird (keine Domänenintegration
der VMs) folgender Fehler auf, dann fehlt ggf. ein Shadow-Account:&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF267055FehlerbeimKonfigurierendesLabMan_EEED/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/TF267055FehlerbeimKonfigurierendesLabMan_EEED/image_thumb_1.png" width="550" height="334"&gt;&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
-------------------------------------------------- 
&lt;p&gt;
Environment message: Type=Warning; Message=TF267042: One or more machines are not
ready to run tests. For more information, see the individual machine errors.; 
&lt;p&gt;
Machine messages: 
&lt;p&gt;
Machine name: Windows 7 x64 en 
&lt;p&gt;
Machine message: Type=Error; Message=TF267055: The machine is not ready to run tests
because of the following error: Unable to connect to the controller on ---. The agent
can connect to the controller but the controller cannot connect to the agent because
of following reason: The server has rejected the client credentials.&lt;br&gt;
The logon attempt failed.; 
&lt;p&gt;
--------------------------------------------------&lt;br&gt;
&lt;p&gt;
Damit der Testagent mit dem Testcontroller korrekt zusammenarbeitet, müssen beide
mit unterschiedlichen Accounts laufen. Der Testcontroller verwendet dabei typischerweise
einen Domänen-Account, der Testagent arbeitet mit einem lokalen Account. Die jeweiligen
Accounts müssen als Shadow-Accounts (gleicher Name und Kennwort) lokal bzw. in der
Domäne angelegt werden, also für den lokalen Account ein Shadow-Account in der Domäne
und für den Domänen-Account ein lokaler Shadow-Account. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Beispiel: 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="514"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="133"&gt;
&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="190"&gt;
&lt;strong&gt;Account&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="189"&gt;
&lt;strong&gt;Shadow-Account&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="133"&gt;
Testagent&lt;/td&gt;
&lt;td valign="top" width="190"&gt;
labmachine\Labuser&lt;/td&gt;
&lt;td valign="top" width="189"&gt;
domain\Labuser&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="133"&gt;
TestController&lt;/td&gt;
&lt;td valign="top" width="190"&gt;
domain\TestController&lt;/td&gt;
&lt;td valign="top" width="189"&gt;
labmachine\TestController&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Die oben beschriebene Meldung erhält man, wenn auf der Labmaschine kein lokaler Shadow-Account
angelegt wurde. Wenn man das nachholt und dann auf “Repaiur testing capabilities”
klickt, dann sollte das Problem behoben sein.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF267055FehlerbeimKonfigurierendesLabMan_EEED/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF267055FehlerbeimKonfigurierendesLabMan_EEED/image_thumb_2.png" width="235" height="136"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=93df954f-20e7-4708-9aec-b4e534fefeba" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,93df954f-20e7-4708-9aec-b4e534fefeba.aspx</comments>
      <category>Lab Management</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4f597d2b-944e-4968-bd2c-559440f932f0</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4f597d2b-944e-4968-bd2c-559440f932f0.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4f597d2b-944e-4968-bd2c-559440f932f0.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4f597d2b-944e-4968-bd2c-559440f932f0</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.notsotrivial.net/blog">Clint Edmonson</a>, Architecture Evangelist
von Microsoft hat auf Channel 9 eine Serie von Webcasts zum Einsatz der neuen UML-Features
in VS 2010 veröffentlicht.
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl03_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-1-Brainstorming-a-Project/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 1: Brainstorming a Project</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl04_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-2-Organizing-Features-Into-Use-Cases/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 2: Organizing Features Into Use Cases</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl05_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-3-Modeling-the-Business-Domain/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 3: Modeling the Business Domain</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl01_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-4-Capture-Business-Workflows/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 4: Capturing Business Workflows</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl06_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-5-Architecting-an-Application/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 5: Architecting an Application</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl07_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-6-Designing-a-Projects-Physical-Structure/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 6: Designing a Project's Physical Structure</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl08_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-7-Sketching-Interactions-with-Sequence-Diagrams/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 7: Sketching Interactions with Sequence Diagrams</font>
            </u>
          </a>
        </p>
        <p>
          <a id="ctl00_MainPlaceHolder_EntryList_ctl09_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-8-Revealing-Responsibilities-with-Class-Diagrams/">
            <u>
              <font color="#0066cc">UML
with VS 2010 Part 8: Revealing Responsibilities with Class Diagrams</font>
            </u>
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f597d2b-944e-4968-bd2c-559440f932f0" />
      </body>
      <title>UML mit VS 2010 Webast Serie</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4f597d2b-944e-4968-bd2c-559440f932f0.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4f597d2b-944e-4968-bd2c-559440f932f0.aspx</link>
      <pubDate>Sat, 31 Jul 2010 06:16:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.notsotrivial.net/blog"&gt;Clint Edmonson&lt;/a&gt;, Architecture Evangelist
von Microsoft hat auf Channel 9 eine Serie von Webcasts zum Einsatz der neuen UML-Features
in VS 2010 veröffentlicht.
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl03_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-1-Brainstorming-a-Project/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 1: Brainstorming a Project&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl04_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-2-Organizing-Features-Into-Use-Cases/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 2: Organizing Features Into Use Cases&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl05_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-3-Modeling-the-Business-Domain/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 3: Modeling the Business Domain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl01_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-4-Capture-Business-Workflows/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 4: Capturing Business Workflows&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl06_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-5-Architecting-an-Application/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 5: Architecting an Application&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl07_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-6-Designing-a-Projects-Physical-Structure/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 6: Designing a Project's Physical Structure&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl08_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-7-Sketching-Interactions-with-Sequence-Diagrams/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 7: Sketching Interactions with Sequence Diagrams&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id="ctl00_MainPlaceHolder_EntryList_ctl09_EntryTemplate_TitleLink" href="http://channel9.msdn.com/posts/clinted/UML-with-VS-2010-Part-8-Revealing-Responsibilities-with-Class-Diagrams/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;UML
with VS 2010 Part 8: Revealing Responsibilities with Class Diagrams&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f597d2b-944e-4968-bd2c-559440f932f0" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4f597d2b-944e-4968-bd2c-559440f932f0.aspx</comments>
      <category>Architektur</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=acc9dc97-0802-4740-833f-f6993f9dd0e7</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,acc9dc97-0802-4740-833f-f6993f9dd0e7.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,acc9dc97-0802-4740-833f-f6993f9dd0e7.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=acc9dc97-0802-4740-833f-f6993f9dd0e7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Processtemplate für Scrum gab’s von Microsoft bereits als Beta, nun wurde die
endgültige Version auf der Visual Studio Gallery veröffentlicht.
</p>
        <p>
Folgende Elemente enthält das Template: 
</p>
        <ul>
          <li>
Work Item Types 
<ul><li>
Sprint 
</li><li>
Product Backlog Item 
</li><li>
Bug 
</li><li>
Task 
</li><li>
Impediment 
</li><li>
Test Case 
</li></ul></li>
          <li>
Reports 
<ul><li>
Release Burndown 
</li><li>
Velocity 
</li><li>
Sprint Burndown 
</li><li>
Build Success Over Time 
</li><li>
Build Summary 
</li><li>
Test Case Readiness 
</li><li>
Test Plan Progress</li></ul></li>
          <li>
SharePoint Project Portal 
</li>
        </ul>
        <p>
Hier noch Screenshots zum Sprint Burndown und Release Burndown Report. 
</p>
        <p>
          <img alt="" src="http://i2.visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e/image/file/29441/0/sprint%20burndown.jpg" width="260" height="215" />
          <img alt="" src="http://i2.visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e/image/file/29442/0/release%20burndown.jpg" width="238" height="218" />
        </p>
        <p>
Download 
</p>
        <p>
          <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e">http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e</a>
        </p>
        <p>
Weitere Informationen zum Template<br /><a href="http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx">http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=acc9dc97-0802-4740-833f-f6993f9dd0e7" />
      </body>
      <title>Microsoft Visual Studio Scrum 1.0 released</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,acc9dc97-0802-4740-833f-f6993f9dd0e7.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,acc9dc97-0802-4740-833f-f6993f9dd0e7.aspx</link>
      <pubDate>Tue, 20 Jul 2010 18:17:11 GMT</pubDate>
      <description>&lt;p&gt;
Das Processtemplate für Scrum gab’s von Microsoft bereits als Beta, nun wurde die
endgültige Version auf der Visual Studio Gallery veröffentlicht.
&lt;/p&gt;
&lt;p&gt;
Folgende Elemente enthält das Template: 
&lt;ul&gt;
&lt;li&gt;
Work Item Types 
&lt;ul&gt;
&lt;li&gt;
Sprint 
&lt;li&gt;
Product Backlog Item 
&lt;li&gt;
Bug 
&lt;li&gt;
Task 
&lt;li&gt;
Impediment 
&lt;li&gt;
Test Case 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Reports 
&lt;ul&gt;
&lt;li&gt;
Release Burndown 
&lt;li&gt;
Velocity 
&lt;li&gt;
Sprint Burndown 
&lt;li&gt;
Build Success Over Time 
&lt;li&gt;
Build Summary 
&lt;li&gt;
Test Case Readiness 
&lt;li&gt;
Test Plan Progress&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
SharePoint Project Portal 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Hier noch Screenshots zum Sprint Burndown und Release Burndown Report. 
&lt;p&gt;
&lt;img alt="" src="http://i2.visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e/image/file/29441/0/sprint%20burndown.jpg" width="260" height="215"&gt;&lt;img alt="" src="http://i2.visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e/image/file/29442/0/release%20burndown.jpg" width="238" height="218"&gt; 
&lt;p&gt;
Download 
&lt;p&gt;
&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen zum Template&lt;br&gt;
&lt;a href="http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx"&gt;http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=acc9dc97-0802-4740-833f-f6993f9dd0e7" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,acc9dc97-0802-4740-833f-f6993f9dd0e7.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7d412496-7d6d-4b58-b41d-04544510a277</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7d412496-7d6d-4b58-b41d-04544510a277.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7d412496-7d6d-4b58-b41d-04544510a277.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7d412496-7d6d-4b58-b41d-04544510a277</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Endlich ist es soweit und Microsoft stellt ein VM Image für Visual Studio 2010 und
TFS 2010 in der RTM Version bereit. Auf diesem Image sind nicht nur die Produkte sowie
einige weitere benötigten Tools installiert, sondern es befinden sich darauf auch
Demo-Daten (Tailspin Toys) und 9 Hands-On-Labs. Die VM ist für Hyper-V, Virtual PC
2007 SP1 verfügbar. Die Trial-Versionen auf der VM laufen bis zum 15. Dezember 2010.
</p>
        <p>
Weitere Infos und Hinweise zum Download finden sich hier: <a href="http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx">http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d412496-7d6d-4b58-b41d-04544510a277" />
      </body>
      <title>Visual Studio 2010 und Team Foundation Server 2010 RTM Virtual Machine Image verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7d412496-7d6d-4b58-b41d-04544510a277.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7d412496-7d6d-4b58-b41d-04544510a277.aspx</link>
      <pubDate>Tue, 29 Jun 2010 13:39:17 GMT</pubDate>
      <description>&lt;p&gt;
Endlich ist es soweit und Microsoft stellt ein VM Image für Visual Studio 2010 und
TFS 2010 in der RTM Version bereit. Auf diesem Image sind nicht nur die Produkte sowie
einige weitere benötigten Tools installiert, sondern es befinden sich darauf auch
Demo-Daten (Tailspin Toys) und 9 Hands-On-Labs. Die VM ist für Hyper-V, Virtual PC
2007 SP1 verfügbar. Die Trial-Versionen auf der VM laufen bis zum 15. Dezember 2010.
&lt;/p&gt;
&lt;p&gt;
Weitere Infos und Hinweise zum Download finden sich hier: &lt;a href="http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx"&gt;http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d412496-7d6d-4b58-b41d-04544510a277" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7d412496-7d6d-4b58-b41d-04544510a277.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7341278b-c870-4606-95df-bcad1760ec06</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7341278b-c870-4606-95df-bcad1760ec06.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7341278b-c870-4606-95df-bcad1760ec06.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7341278b-c870-4606-95df-bcad1760ec06</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im Team Foundation Server lassen sich die Work Items sehr einfach anpassen, neue Work
Item Types lassen sich erzeugen und damit ein individuelles Process Template erzeugen.
Das ganze geht sehr einfach und intuitive wenn mann den Process Template Editor aus
den Team Foundation Server Power Tools verwendet (<a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da">http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da</a>) 
</p>
        <p>
Wer mal auf den Geschmack gekommen ist, das Process Template im TFS anzupassen, wird
durch ausprobieren und rumspielen schnell vor der Frage stehen, wie kann ich nun in
einem bestehenden Projekt einen Work Item Type wieder löschen den ich nicht mehr brauche?
</p>
        <p>
Hier hilft das Kommandozeilentool witadmin weiter das sich dirckt über die Visual
Studio Eingabeaufforderung ausführen lässt.
</p>
        <p>
          <font face="Consolas">witadmin destroywitd /collection:http://&lt;Servername&gt;:8080/tfs/&lt;Team
Project Collection&gt; /p:&lt;Team Projekt Name&gt; /n:&lt;Name des Work Item Types&gt;</font>
        </p>
        <p>
löscht den angegebenen Work Item Type. 
</p>
        <p>
          <strong>
            <font size="3">Vorsicht</font>
          </strong>, 
<br />
mit diesem Kommando werden aber auch alle Work Items gelöscht, die diesen Typ verwenden,
diese können ja vom System nach löschen der WITD nicht mehr verwaltet werden.
</p>
        <p>
Wenn man also den WIT bestehender Work Items verändern möchte, dann sollte man diesen
umbenennen und anschließend so anpassen dass er den neuen Anforderungen entspricht.
Zum Umbenennen eines WIT hilft ebenfalls witadmin
</p>
        <p>
          <font face="Consolas">witadmin renamewitd /collection:http://&lt;Servername&gt;:8080/tfs/&lt;Team
Project Collection&gt; /p:&lt;Team Projekt Name&gt; /n:&lt;Alter Name des Work Item
Types&gt; /new:&lt;Neuer Name des Work Item Types&gt;</font>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7341278b-c870-4606-95df-bcad1760ec06" />
      </body>
      <title>Work Item Type aus bestehendem Projekt l&amp;ouml;schen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7341278b-c870-4606-95df-bcad1760ec06.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7341278b-c870-4606-95df-bcad1760ec06.aspx</link>
      <pubDate>Sat, 26 Jun 2010 11:11:34 GMT</pubDate>
      <description>&lt;p&gt;
Im Team Foundation Server lassen sich die Work Items sehr einfach anpassen, neue Work
Item Types lassen sich erzeugen und damit ein individuelles Process Template erzeugen.
Das ganze geht sehr einfach und intuitive wenn mann den Process Template Editor aus
den Team Foundation Server Power Tools verwendet (&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da&lt;/a&gt;) 
&lt;/p&gt;
&lt;p&gt;
Wer mal auf den Geschmack gekommen ist, das Process Template im TFS anzupassen, wird
durch ausprobieren und rumspielen schnell vor der Frage stehen, wie kann ich nun in
einem bestehenden Projekt einen Work Item Type wieder löschen den ich nicht mehr brauche?
&lt;/p&gt;
&lt;p&gt;
Hier hilft das Kommandozeilentool witadmin weiter das sich dirckt über die Visual
Studio Eingabeaufforderung ausführen lässt.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Consolas"&gt;witadmin destroywitd /collection:http://&amp;lt;Servername&amp;gt;:8080/tfs/&amp;lt;Team
Project Collection&amp;gt; /p:&amp;lt;Team Projekt Name&amp;gt; /n:&amp;lt;Name des Work Item Types&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
löscht den angegebenen Work Item Type. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font size="3"&gt;Vorsicht&lt;/font&gt;&lt;/strong&gt;, 
&lt;br&gt;
mit diesem Kommando werden aber auch alle Work Items gelöscht, die diesen Typ verwenden,
diese können ja vom System nach löschen der WITD nicht mehr verwaltet werden.
&lt;/p&gt;
&lt;p&gt;
Wenn man also den WIT bestehender Work Items verändern möchte, dann sollte man diesen
umbenennen und anschließend so anpassen dass er den neuen Anforderungen entspricht.
Zum Umbenennen eines WIT hilft ebenfalls witadmin
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Consolas"&gt;witadmin renamewitd /collection:http://&amp;lt;Servername&amp;gt;:8080/tfs/&amp;lt;Team
Project Collection&amp;gt; /p:&amp;lt;Team Projekt Name&amp;gt; /n:&amp;lt;Alter Name des Work Item
Types&amp;gt; /new:&amp;lt;Neuer Name des Work Item Types&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7341278b-c870-4606-95df-bcad1760ec06" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7341278b-c870-4606-95df-bcad1760ec06.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=94ddaf9f-4286-4f82-8277-59a55b22682a</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,94ddaf9f-4286-4f82-8277-59a55b22682a.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,94ddaf9f-4286-4f82-8277-59a55b22682a.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=94ddaf9f-4286-4f82-8277-59a55b22682a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="Aaron-Headshot-Sml.jpg" src="http://www.vsalmug.com/getattachment/cbfb282c-d64c-40bc-8261-ca1378aff2af/Aaron-Headshot-Sml.jpg.aspx" />
        </p>
        <p>
In diesem Monat möchte ich die Leser meines Blogs auch auf das US-Meeting der Visual
Studio User Group aufmerksam machen, da dieses Treffen dieses mal zu einer auch für
Europa günstiger Zeit stattfindet (Donnerstag 17. Juni 18:00 Uhr).
</p>
        <p>
Das Thema ist Scrum, TFS und Microsoft. Aaron Bjork wird das neue Scrum Template von
Microsoft vorstellen das er maßgeblich verantwortlich ist. Also Informationen aus
erster Hand die man nicht verpassen sollte. Für Mitglieder gibt es ein Recording des
Meetings im Nachgang auch zum Download.
</p>
        <p>
Das neue “Team Foundation Server Scrum v1.0 Beta” Template kann man sich hier herunterladen: <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e">http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e</a><br />
Nähere Informationen zum Meeting gibt es hier: <a href="http://www.vsalmug.com/Meetings/Announcements/June-2010/June-17,-2010--Scrum,-TFS-and-Microsoft.aspx">http://www.vsalmug.com/Meetings/Announcements/June-2010/June-17,-2010--Scrum,-TFS-and-Microsoft.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=94ddaf9f-4286-4f82-8277-59a55b22682a" />
      </body>
      <title>Visual Studio ALM User Group: 2010: Scrum, TFS and Microsoft</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,94ddaf9f-4286-4f82-8277-59a55b22682a.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,94ddaf9f-4286-4f82-8277-59a55b22682a.aspx</link>
      <pubDate>Mon, 14 Jun 2010 22:10:26 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img alt="Aaron-Headshot-Sml.jpg" src="http://www.vsalmug.com/getattachment/cbfb282c-d64c-40bc-8261-ca1378aff2af/Aaron-Headshot-Sml.jpg.aspx"&gt;
&lt;/p&gt;
&lt;p&gt;
In diesem Monat möchte ich die Leser meines Blogs auch auf das US-Meeting der Visual
Studio User Group aufmerksam machen, da dieses Treffen dieses mal zu einer auch für
Europa günstiger Zeit stattfindet (Donnerstag 17. Juni 18:00 Uhr).
&lt;/p&gt;
&lt;p&gt;
Das Thema ist Scrum, TFS und Microsoft. Aaron Bjork wird das neue Scrum Template von
Microsoft vorstellen das er maßgeblich verantwortlich ist. Also Informationen aus
erster Hand die man nicht verpassen sollte. Für Mitglieder gibt es ein Recording des
Meetings im Nachgang auch zum Download.
&lt;/p&gt;
&lt;p&gt;
Das neue “Team Foundation Server Scrum v1.0 Beta” Template kann man sich hier herunterladen: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e&lt;/a&gt;
&lt;br&gt;
Nähere Informationen zum Meeting gibt es hier: &lt;a href="http://www.vsalmug.com/Meetings/Announcements/June-2010/June-17,-2010--Scrum,-TFS-and-Microsoft.aspx"&gt;http://www.vsalmug.com/Meetings/Announcements/June-2010/June-17,-2010--Scrum,-TFS-and-Microsoft.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=94ddaf9f-4286-4f82-8277-59a55b22682a" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,94ddaf9f-4286-4f82-8277-59a55b22682a.aspx</comments>
      <category>Team System Server</category>
      <category>Usergroup</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=5e8347d6-cf49-4c0b-8e28-26749183e02f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,5e8347d6-cf49-4c0b-8e28-26749183e02f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,5e8347d6-cf49-4c0b-8e28-26749183e02f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=5e8347d6-cf49-4c0b-8e28-26749183e02f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Kurzbeschreibung:</strong> Dieser Artikel beschreibt, wie Parameter an Reports
über die URL übergeben werden können um so über Links oder im SharePoint Dashboard
Reports bereits mit voreingestellten Parametern aufzurufen und so z.B. den Burndown
eines spezifischen Sprints zu erhalten ohne die Parameter jedesmal von Hand einstellen
zu müssen.
</p>
        <p>
Im Team Foundation Server werden sie SQl Server Reporting Services (SSRS) genutzt
um Reports zu generieren. Diese Reports geben schnell Auskunft über den aktuellen
Status eines Projektes. Ein gutes Beispiel für einen solchen Report ist ein Burndown-Chart:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/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/ReportsmitParameteraufrufen_9AFC/image_thumb.png" width="635" height="469" />
          </a>
        </p>
        <p>
Solche Reports können sehr einfach aus dem SharePoint Portal oder aus dem TeamExplorer
aufgerufen werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/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/ReportsmitParameteraufrufen_9AFC/image_thumb_1.png" width="252" height="338" />
          </a>
        </p>
        <p>
Nachteil an dieser Methode ist, dass bei jedem Aufruf die entsprechenden Parameter
eingestellt werden müssen oder das Report Template immer an den aktuellen Sprint angepasst
werden muss. Glücklicherweise unterstützen die SSRS die Übergabe von Parametern in
der URL, so dass man sich sehr einfach Links generieren kann die den Report bereits
vorkonfigurieren. Hierzu ruft man folgende URL auf:
</p>
        <p>
          <a href="http://&lt;Reportserver URL oder IP&gt;/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2f&lt;Project Collection Name&gt;%2f&lt;Tem Project Name&gt;%2f&lt;Ordner&gt;%2f&lt;Report Name&gt;&amp;rs%3aCommand=Render">http://&lt;Reportserver
URL oder IP&gt;/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2f&lt;Project Collection
Name&gt;%2f&lt;Tem Project Name&gt;%2f&lt;Ordner&gt;%2f&lt;Report Name&gt;&amp;rs%3aCommand=Render</a>
        </p>
        <p>
In meinem Fall sieht das so aus:
</p>
        <p>
          <a href="http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;rs%3aCommand=Render">http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;rs%3aCommand=Render</a>
        </p>
        <p>
Damit können wir zunächst mal den Report direkt aufrufen. Nun können wir noch ein
paar Parameter übergeben. Dazu müssen wir wissen wie die Parameter heißen. Dies kann
man am einfachsten rausfinden indem man den Report über das SSRS Frontend aufruft
und zwar über
</p>
        <p>
          <a href="http://&lt;Reportserver URL oder IP&gt;/Reports">http://&lt;Reportserver
URL oder IP&gt;/Reports</a>
        </p>
        <p>
und dann zu dem entsprechenden Report navigiert.  Die Seite die man nun erhält
sieht ungefähr so aus:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_2.png" width="770" height="317" />
          </a>
        </p>
        <p>
Unter Eigenschaften / Parameter werden nun alle Parameter mit ihrem Namen angezeigt:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_3.png" width="787" height="510" />
          </a>
        </p>
        <p>
Wir wollen nun z.B. das Start- und Enddatum in unserer URL setzen. Dazu ergänzen wir
die URL von oben einfach:
</p>
        <p>
          <a href="http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;rs%3aCommand=Render&amp;StartDateParam=28.05.2010&amp;EndDateParam=10.06.2010">http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;rs%3aCommand=Render<font color="#003399">&amp;StartDateParam=28.05.2010&amp;EndDateParam=10.06.2010
</font></a>
        </p>
        <p>
Damit wird bereits das Start- und Endedatum korrekt gesetzt. Nun wollen wir noch die
Iteration setzen. Hier ist die Geschichte nicht ganz so trivial, da der TFS recht
kryptische Angaben zum Iteration-Pfad erwartet. Das liegt daran, dass das Warehouse
Daten aus mehreren Project Collections enthält und vor allem bei einem Rebuild die
IDs unverändert bleiben sollen. Diesen Parameter kann man auf verschiedene Arten ermitteln,
der mit dem geringsten Vorbereitungsaufwand soll hier kurz beschrieben werden.
</p>
        <p>
Dazu ruft man zunächst das SQL Server Management Studio auf und verbindet sich zu
den Analysis Services. Hier erstellt man nun eine neue MDX-Query.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_4.png" width="462" height="199" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Dann wählt man im Feld “Cube” den Eintrag “Work Item” aus und geht im Baum unter Work
Item \ Work Item.Iteration Hierarchy \ Iteration&lt;n&gt; wobei n die Hierarchieebene
ist auf der sich die gesuchte Iteration befindet.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_5.png" width="160" height="399" />
          </a>
        </p>
        <p>
Die gewünschte Iteration zieht man nun per Drag &amp; Drop auf die rechte Seite des
Fensters und bekommt dort die ID der Iteration. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_6.png" width="485" height="106" />
          </a>
        </p>
        <p>
Diese muss jetzt noch URL-Encodiert werden. Dazu kann man beispielsweise den URLEncoder
(<a href="http://code.msdn.microsoft.com/URLEncoder/Release/ProjectReleases.aspx?ReleaseId=3629">http://code.msdn.microsoft.com/URLEncoder/Release/ProjectReleases.aspx?ReleaseId=3629</a>)
verwenden.
</p>
        <p>
Damit sieht die IterationID nun so aus: 
<br />
%5BWork%20Item%5D%2E%5BIteration%20Hierarchy%5D%2E%5BIteration1%5D%2E%26%5B%2D6991474436272448184%5D%26%5B%2D8595730757606272101%5D 
</p>
        <p>
Diese können wir nun als Parameter in unsere URL einfügen:<br /><a href="http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;rs%3aCommand=Render&amp;StartDateParam=28.05.2010&amp;EndDateParam=10.06.2010&amp;IterationParam=%5BWork%20Item%5D%2E%5BIteration%20Hierarchy%5D%2E%5BIteration1%5D%2E%26%5B%2D6991474436272448184%5D%26%5B%2D8595730757606272101%5D">http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;rs%3aCommand=Render&amp;StartDateParam=28.05.2010&amp;EndDateParam=10.06.2010&amp;IterationParam=%5BWork%20Item%5D%2E%5BIteration%20Hierarchy%5D%2E%5BIteration1%5D%2E%26%5B%2D6991474436272448184%5D%26%5B%2D8595730757606272101%5D</a></p>
        <p>
          <font color="#000000"> Damit bekommen wir alle Parameter wie gewünscht befüllt.</font>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_16.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_7.png" width="695" height="131" />
          </a>
        </p>
        <p>
Über zusätzliche Parameter können wir nun das Parameterfeld und den Toolbar auch noch
ausblenden. Dazu fügen wir noch die Kommandos &amp;rc:Parameters=false&amp;rc:toolbar=false
an unsere URL an. És gibt noch eine ganze Reihe weiterer Commands, über die z.B. auch
das Ausgabeformat gesteuert wreden kann. Eine genauerer Beschreibung der Commands
findet sich hier: <a href="http://technet.microsoft.com/en-us/library/ms152835.aspx">http://technet.microsoft.com/en-us/library/ms152835.aspx</a>.
</p>
        <p>
Damit können wir nun den Report schon über einen einfachen Link aufrufen. Um den Report
in unser SharePoint Dashboard einzubauen sind jetzt nur noch wenige Schritte erforderlich.
Dazu fügen wir in unser Dashboard zunächst ein Page Viewer Web Part ein.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_18.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/ReportsmitParameteraufrufen_9AFC/image_thumb_8.png" width="659" height="523" />
          </a>
        </p>
        <p>
In der Tool Pane können wir nun die URL für den Report angeben.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_20.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/ReportsmitParameteraufrufen_9AFC/image_thumb_9.png" width="240" height="291" />
          </a>
        </p>
        <p>
Damit lassen sich nun schöne Dashboards im SharePoint aufbauen die alle Reports bereits
voreingestellt enthalten. Für einen neuen Sprint nutzt man dann die Funktion “Copy
Dashboard” und passt die Parameter in den URLs entsprechend an.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_22.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/ReportsmitParameteraufrufen_9AFC/image_thumb_10.png" width="843" height="504" />
          </a>
        </p>
        <p>
          <strong>Weitere Hinweise:</strong>
        </p>
        <p>
Manche Parameter lassen auch eine Mehrfachselektion zu. Diese können ebenfalls in
der URL übergeben werden indem einfach der selbe Parameter mit unterschiedlichen Werten
angegeben wird.
</p>
        <p>
          <strong>Weitere Links:</strong>
        </p>
        <p>
URL Parameter für SSRS: <a href="http://technet.microsoft.com/en-us/library/ms153586.aspx">http://technet.microsoft.com/en-us/library/ms153586.aspx</a><br />
Viewer Commands: <a href="http://technet.microsoft.com/en-us/library/ms152835.aspx">http://technet.microsoft.com/en-us/library/ms152835.aspx</a><br />
Parameter Prefixes: <a href="http://technet.microsoft.com/en-us/library/ms153579.aspx">http://technet.microsoft.com/en-us/library/ms153579.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5e8347d6-cf49-4c0b-8e28-26749183e02f" />
      </body>
      <title>Reports mit Parameter aufrufen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,5e8347d6-cf49-4c0b-8e28-26749183e02f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,5e8347d6-cf49-4c0b-8e28-26749183e02f.aspx</link>
      <pubDate>Wed, 09 Jun 2010 10:08:42 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Kurzbeschreibung:&lt;/strong&gt; Dieser Artikel beschreibt, wie Parameter an Reports
über die URL übergeben werden können um so über Links oder im SharePoint Dashboard
Reports bereits mit voreingestellten Parametern aufzurufen und so z.B. den Burndown
eines spezifischen Sprints zu erhalten ohne die Parameter jedesmal von Hand einstellen
zu müssen.
&lt;/p&gt;
&lt;p&gt;
Im Team Foundation Server werden sie SQl Server Reporting Services (SSRS) genutzt
um Reports zu generieren. Diese Reports geben schnell Auskunft über den aktuellen
Status eines Projektes. Ein gutes Beispiel für einen solchen Report ist ein Burndown-Chart:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/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/ReportsmitParameteraufrufen_9AFC/image_thumb.png" width="635" height="469"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Solche Reports können sehr einfach aus dem SharePoint Portal oder aus dem TeamExplorer
aufgerufen werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/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/ReportsmitParameteraufrufen_9AFC/image_thumb_1.png" width="252" height="338"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Nachteil an dieser Methode ist, dass bei jedem Aufruf die entsprechenden Parameter
eingestellt werden müssen oder das Report Template immer an den aktuellen Sprint angepasst
werden muss. Glücklicherweise unterstützen die SSRS die Übergabe von Parametern in
der URL, so dass man sich sehr einfach Links generieren kann die den Report bereits
vorkonfigurieren. Hierzu ruft man folgende URL auf:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://&amp;lt;Reportserver URL oder IP&amp;gt;/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2f&amp;lt;Project Collection Name&amp;gt;%2f&amp;lt;Tem Project Name&amp;gt;%2f&amp;lt;Ordner&amp;gt;%2f&amp;lt;Report Name&amp;gt;&amp;amp;rs%3aCommand=Render"&gt;http://&amp;lt;Reportserver
URL oder IP&amp;gt;/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2f&amp;lt;Project Collection
Name&amp;gt;%2f&amp;lt;Tem Project Name&amp;gt;%2f&amp;lt;Ordner&amp;gt;%2f&amp;lt;Report Name&amp;gt;&amp;amp;rs%3aCommand=Render&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In meinem Fall sieht das so aus:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;amp;rs%3aCommand=Render"&gt;http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;amp;rs%3aCommand=Render&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Damit können wir zunächst mal den Report direkt aufrufen. Nun können wir noch ein
paar Parameter übergeben. Dazu müssen wir wissen wie die Parameter heißen. Dies kann
man am einfachsten rausfinden indem man den Report über das SSRS Frontend aufruft
und zwar über
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://&amp;lt;Reportserver URL oder IP&amp;gt;/Reports"&gt;http://&amp;lt;Reportserver
URL oder IP&amp;gt;/Reports&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
und dann zu dem entsprechenden Report navigiert.&amp;nbsp; Die Seite die man nun erhält
sieht ungefähr so aus:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_2.png" width="770" height="317"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Unter Eigenschaften / Parameter werden nun alle Parameter mit ihrem Namen angezeigt:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_3.png" width="787" height="510"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Wir wollen nun z.B. das Start- und Enddatum in unserer URL setzen. Dazu ergänzen wir
die URL von oben einfach:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;amp;rs%3aCommand=Render&amp;amp;StartDateParam=28.05.2010&amp;amp;EndDateParam=10.06.2010"&gt;http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;amp;rs%3aCommand=Render&lt;font color="#003399"&gt;&amp;amp;StartDateParam=28.05.2010&amp;amp;EndDateParam=10.06.2010
&lt;/a&gt;&gt;
&lt;/p&gt;
&lt;p&gt;
Damit wird bereits das Start- und Endedatum korrekt gesetzt. Nun wollen wir noch die
Iteration setzen. Hier ist die Geschichte nicht ganz so trivial, da der TFS recht
kryptische Angaben zum Iteration-Pfad erwartet. Das liegt daran, dass das Warehouse
Daten aus mehreren Project Collections enthält und vor allem bei einem Rebuild die
IDs unverändert bleiben sollen. Diesen Parameter kann man auf verschiedene Arten ermitteln,
der mit dem geringsten Vorbereitungsaufwand soll hier kurz beschrieben werden.
&lt;/p&gt;
&lt;p&gt;
Dazu ruft man zunächst das SQL Server Management Studio auf und verbindet sich zu
den Analysis Services. Hier erstellt man nun eine neue MDX-Query.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_4.png" width="462" height="199"&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;
Dann wählt man im Feld “Cube” den Eintrag “Work Item” aus und geht im Baum unter Work
Item \ Work Item.Iteration Hierarchy \ Iteration&amp;lt;n&amp;gt; wobei n die Hierarchieebene
ist auf der sich die gesuchte Iteration befindet.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_5.png" width="160" height="399"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Die gewünschte Iteration zieht man nun per Drag &amp;amp; Drop auf die rechte Seite des
Fensters und bekommt dort die ID der Iteration. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_6.png" width="485" height="106"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Diese muss jetzt noch URL-Encodiert werden. Dazu kann man beispielsweise den URLEncoder
(&lt;a href="http://code.msdn.microsoft.com/URLEncoder/Release/ProjectReleases.aspx?ReleaseId=3629"&gt;http://code.msdn.microsoft.com/URLEncoder/Release/ProjectReleases.aspx?ReleaseId=3629&lt;/a&gt;)
verwenden.
&lt;/p&gt;
&lt;p&gt;
Damit sieht die IterationID nun so aus: 
&lt;br&gt;
%5BWork%20Item%5D%2E%5BIteration%20Hierarchy%5D%2E%5BIteration1%5D%2E%26%5B%2D6991474436272448184%5D%26%5B%2D8595730757606272101%5D 
&lt;/p&gt;
&lt;p&gt;
Diese können wir nun als Parameter in unsere URL einfügen:&lt;br&gt;
&lt;a href="http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;amp;rs%3aCommand=Render&amp;amp;StartDateParam=28.05.2010&amp;amp;EndDateParam=10.06.2010&amp;amp;IterationParam=%5BWork%20Item%5D%2E%5BIteration%20Hierarchy%5D%2E%5BIteration1%5D%2E%26%5B%2D6991474436272448184%5D%26%5B%2D8595730757606272101%5D"&gt;http://myReportServer/ReportServer/Pages/ReportViewer.aspx?%2fTfsReports%2fartisoProjects%2fReportingDemo%2fProject+Management%2fBurndown+and+Burn+Rate&amp;amp;rs%3aCommand=Render&amp;amp;StartDateParam=28.05.2010&amp;amp;EndDateParam=10.06.2010&amp;amp;IterationParam=%5BWork%20Item%5D%2E%5BIteration%20Hierarchy%5D%2E%5BIteration1%5D%2E%26%5B%2D6991474436272448184%5D%26%5B%2D8595730757606272101%5D&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#000000"&gt; Damit bekommen wir alle Parameter wie gewünscht befüllt.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_thumb_7.png" width="695" height="131"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Über zusätzliche Parameter können wir nun das Parameterfeld und den Toolbar auch noch
ausblenden. Dazu fügen wir noch die Kommandos &amp;amp;rc:Parameters=false&amp;amp;rc:toolbar=false
an unsere URL an. És gibt noch eine ganze Reihe weiterer Commands, über die z.B. auch
das Ausgabeformat gesteuert wreden kann. Eine genauerer Beschreibung der Commands
findet sich hier: &lt;a href="http://technet.microsoft.com/en-us/library/ms152835.aspx"&gt;http://technet.microsoft.com/en-us/library/ms152835.aspx&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Damit können wir nun den Report schon über einen einfachen Link aufrufen. Um den Report
in unser SharePoint Dashboard einzubauen sind jetzt nur noch wenige Schritte erforderlich.
Dazu fügen wir in unser Dashboard zunächst ein Page Viewer Web Part ein.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_18.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/ReportsmitParameteraufrufen_9AFC/image_thumb_8.png" width="659" height="523"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
In der Tool Pane können wir nun die URL für den Report angeben.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_20.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/ReportsmitParameteraufrufen_9AFC/image_thumb_9.png" width="240" height="291"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Damit lassen sich nun schöne Dashboards im SharePoint aufbauen die alle Reports bereits
voreingestellt enthalten. Für einen neuen Sprint nutzt man dann die Funktion “Copy
Dashboard” und passt die Parameter in den URLs entsprechend an.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportsmitParameteraufrufen_9AFC/image_22.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/ReportsmitParameteraufrufen_9AFC/image_thumb_10.png" width="843" height="504"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Weitere Hinweise:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Manche Parameter lassen auch eine Mehrfachselektion zu. Diese können ebenfalls in
der URL übergeben werden indem einfach der selbe Parameter mit unterschiedlichen Werten
angegeben wird.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Weitere Links:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
URL Parameter für SSRS: &lt;a href="http://technet.microsoft.com/en-us/library/ms153586.aspx"&gt;http://technet.microsoft.com/en-us/library/ms153586.aspx&lt;/a&gt;
&lt;br&gt;
Viewer Commands: &lt;a href="http://technet.microsoft.com/en-us/library/ms152835.aspx"&gt;http://technet.microsoft.com/en-us/library/ms152835.aspx&lt;/a&gt;
&lt;br&gt;
Parameter Prefixes: &lt;a href="http://technet.microsoft.com/en-us/library/ms153579.aspx"&gt;http://technet.microsoft.com/en-us/library/ms153579.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5e8347d6-cf49-4c0b-8e28-26749183e02f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,5e8347d6-cf49-4c0b-8e28-26749183e02f.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=d19e121e-4845-47ee-b5c8-4917863fca40</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,d19e121e-4845-47ee-b5c8-4917863fca40.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,d19e121e-4845-47ee-b5c8-4917863fca40.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=d19e121e-4845-47ee-b5c8-4917863fca40</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bei der weltweiten Usergroup Team System User Group Virtual Edition hat sich in den
letzten Tagen einiges geändert, z.B. der Name. Wie das Produkt das im Zentrum unserer
Aktivitäten steht, wurde die Gruppe in Visual Stuido ALM User Group umbenannt. Gleichzeitig
haben wir eine neue Website online geschaltet. Sie finden uns jetzt unter <a href="http://www.vsalmug.com/default.aspx">http://www.vsalmug.com/default.aspx</a></p>
        <p>
In diesem Zuge werden wir zukünftig die Benachrichtigungen für unsere Meetings nicht
mehr per E-Mail zustellen, sondern sie können sich Neuigkeiten unseren Blog mit den
Ankündigungen per RSS abrufen (<a href="http://www.vsalmug.com/CMSPages/BlogRss.aspx?aliaspath=/Meetings/Announcements">http://www.vsalmug.com/CMSPages/BlogRss.aspx?aliaspath=/Meetings/Announcements</a>). 
</p>
        <p>
Zusätzlich ahben wir auf LinkedIn eine Gruppe eingerichtet über die sich die Mitglieder
besser untereinander vernetzen können: <a href="http://www.linkedin.com/groups?home=&amp;gid=2860483&amp;trk=anet_ug_hm">http://www.linkedin.com/groups?home=&amp;gid=2860483&amp;trk=anet_ug_hm</a></p>
        <p>
Abschließend möchte ich auf unseren nächsten Vortrag noch hinweisen. Am Donnerstag,
06.05.2010 ab 19:00 wird Martin Woodward vorstellen wie die Integration mit nicht
Microsoft-Plattformen über den Team Explorer Everywhere (vormals Teamprise) gelingt.
</p>
        <p>
          <img alt="Martin Woodward" src="http://1.2.3.10/bmi/www.woodwardweb.com/images/Martin_Woodward.jpg" width="200" height="280" />
        </p>
        <p>
          <strong>Team Explorer Everywhere 2010</strong>
        </p>
        <p>
Meeting Date: Thursday, May 6th, 2010<br />
Time: 10:00AM PT (UTC-0700)<br />
[<a href="https://www.livemeeting.com/cc/usergroups/meetingICS?id=2CFGHC&amp;role=attend&amp;pw=DW%5D7%23bjwH&amp;i=i.ics"><u><font color="#000000">Add
to Calendar</font></u></a>]<br />
[<a href="https://www.livemeeting.com/cc/usergroups/join?id=2CFGHC&amp;role=attend&amp;pw=DW%5D7%23bjwH"><u><font color="#000000">Join
Meeting</font></u></a>]
</p>
        <p>
Did you know that Team Foundation Server can be used for software development by your
entire organization - not just the team using Microsoft platforms and technologies?
In this session Martin Woodward will show you how you can get your Java, Mac, Linux,
and Eclipse developers on board using Team Explorer Everywhere 2010. This session
shows you how you can standardize on Team Foundation Server for the Application Lifecycle
Management of your entire enterprise. See how to manage work items, version control,
and build automation across technology and platform boundaries in your company and
understand the features and functionality available to the people in your organization. 
</p>
        <p>
Speaker:  <strong>Martin Woodward</strong></p>
        <p>
Martin Woodward is the Program Manager for the Microsoft Visual Studio Team Foundation
Server Cross-Platform Tools Team and co-author of the book "<a href="http://www.amazon.co.uk/gp/product/0470484268?ie=UTF8&amp;tag=woodwardwebcom&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0470484268">Professional
Application Lifecycle Management with Visual Studio 2010</a>". Before joining Microsoft,
Martin was voted Team System MVP of the Year and has spoken about Team Foundation
Server at events internationally. Not only does Martin bring a unique insight into
the inner workings of the product he has experience from over a half-decade of real
world use at companies big and small that he is always happy to share. When not working
or speaking, Martin can be found at his blog <a href="http://www.woodwardweb.com/">http://www.woodwardweb.com</a>. <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d19e121e-4845-47ee-b5c8-4917863fca40" /></p>
      </body>
      <title>Neuigkeiten bei der Team System User Group Virtual Edition</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,d19e121e-4845-47ee-b5c8-4917863fca40.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,d19e121e-4845-47ee-b5c8-4917863fca40.aspx</link>
      <pubDate>Thu, 06 May 2010 00:04:00 GMT</pubDate>
      <description>&lt;p&gt;
Bei der weltweiten Usergroup Team System User Group Virtual Edition hat sich in den
letzten Tagen einiges geändert, z.B. der Name. Wie das Produkt das im Zentrum unserer
Aktivitäten steht, wurde die Gruppe in Visual Stuido ALM User Group umbenannt. Gleichzeitig
haben wir eine neue Website online geschaltet. Sie finden uns jetzt unter &lt;a href="http://www.vsalmug.com/default.aspx"&gt;http://www.vsalmug.com/default.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In diesem Zuge werden wir zukünftig die Benachrichtigungen für unsere Meetings nicht
mehr per E-Mail zustellen, sondern sie können sich Neuigkeiten unseren Blog mit den
Ankündigungen per RSS abrufen (&lt;a href="http://www.vsalmug.com/CMSPages/BlogRss.aspx?aliaspath=/Meetings/Announcements"&gt;http://www.vsalmug.com/CMSPages/BlogRss.aspx?aliaspath=/Meetings/Announcements&lt;/a&gt;). 
&lt;/p&gt;
&lt;p&gt;
Zusätzlich ahben wir auf LinkedIn eine Gruppe eingerichtet über die sich die Mitglieder
besser untereinander vernetzen können: &lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=2860483&amp;amp;trk=anet_ug_hm"&gt;http://www.linkedin.com/groups?home=&amp;amp;gid=2860483&amp;amp;trk=anet_ug_hm&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Abschließend möchte ich auf unseren nächsten Vortrag noch hinweisen. Am Donnerstag,
06.05.2010 ab 19:00 wird Martin Woodward vorstellen wie die Integration mit nicht
Microsoft-Plattformen über den Team Explorer Everywhere (vormals Teamprise) gelingt.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="Martin Woodward" src="http://1.2.3.10/bmi/www.woodwardweb.com/images/Martin_Woodward.jpg" width="200" height="280"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Team Explorer Everywhere 2010&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Meeting Date: Thursday, May 6th, 2010&lt;br&gt;
Time: 10:00AM PT (UTC-0700)&lt;br&gt;
[&lt;a href="https://www.livemeeting.com/cc/usergroups/meetingICS?id=2CFGHC&amp;amp;role=attend&amp;amp;pw=DW%5D7%23bjwH&amp;amp;i=i.ics"&gt;&lt;u&gt;&lt;font color="#000000"&gt;Add
to Calendar&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;]&lt;br&gt;
[&lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=2CFGHC&amp;amp;role=attend&amp;amp;pw=DW%5D7%23bjwH"&gt;&lt;u&gt;&lt;font color="#000000"&gt;Join
Meeting&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;]
&lt;/p&gt;
&lt;p&gt;
Did you know that Team Foundation Server can be used for software development by your
entire organization - not just the team using Microsoft platforms and technologies?
In this session Martin Woodward will show you how you can get your Java, Mac, Linux,
and Eclipse developers on board using Team Explorer Everywhere 2010. This session
shows you how you can standardize on Team Foundation Server for the Application Lifecycle
Management of your entire enterprise. See how to manage work items, version control,
and build automation across technology and platform boundaries in your company and
understand the features and functionality available to the people in your organization. 
&lt;p&gt;
Speaker:&amp;nbsp; &lt;strong&gt;Martin Woodward&lt;/strong&gt; 
&lt;p&gt;
Martin Woodward is the Program Manager for the Microsoft Visual Studio Team Foundation
Server Cross-Platform Tools Team and co-author of the book "&lt;a href="http://www.amazon.co.uk/gp/product/0470484268?ie=UTF8&amp;amp;tag=woodwardwebcom&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=0470484268"&gt;Professional
Application Lifecycle Management with Visual Studio 2010&lt;/a&gt;". Before joining Microsoft,
Martin was voted Team System MVP of the Year and has spoken about Team Foundation
Server at events internationally. Not only does Martin bring a unique insight into
the inner workings of the product he has experience from over a half-decade of real
world use at companies big and small that he is always happy to share. When not working
or speaking, Martin can be found at his blog &lt;a href="http://www.woodwardweb.com/"&gt;http://www.woodwardweb.com&lt;/a&gt;. &lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=d19e121e-4845-47ee-b5c8-4917863fca40" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,d19e121e-4845-47ee-b5c8-4917863fca40.aspx</comments>
      <category>Team System Server</category>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=cc90caeb-3f28-4242-a8c5-dd48a4166576</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,cc90caeb-3f28-4242-a8c5-dd48a4166576.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,cc90caeb-3f28-4242-a8c5-dd48a4166576.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=cc90caeb-3f28-4242-a8c5-dd48a4166576</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So langsam reift bei den letzten Source Safe Moikanern die Erkenntniss, dass es nun
langsam Zeit wird sich nach einer anderen Quellcodeverwaltung umzusehen und eigentlich
liegt da inzwischen nichts näher als der Team Foundation Server 2010 der nicht nur
eine erstklassige Versionsverwaltung mit bringt sondern der acuh eine Vielzahl weiterer
ALM-Funktionen beinhaltet und vor allem inzwischen in der MSDN Subscription kostenloas
enthalten ist.
</p>
        <p>
Wer wissen will, wie er schnell und einfach von Source Safe auf TFS migriert, findet
alle notwendigen Infos hier : <a href="http://msdn.microsoft.com/en-us/library/ms253060.aspx">http://msdn.microsoft.com/en-us/library/ms253060.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cc90caeb-3f28-4242-a8c5-dd48a4166576" />
      </body>
      <title>Anleitung zur Migration von Visual Source Safe nach TFS 2010</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,cc90caeb-3f28-4242-a8c5-dd48a4166576.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,cc90caeb-3f28-4242-a8c5-dd48a4166576.aspx</link>
      <pubDate>Fri, 30 Apr 2010 11:28:46 GMT</pubDate>
      <description>&lt;p&gt;
So langsam reift bei den letzten Source Safe Moikanern die Erkenntniss, dass es nun
langsam Zeit wird sich nach einer anderen Quellcodeverwaltung umzusehen und eigentlich
liegt da inzwischen nichts näher als der Team Foundation Server 2010 der nicht nur
eine erstklassige Versionsverwaltung mit bringt sondern der acuh eine Vielzahl weiterer
ALM-Funktionen beinhaltet und vor allem inzwischen in der MSDN Subscription kostenloas
enthalten ist.
&lt;/p&gt;
&lt;p&gt;
Wer wissen will, wie er schnell und einfach von Source Safe auf TFS migriert, findet
alle notwendigen Infos hier : &lt;a href="http://msdn.microsoft.com/en-us/library/ms253060.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms253060.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=cc90caeb-3f28-4242-a8c5-dd48a4166576" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,cc90caeb-3f28-4242-a8c5-dd48a4166576.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f0b8fdb4-773b-42ae-b356-a9e4e1b26f46</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f0b8fdb4-773b-42ae-b356-a9e4e1b26f46.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f0b8fdb4-773b-42ae-b356-a9e4e1b26f46.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f0b8fdb4-773b-42ae-b356-a9e4e1b26f46</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Christian Binder hat einen Deep Zoom zum Thema Testing mit Visual Studio 2010 auf
seinem Blog veröffentlicht. Der Deep Zoom erlaubt es aus einer Übersichtsansicht sich
tiefer in einzelne Themen hineinzuklicken, bis auf Detaileben. Der Deep Zoom enthält
auch Videos die zwar nicht vertont sind aber die einzelnen Teilabläufe anschaulich
darstellen. Echn ne coole Sache, also einfach mal selber reinschauen.
</p>
        <p>
          <a href="http://www.speakflow.com/View.aspx?PresentationID=e4e79e6a-92f2-4e6b-9a52-8ccb2c4889b3&amp;mode=presentLocally">
            <img title="Visual Studio 2010 Test Manager Deepzoom" border="0" alt="Visual Studio 2010 Test Manager Deepzoom" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/4ca31cb9b279_6537/image_3.png" width="554" height="480" />
          </a>
        </p>
        <p>
          <a href="http://blogs.msdn.com/cbinder/archive/2010/04/22/einf-hrung-deepzoom-f-r-den-neuen-visual-studio-2010-test-manager-und-lab-management.aspx">http://blogs.msdn.com/cbinder/archive/2010/04/22/einf-hrung-deepzoom-f-r-den-neuen-visual-studio-2010-test-manager-und-lab-management.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f0b8fdb4-773b-42ae-b356-a9e4e1b26f46" />
      </body>
      <title>Visual Studio 2010 Testing Deep Zoom</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f0b8fdb4-773b-42ae-b356-a9e4e1b26f46.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f0b8fdb4-773b-42ae-b356-a9e4e1b26f46.aspx</link>
      <pubDate>Fri, 23 Apr 2010 15:18:41 GMT</pubDate>
      <description>&lt;p&gt;
Christian Binder hat einen Deep Zoom zum Thema Testing mit Visual Studio 2010 auf
seinem Blog veröffentlicht. Der Deep Zoom erlaubt es aus einer Übersichtsansicht sich
tiefer in einzelne Themen hineinzuklicken, bis auf Detaileben. Der Deep Zoom enthält
auch Videos die zwar nicht vertont sind aber die einzelnen Teilabläufe anschaulich
darstellen. Echn ne coole Sache, also einfach mal selber reinschauen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.speakflow.com/View.aspx?PresentationID=e4e79e6a-92f2-4e6b-9a52-8ccb2c4889b3&amp;amp;mode=presentLocally"&gt;&lt;img title="Visual Studio 2010 Test Manager Deepzoom" border="0" alt="Visual Studio 2010 Test Manager Deepzoom" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/4ca31cb9b279_6537/image_3.png" width="554" height="480"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cbinder/archive/2010/04/22/einf-hrung-deepzoom-f-r-den-neuen-visual-studio-2010-test-manager-und-lab-management.aspx"&gt;http://blogs.msdn.com/cbinder/archive/2010/04/22/einf-hrung-deepzoom-f-r-den-neuen-visual-studio-2010-test-manager-und-lab-management.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f0b8fdb4-773b-42ae-b356-a9e4e1b26f46" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f0b8fdb4-773b-42ae-b356-a9e4e1b26f46.aspx</comments>
      <category>Qualitätsmanagement</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4f04246b-1c36-489c-ab56-70cd98523750</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4f04246b-1c36-489c-ab56-70cd98523750.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4f04246b-1c36-489c-ab56-70cd98523750.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4f04246b-1c36-489c-ab56-70cd98523750</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In der TFS Adminconsole oder im TFS Configuration Wizard können die Reporting Services
für den TFS konfiguriert werden. 
</p>
        <p>
 <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/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/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_1.png" width="366" height="476" /></a></p>
        <p>
Man gibt hier den Server und ggf. die Instanz der Reporting Services an und klickt
auf “Populate URLs”, dann werden die entsprechenden URLs automatisch ausgefüllt –
normalerweise zumindest. Ich hatte die Situation, dass der User mit dem ich den TFS
installiert habe auf dem Server auf dem die Reporting Services liefen kein Administrator
war. Normalerweise ist das der einfachste Weg, den TFS Account auf dem Reporting Server
als lokalen Administrator einzutragen, das ist aber nicht in allen Fällen erwünscht.
Dann bekommt man die Fehlermeldung
</p>
        <p>
TF255050: A connection cannot be made to the Report Server WMI provider. Verify the
following: 
<br />
1. You have entered the correct name for the server, including the instance name. 
<br />
2. The Windows Management Instrumentation service is running on vs2010rcdemo. 
<br />
3. The service is not blocked by Windows Firewall. 
<br />
4. You have the required permissions to connect. 
</p>
        <p>
Details: 
<br />
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/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/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb.png" width="420" height="292" />
          </a> 
</p>
        <p>
Eine damit verwandte Fehlermeldung ist 
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
TF255186: The following SQL Server Reporting Services Instance could not be found:
MSSQLSERVER. The server name is: vs2010rcdemo.
</p>
        <p>
In beiden Fälle fehlen dem User WMI-Berechtigungen auf dem Reporting Server. Im ersten
Fall der Remote-Zugriff auf die WMI generell, im zweiten Fall auf den Remote-Zugriff
für die Reporting Services in der WMI. Um die gewünschte Operation ausführen zu können
muss dem User zunächst Remote-Zugriff auf WMI gegeben werden:
</p>
        <ol>
          <li>
Auf dem Reporting Server dcomcnfg.exe starten</li>
          <li>
Im linken Bereich Console Root\Component Services\Computers\My Computer öffnen</li>
          <li>
Aus dem Kontextmenü von “My Computer” den Eintrag “Properties” öffnen<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_5.png" width="619" height="542" /></a></li>
          <li>
Im Bereich “Launch and Activation Permissions” auf “Edit Limits” klicken</li>
          <li>
Den Benutzer mit “Add hinzufügen und ihm “Remote Launch” und “Remote Activation” vergeben<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_6.png" width="374" height="453" /></a></li>
        </ol>
        <p>
Anschließend kann der Remote-Zugriff per WMI auf die Reporting Services konfiguriert
werden.
</p>
        <ol>
          <li>
Auf dem Reporting Server wmimgmt.msc starten</li>
          <li>
Im linken Bereich auf WMI Control (Local) aus dem Kontext-Menü “Properties” auswählen</li>
          <li>
Auf den Reiter Security wechseln und im Baum Root\Microsoft\SqlServer\ReportServer
auswählen 
<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_2.png" width="612" height="482" /></a></li>
          <li>
Auf den Button “Security” klicken und den gewünschten benutzer mit “Add” einfügen</li>
          <li>
Dem Benutzer “Enable Account” und “Remote Enable” als Rechte vergeben<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_8.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_3.png" width="337" height="408" /></a></li>
          <li>
Auf “Advanced” clicken, den Benutzer auswählen und dann auf “Edit” klicken</li>
          <li>
Bei “Apply to” “This namespace and subnamespaces” wählen<br /><a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_10.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_4.png" width="340" height="431" /></a></li>
        </ol>
        <p>
Mit diesen Einstellungen sollte nun das “Populate URLs” in der TFS Administration
Console funktionieren.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f04246b-1c36-489c-ab56-70cd98523750" />
      </body>
      <title>TF255050 Fehlermeldung beim Einrichten der Reporting Services im TFS</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4f04246b-1c36-489c-ab56-70cd98523750.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4f04246b-1c36-489c-ab56-70cd98523750.aspx</link>
      <pubDate>Fri, 23 Apr 2010 15:00:05 GMT</pubDate>
      <description>&lt;p&gt;
In der TFS Adminconsole oder im TFS Configuration Wizard können die Reporting Services
für den TFS konfiguriert werden. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/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/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_1.png" width="366" height="476"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Man gibt hier den Server und ggf. die Instanz der Reporting Services an und klickt
auf “Populate URLs”, dann werden die entsprechenden URLs automatisch ausgefüllt –
normalerweise zumindest. Ich hatte die Situation, dass der User mit dem ich den TFS
installiert habe auf dem Server auf dem die Reporting Services liefen kein Administrator
war. Normalerweise ist das der einfachste Weg, den TFS Account auf dem Reporting Server
als lokalen Administrator einzutragen, das ist aber nicht in allen Fällen erwünscht.
Dann bekommt man die Fehlermeldung
&lt;/p&gt;
&lt;p&gt;
TF255050: A connection cannot be made to the Report Server WMI provider. Verify the
following: 
&lt;br&gt;
1. You have entered the correct name for the server, including the instance name. 
&lt;br&gt;
2. The Windows Management Instrumentation service is running on vs2010rcdemo. 
&lt;br&gt;
3. The service is not blocked by Windows Firewall. 
&lt;br&gt;
4. You have the required permissions to connect. 
&lt;/p&gt;
&lt;p&gt;
Details: 
&lt;br&gt;
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/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/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb.png" width="420" height="292"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Eine damit verwandte Fehlermeldung ist 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
TF255186: The following SQL Server Reporting Services Instance could not be found:
MSSQLSERVER. The server name is: vs2010rcdemo.
&lt;/p&gt;
&lt;p&gt;
In beiden Fälle fehlen dem User WMI-Berechtigungen auf dem Reporting Server. Im ersten
Fall der Remote-Zugriff auf die WMI generell, im zweiten Fall auf den Remote-Zugriff
für die Reporting Services in der WMI. Um die gewünschte Operation ausführen zu können
muss dem User zunächst Remote-Zugriff auf WMI gegeben werden:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Auf dem Reporting Server dcomcnfg.exe starten&lt;/li&gt;
&lt;li&gt;
Im linken Bereich Console Root\Component Services\Computers\My Computer öffnen&lt;/li&gt;
&lt;li&gt;
Aus dem Kontextmenü von “My Computer” den Eintrag “Properties” öffnen&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_5.png" width="619" height="542"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
Im Bereich “Launch and Activation Permissions” auf “Edit Limits” klicken&lt;/li&gt;
&lt;li&gt;
Den Benutzer mit “Add hinzufügen und ihm “Remote Launch” und “Remote Activation” vergeben&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_6.png" width="374" height="453"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Anschließend kann der Remote-Zugriff per WMI auf die Reporting Services konfiguriert
werden.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Auf dem Reporting Server wmimgmt.msc starten&lt;/li&gt;
&lt;li&gt;
Im linken Bereich auf WMI Control (Local) aus dem Kontext-Menü “Properties” auswählen&lt;/li&gt;
&lt;li&gt;
Auf den Reiter Security wechseln und im Baum Root\Microsoft\SqlServer\ReportServer
auswählen 
&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_2.png" width="612" height="482"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
Auf den Button “Security” klicken und den gewünschten benutzer mit “Add” einfügen&lt;/li&gt;
&lt;li&gt;
Dem Benutzer “Enable Account” und “Remote Enable” als Rechte vergeben&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_3.png" width="337" height="408"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
Auf “Advanced” clicken, den Benutzer auswählen und dann auf “Edit” klicken&lt;/li&gt;
&lt;li&gt;
Bei “Apply to” “This namespace and subnamespaces” wählen&lt;br&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TF255050FehlermeldungbeimEinrichtenderRe_DF82/image_thumb_4.png" width="340" height="431"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Mit diesen Einstellungen sollte nun das “Populate URLs” in der TFS Administration
Console funktionieren.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4f04246b-1c36-489c-ab56-70cd98523750" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4f04246b-1c36-489c-ab56-70cd98523750.aspx</comments>
      <category>Team System Server</category>
      <category>TFS 2010</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6a36ed70-6c23-454a-844b-9c67cf9d3995</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6a36ed70-6c23-454a-844b-9c67cf9d3995.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6a36ed70-6c23-454a-844b-9c67cf9d3995.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6a36ed70-6c23-454a-844b-9c67cf9d3995</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wer sich eine Trial-Version von Visual Studio 2010 oder Team Foundation Server 2010
installiert benötigt einen Key um diese freizuschalten. Wer nun über eine MSDN-Subscription
verfügt, kann sich die Vollversion dort herunterladen, jedoch man bekommt keinen Key.
Nun kann man entweder neu installieren oder man greift zu einem kleinen Trick:
</p>
        <ol>
          <li>
ISO-File vom MSDN herunterladen 
</li>
          <li>
Im ISO-Image nach der Datei setup.sdb suchen 
</li>
          <li>
Die Datei mit einem Texteditor öffnen 
</li>
          <li>
Der Key steht unter dem Eintrag [Product Key] und kann von hier einfach in das Registrierungsformular
übertragen werden. Dazu im TFS einfach die Admin-Console öffnen und im Visual Studio
unter Help / Register Product aufrufen 
</li>
        </ol>
        <p>
Update:
</p>
        <p>
Inzwischen hatte MS ein Einsehen und die Keys bei den MSDN Subscriber Downloads veröffentlicht
:-)
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6a36ed70-6c23-454a-844b-9c67cf9d3995" />
      </body>
      <title>Freischalten der VS2010 / TFS2010 Trial Version f&amp;uuml;r MSDN Abonnenten</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6a36ed70-6c23-454a-844b-9c67cf9d3995.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6a36ed70-6c23-454a-844b-9c67cf9d3995.aspx</link>
      <pubDate>Wed, 14 Apr 2010 21:20:36 GMT</pubDate>
      <description>&lt;p&gt;
Wer sich eine Trial-Version von Visual Studio 2010 oder Team Foundation Server 2010
installiert benötigt einen Key um diese freizuschalten. Wer nun über eine MSDN-Subscription
verfügt, kann sich die Vollversion dort herunterladen, jedoch man bekommt keinen Key.
Nun kann man entweder neu installieren oder man greift zu einem kleinen Trick:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
ISO-File vom MSDN herunterladen 
&lt;li&gt;
Im ISO-Image nach der Datei setup.sdb suchen 
&lt;li&gt;
Die Datei mit einem Texteditor öffnen 
&lt;li&gt;
Der Key steht unter dem Eintrag [Product Key] und kann von hier einfach in das Registrierungsformular
übertragen werden. Dazu im TFS einfach die Admin-Console öffnen und im Visual Studio
unter Help / Register Product aufrufen 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Update:
&lt;/p&gt;
&lt;p&gt;
Inzwischen hatte MS ein Einsehen und die Keys bei den MSDN Subscriber Downloads veröffentlicht
:-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6a36ed70-6c23-454a-844b-9c67cf9d3995" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6a36ed70-6c23-454a-844b-9c67cf9d3995.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=595d9545-603e-4ee2-a12b-971263aba220</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,595d9545-603e-4ee2-a12b-971263aba220.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,595d9545-603e-4ee2-a12b-971263aba220.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=595d9545-603e-4ee2-a12b-971263aba220</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Beim Deployment einer Environment auf meinen Host bekam ich den Fehler TF259115:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerimLabManagementbeimDeploymenteiner_E276/clip_image002_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerimLabManagementbeimDeploymenteiner_E276/clip_image002_thumb.jpg" width="373" height="236" />
          </a>
        </p>
        <p>
Speicher war eigentlich genug frei auf meinem Host und so war ich zunächst erstaunt,
warum er das nicht deployen wollte. Des Rätsels Lösung liegt darin, dass die Placement
Policy standardmäßig auf “Conservative” eingestellt ist. Das bedeutet, dass der Host
beim Deployment den Speicherbedarf aller VMs auf dem Host ermittelt, unabhängig davon
ob diese gestartet sind oder nicht. Im Betrieb könnten ja dann alle gleichzeitig gestartet
werden was dann zu Problemen führt. D.h. im Idealfall hat man immer soviel Ressourcen,
dass alle Environments die deployed sind gleichzeitig laufen können, momentan nicht
benötigte Environments werden in der Library abgelegt.
</p>
        <p>
Da ich aber auf meinem Demo-Notebook nicht soviel Speicher habe und dabei nie alle
Environments gleichzeitig laufen sollen, wollte ich diese Limitierung umgehen. Dies
kann man erreichen, indem man die Placement Policy auf Aggresive stellt. Dies erreicht
man am besten durch einen TFSConfig-Aufruf:
</p>
        <p>
          <font size="2">
            <font face="Courier New">TfsConfig Lab /hostgroup /CollectionName:labcollection
/Edit /Name:"All Hosts" 
<br />
/LabEnvironmentPlacementPolicy:<font color="#008000">Aggressive</font></font>
          </font>
        </p>
        <p>
          <font size="2" face="Courier New">Logging sent to file C:\ProgramData\Microsoft\Team
Foundation\Server Configuration\Logs\CFG_SET_URL_0413_225508.log<br />
Command: lab<br />
TfsConfig - Team Foundation Server Configuration Tool<br />
Copyright (c) Microsoft Corporation. All rights reserved.<br />
Are you sure you want to update the settings for this host group ? (Yes/No) y<br />
The requested changes were successfully applied.</font>
        </p>
        <p>
Die TFSConfig findet befindet sich im Pfad <font size="2" face="Courier New">C:\Program
Files\Microsoft Team Foundation Server 2010\Tools</font></p>
        <p>
Weitere Infos unter <span style="font-family: 'Calibri','sans-serif'; color: #1f497d; font-size: 11pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: de; mso-bidi-language: ar-sa" lang="EN-US"><a href="http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx"><u><font color="#800080">http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx</font></u></a></span></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=595d9545-603e-4ee2-a12b-971263aba220" />
      </body>
      <title>Fehler im Lab Management beim Deployment einer Environment</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,595d9545-603e-4ee2-a12b-971263aba220.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,595d9545-603e-4ee2-a12b-971263aba220.aspx</link>
      <pubDate>Tue, 13 Apr 2010 15:12:44 GMT</pubDate>
      <description>&lt;p&gt;
Beim Deployment einer Environment auf meinen Host bekam ich den Fehler TF259115:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerimLabManagementbeimDeploymenteiner_E276/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerimLabManagementbeimDeploymenteiner_E276/clip_image002_thumb.jpg" width="373" height="236"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Speicher war eigentlich genug frei auf meinem Host und so war ich zunächst erstaunt,
warum er das nicht deployen wollte. Des Rätsels Lösung liegt darin, dass die Placement
Policy standardmäßig auf “Conservative” eingestellt ist. Das bedeutet, dass der Host
beim Deployment den Speicherbedarf aller VMs auf dem Host ermittelt, unabhängig davon
ob diese gestartet sind oder nicht. Im Betrieb könnten ja dann alle gleichzeitig gestartet
werden was dann zu Problemen führt. D.h. im Idealfall hat man immer soviel Ressourcen,
dass alle Environments die deployed sind gleichzeitig laufen können, momentan nicht
benötigte Environments werden in der Library abgelegt.
&lt;/p&gt;
&lt;p&gt;
Da ich aber auf meinem Demo-Notebook nicht soviel Speicher habe und dabei nie alle
Environments gleichzeitig laufen sollen, wollte ich diese Limitierung umgehen. Dies
kann man erreichen, indem man die Placement Policy auf Aggresive stellt. Dies erreicht
man am besten durch einen TFSConfig-Aufruf:
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;&lt;font face="Courier New"&gt;TfsConfig Lab /hostgroup /CollectionName:labcollection
/Edit /Name:"All Hosts" 
&lt;br&gt;
/LabEnvironmentPlacementPolicy:&lt;font color="#008000"&gt;Aggressive&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2" face="Courier New"&gt;Logging sent to file C:\ProgramData\Microsoft\Team
Foundation\Server Configuration\Logs\CFG_SET_URL_0413_225508.log&lt;br&gt;
Command: lab&lt;br&gt;
TfsConfig - Team Foundation Server Configuration Tool&lt;br&gt;
Copyright (c) Microsoft Corporation. All rights reserved.&lt;br&gt;
Are you sure you want to update the settings for this host group ? (Yes/No) y&lt;br&gt;
The requested changes were successfully applied.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Die TFSConfig findet befindet sich im Pfad &lt;font size="2" face="Courier New"&gt;C:\Program
Files\Microsoft Team Foundation Server 2010\Tools&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Weitere Infos unter &lt;span style="font-family: 'Calibri','sans-serif'; color: #1f497d; font-size: 11pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: de; mso-bidi-language: ar-sa" lang="EN-US"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx"&gt;&lt;u&gt;&lt;font color="#800080"&gt;http://msdn.microsoft.com/en-us/library/dd547199(VS.100).aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=595d9545-603e-4ee2-a12b-971263aba220" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,595d9545-603e-4ee2-a12b-971263aba220.aspx</comments>
      <category>Lab Management</category>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=54de82aa-bb11-4489-8b00-da509a24e2f1</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,54de82aa-bb11-4489-8b00-da509a24e2f1.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,54de82aa-bb11-4489-8b00-da509a24e2f1.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=54de82aa-bb11-4489-8b00-da509a24e2f1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="" alt="Visual Studio 2010 Launch" src="http://i.msdn.microsoft.com/ee663032.vS_interupt3(en-us,MSDN.10).png" width="716" height="75" />
        </p>
        <p>
  
</p>
        <p>
Heute wurden Visual Studio 2010 und Team Foundation Server 2010 gelauncht. Microsoft
neueste ALM Plattform bietet eine große Anzahl neuer Features, so dass sich ein näherer
Blick auf jeden Fall lohnt, unter anderem: 
</p>
        <ul>
          <li>
Testmanagement und Testausführung</li>
          <li>
automatisierte GUI-Tests</li>
          <li>
Virtualisierte Testumgebungen</li>
          <li>
Erweiterte Tracking-Funktionen für Versionsverwaltung</li>
          <li>
Agile Planungsmethoden</li>
          <li>
Build Workflows auf Basis von WF 4.0</li>
          <li>
Architektur-Features und UML-Diagramme</li>
          <li>
Integrierte SharePoint-Entwicklung</li>
          <li>
uvm</li>
        </ul>
        <p>
Ich werde in den folgenden Wochen in einzelnen Blogbeiträgen verschiedene Funktionen
vorstellen, also vorbeischauen lohnt sich …
</p>
        <p>
Weitere Informationen und den Download Link für Inhaber einer MSDN Subscription finden
sich hier: 
</p>
        <p>
          <a title="http://msdn.microsoft.com/de-de/vstudio/2010.aspx" href="http://msdn.microsoft.com/de-de/vstudio/2010.aspx">http://msdn.microsoft.com/de-de/vstudio/2010.aspx</a>
        </p>
        <p>
Testversionen können hier heruntergeladen werden:<br /><a href="http://www.microsoft.com/germany/visualstudio/try/download.aspx">http://www.microsoft.com/germany/visualstudio/try/download.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=54de82aa-bb11-4489-8b00-da509a24e2f1" />
      </body>
      <title>Visual Studio 2010 und Team Foundation Server 2010 verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,54de82aa-bb11-4489-8b00-da509a24e2f1.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,54de82aa-bb11-4489-8b00-da509a24e2f1.aspx</link>
      <pubDate>Mon, 12 Apr 2010 23:37:24 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="" alt="Visual Studio 2010 Launch" src="http://i.msdn.microsoft.com/ee663032.vS_interupt3(en-us,MSDN.10).png" width="716" height="75"&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Heute wurden Visual Studio 2010 und Team Foundation Server 2010 gelauncht. Microsoft
neueste ALM Plattform bietet eine große Anzahl neuer Features, so dass sich ein näherer
Blick auf jeden Fall lohnt, unter anderem: 
&lt;ul&gt;
&lt;li&gt;
Testmanagement und Testausführung&lt;/li&gt;
&lt;li&gt;
automatisierte GUI-Tests&lt;/li&gt;
&lt;li&gt;
Virtualisierte Testumgebungen&lt;/li&gt;
&lt;li&gt;
Erweiterte Tracking-Funktionen für Versionsverwaltung&lt;/li&gt;
&lt;li&gt;
Agile Planungsmethoden&lt;/li&gt;
&lt;li&gt;
Build Workflows auf Basis von WF 4.0&lt;/li&gt;
&lt;li&gt;
Architektur-Features und UML-Diagramme&lt;/li&gt;
&lt;li&gt;
Integrierte SharePoint-Entwicklung&lt;/li&gt;
&lt;li&gt;
uvm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Ich werde in den folgenden Wochen in einzelnen Blogbeiträgen verschiedene Funktionen
vorstellen, also vorbeischauen lohnt sich …
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen und den Download Link für Inhaber einer MSDN Subscription finden
sich hier: 
&lt;p&gt;
&lt;a title="http://msdn.microsoft.com/de-de/vstudio/2010.aspx" href="http://msdn.microsoft.com/de-de/vstudio/2010.aspx"&gt;http://msdn.microsoft.com/de-de/vstudio/2010.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Testversionen können hier heruntergeladen werden:&lt;br&gt;
&lt;a href="http://www.microsoft.com/germany/visualstudio/try/download.aspx"&gt;http://www.microsoft.com/germany/visualstudio/try/download.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=54de82aa-bb11-4489-8b00-da509a24e2f1" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,54de82aa-bb11-4489-8b00-da509a24e2f1.aspx</comments>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=63edec55-85f0-4768-9ccb-ec78bf0e6340</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=63edec55-85f0-4768-9ccb-ec78bf0e6340</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Team Foundation Server 2010 bietet nun eine verbesserte Integration mit SharePoint.
Für die einzelnen Team-Projekte wird die Verbindung zu einer SharePoint Site typischerweise
beim Anlegen des Projektes einrichten, alternativ kann man das auch im Nachhinein
konfigurieren. Dazu einfach im TeamExplorer auf dem Team Projekt rechte Maustaste
und dann unter “Team Project Setting” “Portal Settings” auswählen. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_thumb.png" width="359" height="276" />
          </a>
        </p>
        <p>
Hier wählt man dann unter “Configure URL” eine der konfigurierten Web Applications
aus.
</p>
        <p>
Bekommt mann beim Bestätigen des Fensters folgen Meldung, dann hat der aktuelle Benutzer
nicht ausreichen Berechtigungen auf die Site / SiteCollection:
</p>
        <p>
Server was unable to process request. ---&gt; Failed to activate feature 'TeamFoundationWeb'
(ID: 310284e3-35d9-4b5d-99b5-c42147379877) at scope 'http://sarmoss02/sites/TFS2008/BI_KaBIS'.
</p>
        <p>
Diese Berechtigungen müssen im SharePoint eingetragen werden.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=63edec55-85f0-4768-9ccb-ec78bf0e6340" />
      </body>
      <title>Fehler &amp;ldquo;Failed to activate feature&amp;rdquo; beim Einrichten eines Portals in TFS 2010</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</link>
      <pubDate>Mon, 08 Mar 2010 07:07:21 GMT</pubDate>
      <description>&lt;p&gt;
Team Foundation Server 2010 bietet nun eine verbesserte Integration mit SharePoint.
Für die einzelnen Team-Projekte wird die Verbindung zu einer SharePoint Site typischerweise
beim Anlegen des Projektes einrichten, alternativ kann man das auch im Nachhinein
konfigurieren. Dazu einfach im TeamExplorer auf dem Team Projekt rechte Maustaste
und dann unter “Team Project Setting” “Portal Settings” auswählen. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/FehlerFailedtoactivatefeaturebeimEinrich_70F1/image_thumb.png" width="359" height="276"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier wählt man dann unter “Configure URL” eine der konfigurierten Web Applications
aus.
&lt;/p&gt;
&lt;p&gt;
Bekommt mann beim Bestätigen des Fensters folgen Meldung, dann hat der aktuelle Benutzer
nicht ausreichen Berechtigungen auf die Site / SiteCollection:
&lt;/p&gt;
&lt;p&gt;
Server was unable to process request. ---&amp;gt; Failed to activate feature 'TeamFoundationWeb'
(ID: 310284e3-35d9-4b5d-99b5-c42147379877) at scope 'http://sarmoss02/sites/TFS2008/BI_KaBIS'.
&lt;/p&gt;
&lt;p&gt;
Diese Berechtigungen müssen im SharePoint eingetragen werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=63edec55-85f0-4768-9ccb-ec78bf0e6340" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,63edec55-85f0-4768-9ccb-ec78bf0e6340.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools
die viele nützliche Funktionen hinzufügen.
</p>
        <p>
Kostenloaser Download: <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b">http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4" />
      </body>
      <title>Team Foundation Server Power Tools 2010 RC</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</link>
      <pubDate>Tue, 02 Mar 2010 16:34:34 GMT</pubDate>
      <description>&lt;p&gt;
Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools
die viele nützliche Funktionen hinzufügen.
&lt;/p&gt;
&lt;p&gt;
Kostenloaser Download: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</comments>
      <category>Team System Server</category>
      <category>Tools</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=c85928fc-65e5-4313-a969-04f466de7bce</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=c85928fc-65e5-4313-a969-04f466de7bce</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Will man in einer Winforms-Anwendung einen String URL-encodieren, dann kann mann dafür
einen einfachen Aufruf verwenden:
</p>
        <font color="#2b91af" size="2" face="Consolas">
          <font color="#2b91af" size="2" face="Consolas">
            <p>
HttpUtility.UrlEncode(<font color="#a31515" size="2" face="Consolas">"http://www.artiso.com/page?ID=99"</font>);
</p>
          </font>
        </font>
        <p>
Das einzige wass man dafür tun muss, ist die System.Web.dll zu referenzieren. Eine
kleine Hürde gibt es bei Visual Studio 2010, da hier standardmäßig “.Net Framework
4 Client Profile” als Target-Framework ausgewählt ist und das Client Profile die System.Web
nicht enthält. Deshalb muss man in den Eigenschaften des Projektes das Target-Framework
umstellen, z.B. auf .NET Framework 4.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_thumb.png" width="545" height="360" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c85928fc-65e5-4313-a969-04f466de7bce" />
      </body>
      <title>URL encodierung in WinForms-Anwendung</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</link>
      <pubDate>Tue, 16 Feb 2010 18:19:29 GMT</pubDate>
      <description>&lt;p&gt;
Will man in einer Winforms-Anwendung einen String URL-encodieren, dann kann mann dafür
einen einfachen Aufruf verwenden:
&lt;/p&gt;
&lt;font color="#2b91af" size="2" face="Consolas"&gt;&lt;font color="#2b91af" size="2" face="Consolas"&gt; 
&lt;p&gt;
HttpUtility.UrlEncode(&lt;font color="#a31515" size="2" face="Consolas"&gt;"http://www.artiso.com/page?ID=99"&lt;/font&gt;);
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
Das einzige wass man dafür tun muss, ist die System.Web.dll zu referenzieren. Eine
kleine Hürde gibt es bei Visual Studio 2010, da hier standardmäßig “.Net Framework
4 Client Profile” als Target-Framework ausgewählt ist und das Client Profile die System.Web
nicht enthält. Deshalb muss man in den Eigenschaften des Projektes das Target-Framework
umstellen, z.B. auf .NET Framework 4.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/URLencodierunginWinFormsAnwendung_10EA5/image_thumb.png" width="545" height="360"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=c85928fc-65e5-4313-a969-04f466de7bce" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,c85928fc-65e5-4313-a969-04f466de7bce.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7e811c18-808d-4102-a2a0-6e371bf18d79</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7e811c18-808d-4102-a2a0-6e371bf18d79</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wollte heute ganz einfach eine Benachrichtigung für eine Liste im SharePoint einrichten.
Das Ganze stellte sich als problematischer heraus als gedacht. Eigentlich ist das
eine einfache Sache. Im Actions-Menü die Option “Aletr Me” aufrufen…
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb.png" width="213" height="244" />
          </a>
        </p>
        <p>
… , Einstellungen vornehmen und schon kommt eine Fehlermeldung:
</p>
        <blockquote>
          <p>
            <span id="ctl00_PlaceHolderMain_LabelMessage">The following users do not have e-mail
addresses specified: &lt;UserName&gt;. Alerts have been created successfully but these
users will not receive e-mail notifications until valid e-mail addresses have been
provided</span>
          </p>
        </blockquote>
        <p>
Der Link darunter mit “Set my e-Mail address” war auch nicht sehr hilfreich. Nach
einigen Recherchen bin ich dann auf ein paar weitere Details gestoßen.
</p>
        <p>
Zunächst habe ich herausgefunden, dass SharePoint die Benutzerprofile mit dem ActiveDirectory
abgleicht, aber nur, wenn das konfiguriert ist. Das kann man unter Central Administration
\ Shared Services Administration einstellen. Dort kann man im Dropdown-Menü des SharedService
die Option “Open Shared Services Admin Site” aufrufen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_1.png" width="647" height="346" />
          </a>
        </p>
        <p>
Unter “User Profiles and My Sites” kann nun die Option “User profiles and properties”
gewählt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_2.png" width="320" height="219" />
          </a>
        </p>
        <p>
Hier sollte zunächst geprüft werden, ob der Dienst der die User Profile mit dem ActiveDirectory
abgleicht auch zur Ausführung eingeplant ist. Mit den unteren Links kann ein manueller
Abgleich gestartet werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_3.png" width="811" height="575" />
          </a>
        </p>
        <p>
Über “View user profiles” kann man sich die importierten Profile anzeigen lassen,
mit “View import log” kann man sich ein Protokoll zum Abgleich anzeigen lassen.
</p>
        <p>
Sollen die Benutzer aus einer anderen Domäne importiert werden als die in der der
SharePoint Server läuft, kann man über “View Import Connections” eine weitere Domäne
hinzufügen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_4.png" width="885" height="180" />
          </a>
        </p>
        <p>
Bei mir bestand dann noch das Problem, dass das Profil für meinen User nicht sauber
durch den Import aktualisiert wurde. Nachdem ich den User aus der entsprechenden Site
entfernt und neu hinzugefügt hatte, hat es problemlos funktioniert und ich kann jetzt
meine Alerts problemlos einrichten und bin immer auf dem Laufenden was den Inhalt
meiner SharePoint-Listen anbelangt.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7e811c18-808d-4102-a2a0-6e371bf18d79" />
      </body>
      <title>Probleme beim Einrichten der e-Mail Benachrichtigung im SharePoint</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</link>
      <pubDate>Mon, 08 Feb 2010 21:47:10 GMT</pubDate>
      <description>&lt;p&gt;
Wollte heute ganz einfach eine Benachrichtigung für eine Liste im SharePoint einrichten.
Das Ganze stellte sich als problematischer heraus als gedacht. Eigentlich ist das
eine einfache Sache. Im Actions-Menü die Option “Aletr Me” aufrufen…
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb.png" width="213" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
… , Einstellungen vornehmen und schon kommt eine Fehlermeldung:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;span id="ctl00_PlaceHolderMain_LabelMessage"&gt;The following users do not have e-mail
addresses specified: &amp;lt;UserName&amp;gt;. Alerts have been created successfully but these
users will not receive e-mail notifications until valid e-mail addresses have been
provided&lt;/span&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Der Link darunter mit “Set my e-Mail address” war auch nicht sehr hilfreich. Nach
einigen Recherchen bin ich dann auf ein paar weitere Details gestoßen.
&lt;/p&gt;
&lt;p&gt;
Zunächst habe ich herausgefunden, dass SharePoint die Benutzerprofile mit dem ActiveDirectory
abgleicht, aber nur, wenn das konfiguriert ist. Das kann man unter Central Administration
\ Shared Services Administration einstellen. Dort kann man im Dropdown-Menü des SharedService
die Option “Open Shared Services Admin Site” aufrufen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_1.png" width="647" height="346"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Unter “User Profiles and My Sites” kann nun die Option “User profiles and properties”
gewählt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_2.png" width="320" height="219"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier sollte zunächst geprüft werden, ob der Dienst der die User Profile mit dem ActiveDirectory
abgleicht auch zur Ausführung eingeplant ist. Mit den unteren Links kann ein manueller
Abgleich gestartet werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_3.png" width="811" height="575"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Über “View user profiles” kann man sich die importierten Profile anzeigen lassen,
mit “View import log” kann man sich ein Protokoll zum Abgleich anzeigen lassen.
&lt;/p&gt;
&lt;p&gt;
Sollen die Benutzer aus einer anderen Domäne importiert werden als die in der der
SharePoint Server läuft, kann man über “View Import Connections” eine weitere Domäne
hinzufügen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblemebeimEinrichtendereMailBenachrich_F3D5/image_thumb_4.png" width="885" height="180"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Bei mir bestand dann noch das Problem, dass das Profil für meinen User nicht sauber
durch den Import aktualisiert wurde. Nachdem ich den User aus der entsprechenden Site
entfernt und neu hinzugefügt hatte, hat es problemlos funktioniert und ich kann jetzt
meine Alerts problemlos einrichten und bin immer auf dem Laufenden was den Inhalt
meiner SharePoint-Listen anbelangt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7e811c18-808d-4102-a2a0-6e371bf18d79" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7e811c18-808d-4102-a2a0-6e371bf18d79.aspx</comments>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=53657580-c799-4371-aca1-b47169364af5</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,53657580-c799-4371-aca1-b47169364af5.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=53657580-c799-4371-aca1-b47169364af5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit TFS 2010 kommen nun endlich hierarchische Workitem Queries und erfreulicherweise
lassen diese sich auch im SharePoint Portal schön darstellen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_1.png" width="788" height="412" />
          </a>
        </p>
        <p>
Was mich an der Geschichte nur etwas gestört hat, dass ist, dass die Hierarchie nach
dem Laden immer vollständig aufgeklappt ist. Es gibt zwar einen Button “Collapse All”
aber den dann immer extra zu drücken um erst mal einen Überblick zu bekommen, ist
doch etwas lästig. Zunächst habe ich deshalb versucht die Query entsprechend anzupassen,
jedoch gibt es an dieser Stelle leider noch keinen Parameter um das einzustellen.
Für das SharePoint-Portal habe ich allerdings eine Lösung gefunden und die geht so:
</p>
        <p>
1.) Ein neues Content Web Part auf der Seite einfügen:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_3.png" width="572" height="589" />
          </a>
        </p>
        <p>
2.) Auf dem Content Editor Web Part den Source Editor starten
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_5.png" width="203" height="274" />
          </a>
        </p>
        <p>
3.) Hier folgendes Script eintragen:
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum1"> 1:</span> &lt;script
language=<span style="color: #006080">"javascript"</span>&gt;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum2"> 2:</span>
              <span style="color: #0000ff">function</span> collapseQuery() </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum3"> 3:</span> { </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum4"> 4:</span> _ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00.tryToggle(<span style="color: #0000ff">false</span>, <span style="color: #0000ff">true</span>);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum5"> 5:</span> }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum6"> 6:</span>  </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum7"> 7:</span> WPSC.RegisterForEvent(<span style="color: #006080">"urn:schemas-microsoft-com:dhtml"</span>,<span style="color: #006080">"onload"</span>,collapseQuery);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum8"> 8:</span> &lt;/script&gt;</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_6.png" width="480" height="169" />
          </a>
        </p>
        <p>
Die ID des Webparts (_ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00) lässt
sich relativ einfach im HTML-Source der Seite ermitteln (z.B. IE 8 F12 drücken um
in die Developer Tools zu gelangen). Hier kann man dann über Find / Select Element
by Click durch Anklicken des WebParts die Stelle im Code einfach finden und die ID
zu ermitteln. Zu beachten ist dabei, dass das die ID des Controls etwas anders lautet
als das WebPart selbts, so muss am Anfang ein _ stehen und das Control auf _ctl00
enden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_16.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_7.png" width="707" height="388" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=53657580-c799-4371-aca1-b47169364af5" />
      </body>
      <title>Hierarchische Work Item Queries im TFS 2010 SharePoint Portal automatisch einklappen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,53657580-c799-4371-aca1-b47169364af5.aspx</link>
      <pubDate>Thu, 04 Feb 2010 14:41:07 GMT</pubDate>
      <description>&lt;p&gt;
Mit TFS 2010 kommen nun endlich hierarchische Workitem Queries und erfreulicherweise
lassen diese sich auch im SharePoint Portal schön darstellen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_1.png" width="788" height="412"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Was mich an der Geschichte nur etwas gestört hat, dass ist, dass die Hierarchie nach
dem Laden immer vollständig aufgeklappt ist. Es gibt zwar einen Button “Collapse All”
aber den dann immer extra zu drücken um erst mal einen Überblick zu bekommen, ist
doch etwas lästig. Zunächst habe ich deshalb versucht die Query entsprechend anzupassen,
jedoch gibt es an dieser Stelle leider noch keinen Parameter um das einzustellen.
Für das SharePoint-Portal habe ich allerdings eine Lösung gefunden und die geht so:
&lt;/p&gt;
&lt;p&gt;
1.) Ein neues Content Web Part auf der Seite einfügen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_3.png" width="572" height="589"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2.) Auf dem Content Editor Web Part den Source Editor starten
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_5.png" width="203" height="274"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3.) Hier folgendes Script eintragen:
&lt;/p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; &amp;lt;script
language=&lt;span style="color: #006080"&gt;"javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; collapseQuery() &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; { &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; _ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00.tryToggle(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt; 7:&lt;/span&gt; WPSC.RegisterForEvent(&lt;span style="color: #006080"&gt;"urn:schemas-microsoft-com:dhtml"&lt;/span&gt;,&lt;span style="color: #006080"&gt;"onload"&lt;/span&gt;,collapseQuery);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt; 8:&lt;/span&gt; &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_6.png" width="480" height="169"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Die ID des Webparts (_ctl00_m_g_1409303e_8eb2_4dc3_80b0_822628dfcc28_ctl00) lässt
sich relativ einfach im HTML-Source der Seite ermitteln (z.B. IE 8 F12 drücken um
in die Developer Tools zu gelangen). Hier kann man dann über Find / Select Element
by Click durch Anklicken des WebParts die Stelle im Code einfach finden und die ID
zu ermitteln. Zu beachten ist dabei, dass das die ID des Controls etwas anders lautet
als das WebPart selbts, so muss am Anfang ein _ stehen und das Control auf _ctl00
enden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HierarchischeWorkItemQueriesimTFS2010Sha_DB6B/image_thumb_7.png" width="707" height="388"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=53657580-c799-4371-aca1-b47169364af5" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,53657580-c799-4371-aca1-b47169364af5.aspx</comments>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8ad86d18-0e69-4935-98fe-652a05df7ed4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8ad86d18-0e69-4935-98fe-652a05df7ed4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem TFS 2010 ist es nun möglich, denn Application-Tier über einen NLB-Cluster
zu betreiben. Damit kann man Ausfallsicherheit und Load-Balancing für den App-Tier
erreichen. Mit einem SQL-Cluster als Data-Tier skaliert der TFS nun sehr schön, sowohl
in Punkte Performance als auch in Bezug auf die Ausfallsicherheit.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb.png" width="321" height="269" />
          </a>
        </p>
        <p>
Nun liegt es natürlich nahe, die Reporting Services ebenfalls über den NLB zu betreiben,
was an sich auch kein Problem ist. Man muss nur ein paar Einstellungen vornehmen.
So hats bei mir funktioniert:
</p>
        <p>
1.) Das Scale-out Deployment für die Reporting-Services auf beiden Servern aktivieren
(setzt SSRS Enterprise voraus)
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_1.png" width="485" height="345" />
          </a>
        </p>
        <p>
2.) Die Web Service URL auf die IP-Adresse des NLB einstellen
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_2.png" width="482" height="345" />
          </a>
        </p>
        <p>
3.) In der TFS Admin Console die Reporting Services über den NLB registrieren. Das
hat bei mir nur über die IP-Adresse funktioniert, nicht über den Namen. Da muss ich
bei Gelegenheit mal danach schauen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_3.png" width="307" height="379" />
          </a>
        </p>
        <p>
4.) In der Datei C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\rsreportserver.config unter &lt;Service&gt; folgendes Tag einfügen:
</p>
        <p>
&lt;Hostname&gt;sartfsnlb01&lt;/Hostname&gt;
</p>
        <p>
5.) In der Web.config unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\ und unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportManager\ im Abschnitt &lt;system.web&gt; folgenden Tag einfügen:
</p>
        <p>
&lt;machineKey validationKey="627BF72BB33AA8D28CA2C3E80920BA4DF0B726F97EEFBB0F4818350D63E6AFA380811F13ED1F086E386284654DB3DAF676707464EEB73EBF79858F477D8E4F5C"<br />
decryptionKey="F40B6E5A02B29A181D2D213B5ED8F50B73CFCFD0CC56E137" validation="SHA1"
/&gt;
</p>
        <p>
Achtung die Parameterwerte dürfen nuicht umgebrochen werden. Einen eigenen Key kann
man sich einfach unter <a href="http://aspnetresources.com/tools/keycreator.aspx">http://aspnetresources.com/tools/keycreator.aspx</a> generieren
lassen.
</p>
        <p>
6.) Reporting Srevices neu starten.
</p>
        <p>
7.) Nun werden bei einem Ausfall eines App-Tiers alle Reporting-Anfragen über den
anderen App-Tier abgewickelt, der Anwender merkt davon nichts außer dass es beim ersten
Zugriff nach dem Ausfall ein wenig länger dauert.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8ad86d18-0e69-4935-98fe-652a05df7ed4" />
      </body>
      <title>Reporting Services &amp;uuml;ber einen NLB-Cluster betreiben</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</link>
      <pubDate>Sat, 07 Nov 2009 10:42:05 GMT</pubDate>
      <description>&lt;p&gt;
Mit dem TFS 2010 ist es nun möglich, denn Application-Tier über einen NLB-Cluster
zu betreiben. Damit kann man Ausfallsicherheit und Load-Balancing für den App-Tier
erreichen. Mit einem SQL-Cluster als Data-Tier skaliert der TFS nun sehr schön, sowohl
in Punkte Performance als auch in Bezug auf die Ausfallsicherheit.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb.png" width="321" height="269"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Nun liegt es natürlich nahe, die Reporting Services ebenfalls über den NLB zu betreiben,
was an sich auch kein Problem ist. Man muss nur ein paar Einstellungen vornehmen.
So hats bei mir funktioniert:
&lt;/p&gt;
&lt;p&gt;
1.) Das Scale-out Deployment für die Reporting-Services auf beiden Servern aktivieren
(setzt SSRS Enterprise voraus)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_1.png" width="485" height="345"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2.) Die Web Service URL auf die IP-Adresse des NLB einstellen
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_2.png" width="482" height="345"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3.) In der TFS Admin Console die Reporting Services über den NLB registrieren. Das
hat bei mir nur über die IP-Adresse funktioniert, nicht über den Namen. Da muss ich
bei Gelegenheit mal danach schauen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ReportingServicesbereinenNLBClusterbetre_A40A/image_thumb_3.png" width="307" height="379"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
4.) In der Datei C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\rsreportserver.config unter &amp;lt;Service&amp;gt; folgendes Tag einfügen:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Hostname&amp;gt;sartfsnlb01&amp;lt;/Hostname&amp;gt;
&lt;/p&gt;
&lt;p&gt;
5.) In der Web.config unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportServer\ und unter C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting
Services\ReportManager\ im Abschnitt &amp;lt;system.web&amp;gt; folgenden Tag einfügen:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;machineKey validationKey="627BF72BB33AA8D28CA2C3E80920BA4DF0B726F97EEFBB0F4818350D63E6AFA380811F13ED1F086E386284654DB3DAF676707464EEB73EBF79858F477D8E4F5C"&lt;br&gt;
decryptionKey="F40B6E5A02B29A181D2D213B5ED8F50B73CFCFD0CC56E137" validation="SHA1"
/&amp;gt;
&lt;/p&gt;
&lt;p&gt;
Achtung die Parameterwerte dürfen nuicht umgebrochen werden. Einen eigenen Key kann
man sich einfach unter &lt;a href="http://aspnetresources.com/tools/keycreator.aspx"&gt;http://aspnetresources.com/tools/keycreator.aspx&lt;/a&gt; generieren
lassen.
&lt;/p&gt;
&lt;p&gt;
6.) Reporting Srevices neu starten.
&lt;/p&gt;
&lt;p&gt;
7.) Nun werden bei einem Ausfall eines App-Tiers alle Reporting-Anfragen über den
anderen App-Tier abgewickelt, der Anwender merkt davon nichts außer dass es beim ersten
Zugriff nach dem Ausfall ein wenig länger dauert.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8ad86d18-0e69-4935-98fe-652a05df7ed4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8ad86d18-0e69-4935-98fe-652a05df7ed4.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f7a0b11f-c175-455b-b5a1-92c7431d632b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f7a0b11f-c175-455b-b5a1-92c7431d632b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dieses Jahr ist nach längerer Zeit die TechEd, die wichtigste Microsoft-Konferenz
in Europa, wieder in Deutschland, genauer gesagt vom 09.Nov – 13. Nov in Berlin. Ich
werde dort als ATE (Ask the Experts) zum Thema Visual Studio ALM vertreten sien und
darüber hinaus mit Christian Binder und Neno Loje ein Q&amp;A Session zu den Themen
TFS, ALM und Visual Studio 2010 zu machen. Die Session wird in Deutsch sein, also
wenn ihr Fragen rund um den Themenbereich habt, besucht unsere Q&amp;A-Session. Soviel
geballtes Wissen auf einmal gibts nicht so bald wieder :-)
</p>
        <p>
Visual Studio Team Foundation Server Q&amp;A<br />
Mittwoch, 11. November<br />
14:00 – 15:00 Uhr<br />
Community Stage im Zentrum der Ausstellung Halle 4.2
</p>
        <p>
          <img src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/TechEd2009BerlinVisualStudioTeamFoundati_A9AC/clip_image002_2.gif" width="312" height="193" />
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f7a0b11f-c175-455b-b5a1-92c7431d632b" />
      </body>
      <title>TechEd in Berlin</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</link>
      <pubDate>Sat, 07 Nov 2009 07:15:43 GMT</pubDate>
      <description>&lt;p&gt;
Dieses Jahr ist nach längerer Zeit die TechEd, die wichtigste Microsoft-Konferenz
in Europa, wieder in Deutschland, genauer gesagt vom 09.Nov – 13. Nov in Berlin. Ich
werde dort als ATE (Ask the Experts) zum Thema Visual Studio ALM vertreten sien und
darüber hinaus mit Christian Binder und Neno Loje ein Q&amp;amp;A Session zu den Themen
TFS, ALM und Visual Studio 2010 zu machen. Die Session wird in Deutsch sein, also
wenn ihr Fragen rund um den Themenbereich habt, besucht unsere Q&amp;amp;A-Session. Soviel
geballtes Wissen auf einmal gibts nicht so bald wieder :-)
&lt;/p&gt;
&lt;p&gt;
Visual Studio Team Foundation Server Q&amp;amp;A&lt;br&gt;
Mittwoch, 11. November&lt;br&gt;
14:00 – 15:00 Uhr&lt;br&gt;
Community Stage im Zentrum der Ausstellung Halle 4.2
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/TechEd2009BerlinVisualStudioTeamFoundati_A9AC/clip_image002_2.gif" width="312" height="193"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f7a0b11f-c175-455b-b5a1-92c7431d632b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f7a0b11f-c175-455b-b5a1-92c7431d632b.aspx</comments>
      <category>Vorträge</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=00c085bb-b95a-4ef0-895a-3aa0570c4eba</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=00c085bb-b95a-4ef0-895a-3aa0570c4eba</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hype-V ist ein klasse Virtualisierungssystem das vor allem in der neuesten Version
eine Reihe nützlicher Funktionen mitbringt. Besonders hilfreich sind Snapshots mit
denen es gefahrlos möglich ist, auch auf dem Server mal was zu testen. Man kann sich
aber mit Shanpshots leicht selber überlicsten oder gar in’s Knie schießen. Deshalb
möchte ich hier ein paar Erfahrungen zum Besten geben:
</p>
        <p>
          <strong>Funktionsweise von Snapshots</strong>
        </p>
        <p>
Die Virtuellen Maschinen von Hyper-V schreiben ihre Daten in virtuelle Harddisks (VHD),
also eine Datei auf der Platte des Hosts. Wird nun ein Snapshot gemacht, passiert
vereinfach gesagt, Folgendes. Die VHD-Datei wird schreibgeschützt, so dass daran keine
Änderungen mehr vorgenommen werden können. Statt dessen wird nun eine AVHD-Datei angelegt
und alle Änderungen auf der Platte der VM werden nun dort hineingeschrieben. Wird
erneut ein Snapshot erstellt, wird die AVHD gesperrt und eine weitere angelegt.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_thumb.png" width="602" height="78" />
          </a>
        </p>
        <p>
Dies hat nun zweierlei Folgen:
</p>
        <ol>
          <li>
Je mehr Snapshots erstellt werden, desto langsamer wird der Zugriff auf die virtuelle
Disk, da Hyper-V ja aus der VHD und den verschiedenen AVHDs nun die Daten zusammensammeln
muss.</li>
          <li>
Nur die VHD und alle AVHDs zusammen ergeben den aktuellen Stand der virtuellen Disk,
mit der VHD alleine hat man nur den Stand vom ersten Snapshot.</li>
        </ol>
        <p>
Gerade der letzte Punkt ist beim Verschienen der VM oder beim Backup zu berücksichtigen,
da man hier schnell Daten verlieren kann, wenn man vergisst die AVHDs zu berücksichtigen. 
</p>
        <p>
Aus beiden oben genannten Gründen macht es Sinn, Snapshots zu löschen, sobald diese
nicht mehr gebraucht werden. Snapshots sind keine Technik zur Erstellung von Backups!
Zum löschen eines Snapshots wird dieser einfach selektiert und dann mit “Delete” gelöscht.
Aber ACHTUNG! Die Daten liegen nun immer noch in der AVHD. Erst wenn man die VM in
den Save-State fährt, beginnt Hyper-V mit einem Merge, d.h. die Änderungen der AVHDs
werden jetzt in die jeweils vorausgegangene AVHD bzw. VHD gemerged, sind alle Snapshots
gelöscht, bleibt nur noch die VHD übrig.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_thumb_1.png" width="618" height="383" />
          </a>
        </p>
        <p>
Erst nach Abschluss des Merge-Vorgangs erhält man durch eine Kopie der VHD eine komplette
Sicherung der virtuellen Disk der VM. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=00c085bb-b95a-4ef0-895a-3aa0570c4eba" />
      </body>
      <title>Hyper-V Snapshots</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</link>
      <pubDate>Mon, 02 Nov 2009 20:12:19 GMT</pubDate>
      <description>&lt;p&gt;
Hype-V ist ein klasse Virtualisierungssystem das vor allem in der neuesten Version
eine Reihe nützlicher Funktionen mitbringt. Besonders hilfreich sind Snapshots mit
denen es gefahrlos möglich ist, auch auf dem Server mal was zu testen. Man kann sich
aber mit Shanpshots leicht selber überlicsten oder gar in’s Knie schießen. Deshalb
möchte ich hier ein paar Erfahrungen zum Besten geben:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Funktionsweise von Snapshots&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Die Virtuellen Maschinen von Hyper-V schreiben ihre Daten in virtuelle Harddisks (VHD),
also eine Datei auf der Platte des Hosts. Wird nun ein Snapshot gemacht, passiert
vereinfach gesagt, Folgendes. Die VHD-Datei wird schreibgeschützt, so dass daran keine
Änderungen mehr vorgenommen werden können. Statt dessen wird nun eine AVHD-Datei angelegt
und alle Änderungen auf der Platte der VM werden nun dort hineingeschrieben. Wird
erneut ein Snapshot erstellt, wird die AVHD gesperrt und eine weitere angelegt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_thumb.png" width="602" height="78"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Dies hat nun zweierlei Folgen:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Je mehr Snapshots erstellt werden, desto langsamer wird der Zugriff auf die virtuelle
Disk, da Hyper-V ja aus der VHD und den verschiedenen AVHDs nun die Daten zusammensammeln
muss.&lt;/li&gt;
&lt;li&gt;
Nur die VHD und alle AVHDs zusammen ergeben den aktuellen Stand der virtuellen Disk,
mit der VHD alleine hat man nur den Stand vom ersten Snapshot.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Gerade der letzte Punkt ist beim Verschienen der VM oder beim Backup zu berücksichtigen,
da man hier schnell Daten verlieren kann, wenn man vergisst die AVHDs zu berücksichtigen. 
&lt;/p&gt;
&lt;p&gt;
Aus beiden oben genannten Gründen macht es Sinn, Snapshots zu löschen, sobald diese
nicht mehr gebraucht werden. Snapshots sind keine Technik zur Erstellung von Backups!
Zum löschen eines Snapshots wird dieser einfach selektiert und dann mit “Delete” gelöscht.
Aber ACHTUNG! Die Daten liegen nun immer noch in der AVHD. Erst wenn man die VM in
den Save-State fährt, beginnt Hyper-V mit einem Merge, d.h. die Änderungen der AVHDs
werden jetzt in die jeweils vorausgegangene AVHD bzw. VHD gemerged, sind alle Snapshots
gelöscht, bleibt nur noch die VHD übrig.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/HyperVSnapshots_129AD/image_thumb_1.png" width="618" height="383"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Erst nach Abschluss des Merge-Vorgangs erhält man durch eine Kopie der VHD eine komplette
Sicherung der virtuellen Disk der VM. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=00c085bb-b95a-4ef0-895a-3aa0570c4eba" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,00c085bb-b95a-4ef0-895a-3aa0570c4eba.aspx</comments>
      <category>Tipps und Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6ea65198-bafd-4e34-9040-4a639af3c134</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6ea65198-bafd-4e34-9040-4a639af3c134</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_thumb.png" width="524" height="102" />
          </a> 
</p>
        <p>
Die <a href="http://www.dotnet-ulm.de/">.net Developer Group Ulm</a> bietet am 27.10.2009
eine kostenlose Ganztagesveranstaltung rund um Visual Studio 2010 ALM (vormals VSTS
2010). Die Nachfrage für diese Veranstaltung ist so hoch, dass wir uns entschieden
haben, die Veranstaltung am 26. November nochmals mit gleichen Sprechern und gleichem
Inhalt zu wiederholen. Wer also noch Interesse hat, sollte sich bald möglichst unter <a href="http://www.dotnet-ulm.de/vsts2010/">http://www.dotnet-ulm.de/vsts2010/</a> registrieren,
wir haben noch ein paar Plätze frei.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6ea65198-bafd-4e34-9040-4a639af3c134" />
      </body>
      <title>Zweiter Termin f&amp;uuml;r VSTS 2010 Info-Day bei der .net Developer Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</link>
      <pubDate>Fri, 23 Oct 2009 13:59:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ZweiterTerminfrVSTS.netDeveloperGroupUlm_E050/image_thumb.png" width="524" height="102"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Die &lt;a href="http://www.dotnet-ulm.de/"&gt;.net Developer Group Ulm&lt;/a&gt; bietet am 27.10.2009
eine kostenlose Ganztagesveranstaltung rund um Visual Studio 2010 ALM (vormals VSTS
2010). Die Nachfrage für diese Veranstaltung ist so hoch, dass wir uns entschieden
haben, die Veranstaltung am 26. November nochmals mit gleichen Sprechern und gleichem
Inhalt zu wiederholen. Wer also noch Interesse hat, sollte sich bald möglichst unter &lt;a href="http://www.dotnet-ulm.de/vsts2010/"&gt;http://www.dotnet-ulm.de/vsts2010/&lt;/a&gt; registrieren,
wir haben noch ein paar Plätze frei.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6ea65198-bafd-4e34-9040-4a639af3c134" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6ea65198-bafd-4e34-9040-4a639af3c134.aspx</comments>
      <category>Usergroup</category>
      <category>Vorträge</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=ace09a2b-9ce8-480a-bb2a-d7443f9e811d</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=ace09a2b-9ce8-480a-bb2a-d7443f9e811d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_4.png">
            <img title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_thumb_1.png" width="613" height="470" />
          </a>
        </p>
        <p>
          <a href="http://blogs.msdn.com/cbinder">Christian</a> zeigt in einem schönenn Blog-Beitrag
wie einfach sich der TFS Basic installieren lässt (sogar auf einem Client-Betriebssystem)
und wie schnell und einfach damit der Einstieg in die Versionsverwaltung und das Workitem-Tracking
gelingt. Da kann nun wirklich jeder diese Features nutzen, auch Solo-Entwickler.
</p>
        <p>
          <a href="http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx">http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ace09a2b-9ce8-480a-bb2a-d7443f9e811d" />
      </body>
      <title>TFS Basic auf dem Client betreiben</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</link>
      <pubDate>Tue, 20 Oct 2009 06:41:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_4.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/cbinder/WindowsLiveWriter/VS2010Beta2WieaufwndigistesTFSaufWIN7zui_5DBE/image_thumb_1.png" width="613" height="470"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cbinder"&gt;Christian&lt;/a&gt; zeigt in einem schönenn Blog-Beitrag
wie einfach sich der TFS Basic installieren lässt (sogar auf einem Client-Betriebssystem)
und wie schnell und einfach damit der Einstieg in die Versionsverwaltung und das Workitem-Tracking
gelingt. Da kann nun wirklich jeder diese Features nutzen, auch Solo-Entwickler.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx"&gt;http://blogs.msdn.com/cbinder/archive/2009/10/19/vs2010-beta2-f-r-einsteiger-tfs-auf-win7-installieren-und-version-control-plus-bug-tracking-nutzen.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=ace09a2b-9ce8-480a-bb2a-d7443f9e811d" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,ace09a2b-9ce8-480a-bb2a-d7443f9e811d.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f6a6d664-e1db-4a09-aac2-23183eb42cfe</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f6a6d664-e1db-4a09-aac2-23183eb42cfe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <span style="line-height: 115%; font-family: 'Arial','sans-serif'; font-size: 10pt">
            <a title="Download Visual Studio 2010 Beta 2" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx">
              <img style="width: 602px; height: 163px" border="0" src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg" width="602" height="163" mce_src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg" />
            </a>
          </span>
        </p>
        <p>
Die Beta 2 von Visual Studio 2010 ist nun für MSDN Subscribers verfügbar, für alle
anderen wird es noch bis Mittwoch dauern. Es gibt eine reihe von wichtigen Änderungen
die Microsoft mit Visual Studio 2010 ankündigt:
</p>
        <ul>
          <li>
Es gibt eine abgespeckte Version von TFS (TFS Basic) die auch auf Client-Betriebssystemen
installiert werden kann. 
</li>
          <li>
TFS ist jetzt in alle versionen von Visual Studio 2010 enthalten (meines Wissen nach
nur bei denen mit MSDN) 
</li>
          <li>
Es gibt ein vereinfachtes Modell der Produkt SKUs (Editionen) 
</li>
          <li>
Neues Logo (siehe oben)</li>
        </ul>
        <p>
Was ich persönlich schade finde: Die Bezeichnung “Team System” verschwindet, es gibt
nun nur noch 
</p>
        <ul>
          <li>
Microsoft® Visual Studio® 2010 Express 
</li>
          <li>
Microsoft® Visual Studio® 2010 Professional 
</li>
          <li>
Microsoft® Visual Studio® 2010 Professional with MSDN 
</li>
          <li>
Microsoft® Visual Studio® 2010 Premium with MSDN 
</li>
          <li>
Microsoft® Visual Studio® 2010 Ultimate with MSDN 
</li>
          <li>
Microsoft® Visual Studio® Test Elements 2010 with MSDN 
</li>
          <li>
Microsoft® Visual Studio® Team Foundation Server 2010 
</li>
          <li>
Microsoft® Visual Studio® Team Lab Management 2010 
</li>
          <li>
Microsoft® Visual Studio® Load Test Virtual User Pack 2010</li>
        </ul>
        <p>
Positiv ist aber, dass die Beta 2 eine Go-Live-Lizenz enthält. Der Launch-Termin wirde
von Microsoft für den 22. März 2010 angekündigt.
</p>
        <p>
          <a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx">http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f6a6d664-e1db-4a09-aac2-23183eb42cfe" />
      </body>
      <title>Visual Studio 2010 Beta 2 verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</link>
      <pubDate>Mon, 19 Oct 2009 17:00:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span style="line-height: 115%; font-family: 'Arial','sans-serif'; font-size: 10pt"&gt;&lt;a title="Download Visual Studio 2010 Beta 2" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;&lt;img style="width: 602px; height: 163px" border="0" src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg" width="602" height="163" mce_src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg"&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Die Beta 2 von Visual Studio 2010 ist nun für MSDN Subscribers verfügbar, für alle
anderen wird es noch bis Mittwoch dauern. Es gibt eine reihe von wichtigen Änderungen
die Microsoft mit Visual Studio 2010 ankündigt:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Es gibt eine abgespeckte Version von TFS (TFS Basic) die auch auf Client-Betriebssystemen
installiert werden kann. 
&lt;li&gt;
TFS ist jetzt in alle versionen von Visual Studio 2010 enthalten (meines Wissen nach
nur bei denen mit MSDN) 
&lt;li&gt;
Es gibt ein vereinfachtes Modell der Produkt SKUs (Editionen) 
&lt;li&gt;
Neues Logo (siehe oben)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Was ich persönlich schade finde: Die Bezeichnung “Team System” verschwindet, es gibt
nun nur noch 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Microsoft® Visual Studio® 2010 Express 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Professional 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Professional with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Premium with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® 2010 Ultimate with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® Test Elements 2010 with MSDN 
&lt;li&gt;
Microsoft® Visual Studio® Team Foundation Server 2010 
&lt;li&gt;
Microsoft® Visual Studio® Team Lab Management 2010 
&lt;li&gt;
Microsoft® Visual Studio® Load Test Virtual User Pack 2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Positiv ist aber, dass die Beta 2 eine Go-Live-Lizenz enthält. Der Launch-Termin wirde
von Microsoft für den 22. März 2010 angekündigt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f6a6d664-e1db-4a09-aac2-23183eb42cfe" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f6a6d664-e1db-4a09-aac2-23183eb42cfe.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=9144595b-c0e1-49bd-b682-21f35897ab0b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9144595b-c0e1-49bd-b682-21f35897ab0b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In Expression Blend gibt es ein cooles Feature, mit dem Beispieldaten für Databinding
erzeugt werden können. Damit können beispielsweise Listboxen etc. mit Daten befüllt
werden um z.B. DataTemplates im Designer testen zu können.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_thumb.png" width="725" height="452" />
          </a>
        </p>
        <p>
Und auch bei der Ausführung der Anwendung stehen die Daten zur Verfügung. Damit können
schnell und einfach Oberflächenprototypen erstellt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_thumb_1.png" width="422" height="385" />
          </a>
        </p>
        <p>
Eine detaillierte Beschreibung der Funktion findet sich <a href="http://silverzine.com/tutorials/how-to-create-sample-data-in-blend-3/">hier</a>.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9144595b-c0e1-49bd-b682-21f35897ab0b" />
      </body>
      <title>Beispieldaten f&amp;uuml;r Databinding in Expression Blend erzeugen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</link>
      <pubDate>Thu, 15 Oct 2009 21:55:32 GMT</pubDate>
      <description>&lt;p&gt;
In Expression Blend gibt es ein cooles Feature, mit dem Beispieldaten für Databinding
erzeugt werden können. Damit können beispielsweise Listboxen etc. mit Daten befüllt
werden um z.B. DataTemplates im Designer testen zu können.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_thumb.png" width="725" height="452"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Und auch bei der Ausführung der Anwendung stehen die Daten zur Verfügung. Damit können
schnell und einfach Oberflächenprototypen erstellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/BeispieldatenfrDatabindinginExpressionBl_14FEC/image_thumb_1.png" width="422" height="385"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Eine detaillierte Beschreibung der Funktion findet sich &lt;a href="http://silverzine.com/tutorials/how-to-create-sample-data-in-blend-3/"&gt;hier&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9144595b-c0e1-49bd-b682-21f35897ab0b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,9144595b-c0e1-49bd-b682-21f35897ab0b.aspx</comments>
      <category>WPF / Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4c1d1396-b991-40d3-b250-545d929663af</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4c1d1396-b991-40d3-b250-545d929663af</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_thumb.png" width="664" height="150" />
          </a>
        </p>
        <p>
Auf der diesjährigen ADC hatte ich zwei Vorträge:
</p>
        <ul>
          <li>
            <a href="http://tvt8uq.blu.livefilestore.com/y1pVrYyT8NiRVqhgojr46B0pZM1oHVGL1kknHtwY86fNx3BOqF3AJHj7rXclzg0wA0R_bWDsRAsbyWhtQq_bWbvrw/ADC09%20-%20Effektive%20Prozesse%20durch%20Architektur.pptx?download">Effektive
Prozesse durch Architektur</a>
          </li>
          <li>
            <a href="http://tvt8uq.blu.livefilestore.com/y1pY_unGSIlxvqIIhWcJ4MXWY0_xffVmG1_Obw6PbQAHNUKo0fYLzq-M5_bAoNpiSEMEPpWQGMBR7JB5uSoRMUcoQ/Team%20Organisation3.mmap?download">Organisation
von Entwicklerteams</a>
          </li>
        </ul>
        <p>
Zu beiden Vorträgen gibt es die Unterlagen über den jeweiligen obenstehenden Link.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4c1d1396-b991-40d3-b250-545d929663af" />
      </body>
      <title>Advanced Developer Conference in Bonn</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</link>
      <pubDate>Wed, 14 Oct 2009 22:07:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AdvancedDeveloperConferenceinBonn_141/image_thumb.png" width="664" height="150"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Auf der diesjährigen ADC hatte ich zwei Vorträge:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://tvt8uq.blu.livefilestore.com/y1pVrYyT8NiRVqhgojr46B0pZM1oHVGL1kknHtwY86fNx3BOqF3AJHj7rXclzg0wA0R_bWDsRAsbyWhtQq_bWbvrw/ADC09%20-%20Effektive%20Prozesse%20durch%20Architektur.pptx?download"&gt;Effektive
Prozesse durch Architektur&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://tvt8uq.blu.livefilestore.com/y1pY_unGSIlxvqIIhWcJ4MXWY0_xffVmG1_Obw6PbQAHNUKo0fYLzq-M5_bAoNpiSEMEPpWQGMBR7JB5uSoRMUcoQ/Team%20Organisation3.mmap?download"&gt;Organisation
von Entwicklerteams&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Zu beiden Vorträgen gibt es die Unterlagen über den jeweiligen obenstehenden Link.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4c1d1396-b991-40d3-b250-545d929663af" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4c1d1396-b991-40d3-b250-545d929663af.aspx</comments>
      <category>Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=0925f337-10ae-4d31-ac59-64731aa0ff97</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=0925f337-10ae-4d31-ac59-64731aa0ff97</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hat man eine Query die zwei Spalten mit dem gleichen Namen enthält, dann mekert der
Reporting Services Designer “The query contains more than one unnamed or duplicated
field name. Please specify unique column aliases.” 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_thumb.png" width="377" height="114" />
          </a>
        </p>
        <p>
In der MDX-Abfrage Aliase zu vergeben ist mir nicht gelungen. Glücklicherweise gibt
es aber einen einfacheren Weg das Problem zu lösen. Man geht einfach in die Eigenschaften
des Datasets und dort auf “Fields”. Hier kann man nun einfach einen eindeutigen Alias
angeben.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_thumb_1.png" width="490" height="382" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0925f337-10ae-4d31-ac59-64731aa0ff97" />
      </body>
      <title>Alias f&amp;uuml;r gleichnamige Spalten bei MDX-Abfragen in Reporting Services</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</link>
      <pubDate>Tue, 13 Oct 2009 00:38:48 GMT</pubDate>
      <description>&lt;p&gt;
Hat man eine Query die zwei Spalten mit dem gleichen Namen enthält, dann mekert der
Reporting Services Designer “The query contains more than one unnamed or duplicated
field name. Please specify unique column aliases.” 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_thumb.png" width="377" height="114"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
In der MDX-Abfrage Aliase zu vergeben ist mir nicht gelungen. Glücklicherweise gibt
es aber einen einfacheren Weg das Problem zu lösen. Man geht einfach in die Eigenschaften
des Datasets und dort auf “Fields”. Hier kann man nun einfach einen eindeutigen Alias
angeben.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/AliasfrgleichnamigeSpaltenbeiMDXAbfragen_24BA/image_thumb_1.png" width="490" height="382"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=0925f337-10ae-4d31-ac59-64731aa0ff97" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,0925f337-10ae-4d31-ac59-64731aa0ff97.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=491eeae7-9f86-429d-9030-5ccda523ef86</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=491eeae7-9f86-429d-9030-5ccda523ef86</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Oft möchte man Werte, z.B. Prozentwerte als kleine Balken in einem Report darstellen:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb.png" width="244" height="102" />
          </a>
        </p>
        <p>
Wie man das mit Hilfe der Reporting Services bewerkstelligt, ist im Folgenden kurz
beschrieben. 
</p>
        <ul>
          <li>
Zunächst erstellt man sich eine Grafik mit dem gewünschten Verlauf</li>
          <li>
Dann fügt man eine neue Spalte mit dieser Grafik in den Report ein. Der Grafik gibt
man ein günstige Breite, z.B. 100px.</li>
          <li>
Für die Grafik stellt man nun ein Padding für den rechten Rand ein und zwar über eine
Expression:</li>
        </ul>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb_1.png" width="244" height="204" />
          </a>
        </p>
        <ul>
          <li>
In der Expression gibt man nun eine Formel ein, die den rechten Rand so berechnet,
dass er bei 0 die Breite des Bildes erreicht und beim Maximalwert 0.</li>
        </ul>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb_2.png" width="466" height="424" />
          </a>
        </p>
        <ul>
          <li>
In obigem Beispiel hat das Bild eine Breite von 100pt und soll einen Maximalwert von
1.5 anzeigen, so dass bei 1.5 der Wert für das Padding 0 ist und bei 0 ist er 100
(1,5 * 75). Damit zeigt der Balken die Werte grafisch an. Auf Wunsch kann man natürlich
den Wertebereich auch min Min() und Max() ermitteln.</li>
        </ul>
        <p>
          <a href="http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx">http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=491eeae7-9f86-429d-9030-5ccda523ef86" />
      </body>
      <title>Daten als Balken in Reporting Services Konfigurieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</link>
      <pubDate>Tue, 13 Oct 2009 00:26:45 GMT</pubDate>
      <description>&lt;p&gt;
Oft möchte man Werte, z.B. Prozentwerte als kleine Balken in einem Report darstellen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb.png" width="244" height="102"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Wie man das mit Hilfe der Reporting Services bewerkstelligt, ist im Folgenden kurz
beschrieben. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Zunächst erstellt man sich eine Grafik mit dem gewünschten Verlauf&lt;/li&gt;
&lt;li&gt;
Dann fügt man eine neue Spalte mit dieser Grafik in den Report ein. Der Grafik gibt
man ein günstige Breite, z.B. 100px.&lt;/li&gt;
&lt;li&gt;
Für die Grafik stellt man nun ein Padding für den rechten Rand ein und zwar über eine
Expression:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb_1.png" width="244" height="204"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
In der Expression gibt man nun eine Formel ein, die den rechten Rand so berechnet,
dass er bei 0 die Breite des Bildes erreicht und beim Maximalwert 0.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/DatenalsBalkeninReportingServicesKonfigu_21E7/image_thumb_2.png" width="466" height="424"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
In obigem Beispiel hat das Bild eine Breite von 100pt und soll einen Maximalwert von
1.5 anzeigen, so dass bei 1.5 der Wert für das Padding 0 ist und bei 0 ist er 100
(1,5 * 75). Damit zeigt der Balken die Werte grafisch an. Auf Wunsch kann man natürlich
den Wertebereich auch min Min() und Max() ermitteln.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx"&gt;http://blogs.msdn.com/bobmeyers/archive/2005/10/15/481342.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=491eeae7-9f86-429d-9030-5ccda523ef86" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,491eeae7-9f86-429d-9030-5ccda523ef86.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e8b7ec65-7928-4aa0-8c85-67ecb405c54e</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e8b7ec65-7928-4aa0-8c85-67ecb405c54e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Meinem SQL-Server kam bei einer meiner Datenbank-Tabellen was supekt vor jedenfalls
zeigte er in Klammern hinter der Tabelle ein (Suspect) an und ich konnte auf die Tabelle
nicht mehr zugreifen. Ärgerlich war, dass es sich dabei um die Config-Datenbenk meines
SharePoint-Servers handelte und damit mein kompletter SharePoint-Srever lahm gelegt
war. Glücklicherweise fand ich ein kleines Script, das das Problem in Sekunden behoben
hat.
</p>
        <p>
          <span style="color: #ff0000">
            <em>
              <font color="#0000a0">EXEC sp_resetstatus 'DBname'<br /><br />
ALTER DATABASE DBname SET EMERGENCY<br /><br />
DBCC checkdb('DBname')<br /><br />
ALTER DATABASE DBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE<br /><br />
DBCC CheckDB ('DBname', REPAIR_ALLOW_DATA_LOSS)<br /><br />
ALTER DATABASE DBname SET MULTI_USER</font>
            </em>
          </span>
          <br />
          <br />
Dort habe ich einfach meinen Datenbanknamen entsprechend eingesetzt und schon lief
der SharePoint wieder. Vielen Dank an der Stelle an Mohamad.
</p>
        <p>
          <a href="http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html">http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e8b7ec65-7928-4aa0-8c85-67ecb405c54e" />
      </body>
      <title>Datenbanktabelle Suspect</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</link>
      <pubDate>Mon, 12 Oct 2009 06:31:01 GMT</pubDate>
      <description>&lt;p&gt;
Meinem SQL-Server kam bei einer meiner Datenbank-Tabellen was supekt vor jedenfalls
zeigte er in Klammern hinter der Tabelle ein (Suspect) an und ich konnte auf die Tabelle
nicht mehr zugreifen. Ärgerlich war, dass es sich dabei um die Config-Datenbenk meines
SharePoint-Servers handelte und damit mein kompletter SharePoint-Srever lahm gelegt
war. Glücklicherweise fand ich ein kleines Script, das das Problem in Sekunden behoben
hat.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color: #ff0000"&gt;&lt;em&gt;&lt;font color="#0000a0"&gt;EXEC sp_resetstatus 'DBname'&lt;br&gt;
&lt;br&gt;
ALTER DATABASE DBname SET EMERGENCY&lt;br&gt;
&lt;br&gt;
DBCC checkdb('DBname')&lt;br&gt;
&lt;br&gt;
ALTER DATABASE DBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE&lt;br&gt;
&lt;br&gt;
DBCC CheckDB ('DBname', REPAIR_ALLOW_DATA_LOSS)&lt;br&gt;
&lt;br&gt;
ALTER DATABASE DBname SET MULTI_USER&lt;/font&gt;&lt;/em&gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
Dort habe ich einfach meinen Datenbanknamen entsprechend eingesetzt und schon lief
der SharePoint wieder. Vielen Dank an der Stelle an Mohamad.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html"&gt;http://mshehadeh.blogspot.com/2007/09/restoring-sql-server-2005-suspect.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e8b7ec65-7928-4aa0-8c85-67ecb405c54e" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e8b7ec65-7928-4aa0-8c85-67ecb405c54e.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit Team Foundation Server 2010 wird der TFS nun auch für kleinere Teams noch interessanter
als bisher. Es gibt eine Reihe von Vorteilen gegenüber der aktuellen Version:
</p>
        <ul>
          <li>
            <strong>Preis</strong>
            <br />
Es gibt im Moment noch keine abschließenden Informationen über das Pricing, aber voraussichtlich
wird der Preis zukünftig wohl kaum noch ein Argument sien, den TFS nicht zu nutzen.</li>
          <li>
            <strong>Systemanforderungen</strong>
            <br />
Die Anforderungen an das System sind deutlich geringer als bei TFS 2008. So kann der
TFS nun auf einem Domänen-Controller und sogar auf Client-Betriebssystemen installiert
werden. Zudem können nun einige Komponenten wie SharePoint und Reporting optional
installiert werden.</li>
          <li>
            <strong>Installation</strong>
            <br />
Der Installationsvorgang wurde deutlich vereinfacht.</li>
        </ul>
        <p>
Damit kommt Microsoft dem Slogen “ALM for the masses” einen großen Schritt näher.
</p>
        <p>
Weitere Details gibt es auf dem Blog von Brian Harry:<br /><a href="http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx">http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b" />
      </body>
      <title>TFS f&amp;uuml;r kleine Teams</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</link>
      <pubDate>Fri, 09 Oct 2009 22:45:53 GMT</pubDate>
      <description>&lt;p&gt;
Mit Team Foundation Server 2010 wird der TFS nun auch für kleinere Teams noch interessanter
als bisher. Es gibt eine Reihe von Vorteilen gegenüber der aktuellen Version:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preis&lt;/strong&gt;
&lt;br&gt;
Es gibt im Moment noch keine abschließenden Informationen über das Pricing, aber voraussichtlich
wird der Preis zukünftig wohl kaum noch ein Argument sien, den TFS nicht zu nutzen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Systemanforderungen&lt;/strong&gt;
&lt;br&gt;
Die Anforderungen an das System sind deutlich geringer als bei TFS 2008. So kann der
TFS nun auf einem Domänen-Controller und sogar auf Client-Betriebssystemen installiert
werden. Zudem können nun einige Komponenten wie SharePoint und Reporting optional
installiert werden.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installation&lt;/strong&gt;
&lt;br&gt;
Der Installationsvorgang wurde deutlich vereinfacht.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Damit kommt Microsoft dem Slogen “ALM for the masses” einen großen Schritt näher.
&lt;/p&gt;
&lt;p&gt;
Weitere Details gibt es auf dem Blog von Brian Harry:&lt;br&gt;
&lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx"&gt;http://blogs.msdn.com/bharry/archive/2009/10/01/tfs-2010-for-sourcesafe-users.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,16eae1f1-6f93-49a9-84f2-9eeb2bfa0f6b.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e71ec982-e864-4dcb-ab28-b1a6c007ee9a</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e71ec982-e864-4dcb-ab28-b1a6c007ee9a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem Work Item Type Designer (WIT Designer) können Work Item Type Definitionen
einfach und bequem angepasst werden. Der WIT Designer ist Bestandteil der <a href="http://msdn.microsoft.com/de-de/tfs2008/bb980963.aspx">TFS
Power Tools</a>. 
</p>
        <p>
Mit dem WIT Designer kann man auch die Workflows auf den Work Item Types grafisch
bearbeiten. Dazu kann man aus der Toolbox einfach neue States und Transistions auf
das Workflow-Diagramm ziehen … zumindest wenn die Toolbox Elemente enthält. Sollte
die Toolbox einmal leer sein, dann gibt es eine nicht ganz elegante aber wirksame
Methode, man löscht einfach alle toolbox*.tdb Dateien und zwar au dem Ordner 
</p>
        <p>
C:\Users\&lt;USERNAME&gt;\AppData\Local\Microsoft\VisualStudio\8.0.
</p>
        <p>
Danach erscheinen die Elemente ganz normal.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e71ec982-e864-4dcb-ab28-b1a6c007ee9a" />
      </body>
      <title>Leere Toolbox f&amp;uuml;r TFS Process Template Editor</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</link>
      <pubDate>Tue, 29 Sep 2009 15:12:01 GMT</pubDate>
      <description>&lt;p&gt;
Mit dem Work Item Type Designer (WIT Designer) können Work Item Type Definitionen
einfach und bequem angepasst werden. Der WIT Designer ist Bestandteil der &lt;a href="http://msdn.microsoft.com/de-de/tfs2008/bb980963.aspx"&gt;TFS
Power Tools&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Mit dem WIT Designer kann man auch die Workflows auf den Work Item Types grafisch
bearbeiten. Dazu kann man aus der Toolbox einfach neue States und Transistions auf
das Workflow-Diagramm ziehen … zumindest wenn die Toolbox Elemente enthält. Sollte
die Toolbox einmal leer sein, dann gibt es eine nicht ganz elegante aber wirksame
Methode, man löscht einfach alle toolbox*.tdb Dateien und zwar au dem Ordner 
&lt;/p&gt;
&lt;p&gt;
C:\Users\&amp;lt;USERNAME&amp;gt;\AppData\Local\Microsoft\VisualStudio\8.0.
&lt;/p&gt;
&lt;p&gt;
Danach erscheinen die Elemente ganz normal.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e71ec982-e864-4dcb-ab28-b1a6c007ee9a" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e71ec982-e864-4dcb-ab28-b1a6c007ee9a.aspx</comments>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=1a712560-d999-4ed2-bddf-e8a203867d35</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1a712560-d999-4ed2-bddf-e8a203867d35</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_thumb.png" width="558" height="146" />
          </a>
        </p>
        <p>
Wir haben einen neuen Nachbarn bekommen :-) 
</p>
        <p>
In Augsburg gibt es nun auch eine .net Usergroup. Diese wird von Tobias Schmid geleitet.
Damit ist nun also die Lücke zwischen München und Ulm geschlossen und ich freue mich
auf eine gute Zusammenarbeit. 
</p>
        <p>
Apropos Zusammenarbeit, ganz besonders freut es mich, dass ich am 14.10.2009 beim
Gründungstreffen einen Vortrag zum Thema “Durchgängige Entwicklungsprozesse mit Visual
Studio Team System” halten darf.
</p>
        <p>
Dann auf gute Nachbarschaft :-)
</p>
        <p>
          <a href="http://www.ug-augsburg.net/" target="_blank">http://www.ug-augsburg.net/</a>
          <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1a712560-d999-4ed2-bddf-e8a203867d35" />
        </p>
      </body>
      <title>Neue .NET Usergroup in Augsburg</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</link>
      <pubDate>Fri, 18 Sep 2009 17:22:53 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/Neue.NETUsergroupinAugsburg_11010/image_thumb.png" width="558" height="146"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Wir haben einen neuen Nachbarn bekommen :-) 
&lt;/p&gt;
&lt;p&gt;
In Augsburg gibt es nun auch eine .net Usergroup. Diese wird von Tobias Schmid geleitet.
Damit ist nun also die Lücke zwischen München und Ulm geschlossen und ich freue mich
auf eine gute Zusammenarbeit. 
&lt;/p&gt;
&lt;p&gt;
Apropos Zusammenarbeit, ganz besonders freut es mich, dass ich am 14.10.2009 beim
Gründungstreffen einen Vortrag zum Thema “Durchgängige Entwicklungsprozesse mit Visual
Studio Team System” halten darf.
&lt;/p&gt;
&lt;p&gt;
Dann auf gute Nachbarschaft :-)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.ug-augsburg.net/" target="_blank"&gt;http://www.ug-augsburg.net/&lt;/a&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1a712560-d999-4ed2-bddf-e8a203867d35" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,1a712560-d999-4ed2-bddf-e8a203867d35.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=60432774-4bef-49f4-80c0-6b358b74d6ef</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=60432774-4bef-49f4-80c0-6b358b74d6ef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Mit Martin Woodward haben wir einen der weltweit bekanntesten Team System MVPs zu
Gast der in seinem Vortrag über die neuen Möglichkeiten des Build Systems im TFS 2010
informieren wird. Dass sich beim Build in TFS2010 einiges getan hat, wird bereits
aus der Auflistung der Hauptpunkte von Martins Vortrag ersichtlich. Es wird um Private
Builds, Gated Checkins und um die neuen workflow-basierten Builddefinitionen gehen. 
</p>
        <p>
Über TSUG-VE<br />
Die Team System User Group – Virtual Edition ist eine weltweite Usergroup zum Thema
Team System. Die Treffen finden virtuell in Live Meeting statt. Weitere Informationen
gibt’s unter <a href="http://www.tsug-ve.com">http://www.tsug-ve.com</a>. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60432774-4bef-49f4-80c0-6b358b74d6ef" />
      </body>
      <title>Build Automation in TFS 2010 &amp;ndash; Vortrag bei TSUG-VE</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</link>
      <pubDate>Wed, 16 Sep 2009 07:55:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Mit Martin Woodward haben wir einen der weltweit bekanntesten Team System MVPs zu
Gast der in seinem Vortrag über die neuen Möglichkeiten des Build Systems im TFS 2010
informieren wird. Dass sich beim Build in TFS2010 einiges getan hat, wird bereits
aus der Auflistung der Hauptpunkte von Martins Vortrag ersichtlich. Es wird um Private
Builds, Gated Checkins und um die neuen workflow-basierten Builddefinitionen gehen. 
&lt;/p&gt;
&lt;p&gt;
Über TSUG-VE&lt;br&gt;
Die Team System User Group – Virtual Edition ist eine weltweite Usergroup zum Thema
Team System. Die Treffen finden virtuell in Live Meeting statt. Weitere Informationen
gibt’s unter &lt;a href="http://www.tsug-ve.com"&gt;http://www.tsug-ve.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60432774-4bef-49f4-80c0-6b358b74d6ef" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,60432774-4bef-49f4-80c0-6b358b74d6ef.aspx</comments>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=62057eac-7921-4660-9638-3140ab701ea2</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=62057eac-7921-4660-9638-3140ab701ea2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="headerImage" border="0" alt="headerImage" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_thumb.png" width="553" height="129" />
          </a>
        </p>
        <p>
Am 27.10.09 veranstaltet die .net Developer Group eine kostenlose Informationsveranstaltung
rund um Visual Studio Team System 2010. Ein Tag voll gepackt mit wertvollen Informationen
rund um die neue Version der Microsoft ALM-Plattform.
</p>
        <blockquote>
          <p>
Mit Visual Studio Team System 2010 führt Microsoft voraussichtlich Anfang nächsten
Jahres eine neue Version seiner Entwicklungsplattform ein, die mit zahlreichen Neuerungen
aufwartet. Diese neue Version wartet mit einer großen Zahl umfangreicher Neuerungen
auf wie z.B.: 
</p>
          <ul>
            <li>
Architektur-Diagramme und UML-Support 
</li>
            <li>
Erweiterte Funktionen für Test-Planung und Test-Durchführung 
</li>
            <li>
Unterstützung von UI-Tests 
</li>
            <li>
Verbesserte Verwaltung von Builds 
</li>
            <li>
Verbesserte Verwaltung von Work Items 
</li>
            <li>
Neue Reporting-Funktionen speziell für kleinere Teams 
</li>
            <li>
Und vieles mehr</li>
          </ul>
          <p>
Um diese Umfangreichen Neuerungen alle vorstellen zu können, veranstaltet die .Net
Developer-Group Ulm erstmalig einen ganztägigen Event um damit der Fülle von Funktionen
auch gerecht zu werden. Dabei werden die beiden Referenten Christian Binder (<a href="http://blogs.msdn.com/cbinder">http://blogs.msdn.com/cbinder</a>)
und Thomas Schissler (<a href="http://www.artiso.com/problog">http://www.artiso.com/problog</a>)
nicht nur die neuen Funktionen vorstellen, sondern auch aufzeigen, welche Probleme
aus dem Entwickler-Alltag damit gelöst werden können. Der Vortrag richtet sich dabei
nicht nur an Entwickler und Projektleiter die bereits mit Team System arbeiten, sondern
erläutert auch grundsätzliche Konzepte und bereits bestehenden Funktionen der Tools
Visual Studio Team System und Team Foundation Server und bietet damit auch denjenigen
einen guten Einstieg, die sich noch nicht intensiv mit Microsofts ALM-Plattform auseinandergesetzt
haben. 
</p>
        </blockquote>
        <p>
Für die Veranstaltung ist eine Registrierung erforderlich. Interessenten können sich
unter <a href="http://www.dotnet-ulm.de/vsts2010">http://www.dotnet-ulm.de/vsts2010</a> kostenlos
registrieren.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=62057eac-7921-4660-9638-3140ab701ea2" />
      </body>
      <title>Kostenloser Info-Tag zu Visual Studio Team System 2010 bei .net Developer-Group Ulm</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</link>
      <pubDate>Wed, 16 Sep 2009 07:13:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="headerImage" border="0" alt="headerImage" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserInfoTagz.netDeveloperGroupUlm_814C/headerImage_thumb.png" width="553" height="129"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Am 27.10.09 veranstaltet die .net Developer Group eine kostenlose Informationsveranstaltung
rund um Visual Studio Team System 2010. Ein Tag voll gepackt mit wertvollen Informationen
rund um die neue Version der Microsoft ALM-Plattform.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Mit Visual Studio Team System 2010 führt Microsoft voraussichtlich Anfang nächsten
Jahres eine neue Version seiner Entwicklungsplattform ein, die mit zahlreichen Neuerungen
aufwartet. Diese neue Version wartet mit einer großen Zahl umfangreicher Neuerungen
auf wie z.B.: 
&lt;ul&gt;
&lt;li&gt;
Architektur-Diagramme und UML-Support 
&lt;li&gt;
Erweiterte Funktionen für Test-Planung und Test-Durchführung 
&lt;li&gt;
Unterstützung von UI-Tests 
&lt;li&gt;
Verbesserte Verwaltung von Builds 
&lt;li&gt;
Verbesserte Verwaltung von Work Items 
&lt;li&gt;
Neue Reporting-Funktionen speziell für kleinere Teams 
&lt;li&gt;
Und vieles mehr&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Um diese Umfangreichen Neuerungen alle vorstellen zu können, veranstaltet die .Net
Developer-Group Ulm erstmalig einen ganztägigen Event um damit der Fülle von Funktionen
auch gerecht zu werden. Dabei werden die beiden Referenten Christian Binder (&lt;a href="http://blogs.msdn.com/cbinder"&gt;http://blogs.msdn.com/cbinder&lt;/a&gt;)
und Thomas Schissler (&lt;a href="http://www.artiso.com/problog"&gt;http://www.artiso.com/problog&lt;/a&gt;)
nicht nur die neuen Funktionen vorstellen, sondern auch aufzeigen, welche Probleme
aus dem Entwickler-Alltag damit gelöst werden können. Der Vortrag richtet sich dabei
nicht nur an Entwickler und Projektleiter die bereits mit Team System arbeiten, sondern
erläutert auch grundsätzliche Konzepte und bereits bestehenden Funktionen der Tools
Visual Studio Team System und Team Foundation Server und bietet damit auch denjenigen
einen guten Einstieg, die sich noch nicht intensiv mit Microsofts ALM-Plattform auseinandergesetzt
haben. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Für die Veranstaltung ist eine Registrierung erforderlich. Interessenten können sich
unter &lt;a href="http://www.dotnet-ulm.de/vsts2010"&gt;http://www.dotnet-ulm.de/vsts2010&lt;/a&gt; kostenlos
registrieren.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=62057eac-7921-4660-9638-3140ab701ea2" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,62057eac-7921-4660-9638-3140ab701ea2.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=65a4bd4a-1ae4-47cc-88a3-bad499634762</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=65a4bd4a-1ae4-47cc-88a3-bad499634762</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Beim Installieren eines Team Foundation Server 2010 Beta 1 habe ich einen Fehler TF254038
bekommen. Beim Anlegen einer SharePoint Web Application auf dem TFS hat der Wizard
behauptet ich hätte die SharePoint Extensions nicht installiert.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="170" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_thumb.png" width="394" border="0" />
          </a>
        </p>
        <p>
Ich habe für den TFS und den SharePoint Server zwei getrennte Maschinen. Das Problem
lag letztendlich darin, dass die Firewall auf der SharePoint Maschine den Zugriff
auf die SharePoint Central Administration (Port 17012) geblockt hat. Nachdem ich den
freigegeben habe, lief die Installation problemlos durch.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=65a4bd4a-1ae4-47cc-88a3-bad499634762" />
      </body>
      <title>Problem beim Installieren eines TFS 2010 Beta 1 mit einem separaten SharePoint Server</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</link>
      <pubDate>Tue, 14 Jul 2009 20:18:47 GMT</pubDate>
      <description>&lt;p&gt;
Beim Installieren eines Team Foundation Server 2010 Beta 1 habe ich einen Fehler TF254038
bekommen. Beim Anlegen einer SharePoint Web Application auf dem TFS hat der Wizard
behauptet ich hätte die SharePoint Extensions nicht installiert.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="170" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/ProblembeimInstalliereneinesTFS2010Beta1_13957/image_thumb.png" width="394" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ich habe für den TFS und den SharePoint Server zwei getrennte Maschinen. Das Problem
lag letztendlich darin, dass die Firewall auf der SharePoint Maschine den Zugriff
auf die SharePoint Central Administration (Port 17012) geblockt hat. Nachdem ich den
freigegeben habe, lief die Installation problemlos durch.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=65a4bd4a-1ae4-47cc-88a3-bad499634762" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,65a4bd4a-1ae4-47cc-88a3-bad499634762.aspx</comments>
      <category>Team System Server</category>
      <category>VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=17f081a9-c7fe-4c59-946e-ad63eacae539</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=17f081a9-c7fe-4c59-946e-ad63eacae539</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie in diesem Blog bereits an <a href="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx">anderen
Stellen</a> erläutert, eignet sich das UIA (UI Automation Framework) sehr gut, um
UI-Tests aufzubauen. Wer sich mit dieser Möglichkeit beschäftigt wird aber früher
oder später auf das Problem stoßen, dass UIA Support bei WinForms Controls nicht flächendeckend
gegeben ist, vor allem bei 3rd Party Controls sieht es da oft eher mau aus.
</p>
        <p>
Ich habe <a href="http://www.artiso.com/ProBlog/PermaLink,guid,35d09c0e-d00b-4025-b896-af96007c8a2f.aspx">hier</a> beschrieben,
wie man mit einem ServerSide Provider diese Lücken selbst schließen kann. Das Standardvorgehen
sieht dabei vor, dass man ein eigenes Control erstellt, das man dann von dem Ausgangscontrol
ableitet. Diese Vorgehen ist in der Praxis allerdings nicht unproblematisch. Zum einen
muss man die abgeleiteten Controls für jedes neue Release der Ausgangscontrols aktualisieren
und zum zweiten ist es nicht gerade schön in einer bestehenden Anwendung alle Controls
gegen die abgeleitete Variante austauschen zu müssen. 
</p>
        <p>
Deshalb möchte ich hier einen alternativen Weg vorstellen. Die Idee beruht darauf,
dass die Controls, denen es an Accesibility fehlt jeweils in ein Panel platziert werden
und auf diesem Panel dann die entsprechenden Patterns implementiert werden. Das Panel
kann die Operationen dann an das Control in seinem Bauch weiterleiten. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_thumb.png" width="439" height="241" />
          </a>
        </p>
        <p>
Ich habe mal ein Beispiel für Janus Calendar Controls gebaut. Zunächst habe ich mir
ein UIA-Panel erstellt, von dem ich dann die weiteren Panels für die spezifischen
Controls ableiten kann.
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">using</span> System;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">using</span> System.Drawing;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">using</span> System.Security.Permissions;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">using</span> System.Windows.Automation;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">using</span> System.Windows.Automation.Provider;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">using</span> System.Windows.Forms;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">namespace</span> WindowsFormsApplication1</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> UIAPanel
: Panel, IRawElementProviderSimple</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">public</span> UIAPanel()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">this</span>.BackColor
= Color.Yellow;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">this</span>.Height
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">this</span>.Width
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">this</span>.AutoSize
= <span style="color: #0000ff">true</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span> [PermissionSetAttribute(SecurityAction.Demand,
Unrestricted = <span style="color: #0000ff">true</span>)]</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">protected</span>
              <span style="color: #0000ff">override</span>
              <span style="color: #0000ff">void</span> WndProc(<span style="color: #0000ff">ref</span> Message
m)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 23:</span>
              <span style="color: #008000">//
0x3D == WM_GETOBJECT</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 24:</span> Int32
param = 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">if</span> (Int32.TryParse(m.LParam.ToString(), <span style="color: #0000ff">out</span> param))</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">if</span> ((m.Msg
== 0x3D) &amp;&amp; (param == AutomationInteropProvider.RootObjectId))</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 28:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 29:</span> m.Result
= AutomationInteropProvider.ReturnRawElementProvider(</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 30:</span> Handle,
m.WParam, m.LParam, (IRawElementProviderSimple)<span style="color: #0000ff">this</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 31:</span>
              <span style="color: #0000ff">return</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 32:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 33:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 34:</span>
              <span style="color: #0000ff">base</span>.WndProc(<span style="color: #0000ff">ref</span> m);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 35:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 36:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 37:</span>
              <span style="color: #cc6633">#region</span> IRawElementProviderSimple
Members</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 38:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 39:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">object</span> GetPatternProvider(<span style="color: #0000ff">int</span> patternId)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 40:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 41:</span>
              <span style="color: #0000ff">if</span> (patternId
== ValuePatternIdentifiers.Pattern.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 42:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 43:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">this</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 44:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 45:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 46:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 47:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">null</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 48:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 49:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 50:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 51:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">object</span> GetPropertyValue(<span style="color: #0000ff">int</span> propertyId)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 52:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 53:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ClassNameProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 54:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 55:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"CalendarPanel"</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 56:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 57:</span>
              <span style="color: #0000ff">else</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.ControlTypeProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 58:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 59:</span>
              <span style="color: #0000ff">return</span> ControlType.MenuBar.Id;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 60:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 61:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 62:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.HelpTextProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 63:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 64:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Help
for CalendarPanel"</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 65:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 66:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 67:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.AutomationIdProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 68:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 69:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">this</span>.Name; </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 70:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 71:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 72:</span>
              <span style="color: #0000ff">if</span> (propertyId
== AutomationElementIdentifiers.IsEnabledProperty.Id)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 73:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 74:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">true</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 75:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 76:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 77:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 78:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 79:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">null</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 80:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 81:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 82:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 83:</span>
              <span style="color: #0000ff">public</span> IRawElementProviderSimple
HostRawElementProvider</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 84:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 85:</span> get</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 86:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 87:</span>
              <span style="color: #0000ff">return</span> AutomationInteropProvider.HostProviderFromHandle(Handle);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 88:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 89:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 90:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 91:</span>
              <span style="color: #0000ff">public</span> ProviderOptions
ProviderOptions</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 92:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 93:</span> get</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 94:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 95:</span>
              <span style="color: #0000ff">return</span> ProviderOptions.ServerSideProvider;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 96:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 97:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 98:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 99:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 100:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 101:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 102:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Dieses Panel stellt einen ServerSide Provider zur Verfügung. Wir können nun von diesem
Control ableiten und ein entsprechendes Pattern, z.B. das SetValue Pattern implementieren:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">using</span> System;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">using</span> System.Windows.Automation.Provider;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">using</span> System.Windows.Forms;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">namespace</span> WindowsFormsApplication1</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> CalendarPanel
: UIAPanel, IValueProvider</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">private</span> Janus.Windows.Schedule.Calendar
control;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">public</span> Janus.Windows.Schedule.Calendar
Control</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span> get</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">if</span> (control
== <span style="color: #0000ff">null</span>)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.Controls.Count
&gt; 0 &amp;&amp; <span style="color: #0000ff">this</span>.Controls[0].GetType() == <span style="color: #0000ff">typeof</span>(Janus.Windows.Schedule.Calendar))</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span> control
= (Janus.Windows.Schedule.Calendar)<span style="color: #0000ff">this</span>.Controls[0];</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">return</span> control;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 23:</span>
              <span style="color: #cc6633">#region</span> IValueProvider
Members</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 24:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> IsReadOnly</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 27:</span> get </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 28:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 29:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">false</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 30:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 31:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 32:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 33:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SetValue(<span style="color: #0000ff">string</span><span style="color: #0000ff">value</span>)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 34:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 35:</span>
              <span style="color: #0000ff">this</span>.BeginInvoke((MethodInvoker)<span style="color: #0000ff">delegate</span>()</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 36:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 37:</span> DateTime
date = DateTime.Parse(<span style="color: #0000ff">value</span>);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 38:</span> Control.SelectionRange
= <span style="color: #0000ff">new</span> Janus.Windows.Schedule.DateRange(date, date);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 39:</span> });</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 40:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 41:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 42:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> Value</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 43:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 44:</span> get </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 45:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 46:</span>
              <span style="color: #0000ff">return</span> Control.SelectionRange.End.ToShortDateString(); </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 47:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 48:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 49:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 50:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 51:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 52:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Wenn wir nun das Calendar_Control nicht direkt auf unserer Form platzieren, sondern
in einem solchen CalendarPanel ablegen, können wir eine Automatisierung über die UIA
gegen dieses Panel implementieren. Was nun noch optimiert werden soll, ist dass die
ganzen Controls nicht händisch in die jeweiligen Panels platziert werden sollen, sondern
dies soll nach Möglichkeit automatisiert werden. der Ansatz hierbei ist, dass alle
Controls auf der Form beim Laden untersucht werden und für die gewünschten Controls
dynamisch entsprechende Panels erzeugt werden sollen, in die dann die Controls platziert
werden. Dieser Ansatz bietet zudem den Vorteil, dass man die UIA-Panels nur dann nutz,
wenn man UI-Test ausführen möchte. Bei der Release-Version sind diese dann nicht enthalten.
Zwar unterscheidet sich dadurch Release und Test-Version geringfügig, jedoch sollten
diese Implikationen vernachlässigbar sein, vor allem dann, wenn beim Entwickeln komplett
auf die Panels verzichtet wird und diese wirklich nur für die UI-Tests genutzt werden.
</p>
        <p>
Der Code dazu sieht dann so aus:
</p>
        <div>
          <div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> PlaceControlsIntoPanel(Control.ControlCollection
controls)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 3:</span> Panel
uiaPanel;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 4:</span>  </pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">foreach</span> (Control
automationControl <span style="color: #0000ff">in</span> controls.OfType&lt;Control&gt;().ToList())</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">switch</span> (automationControl.GetType().ToString())</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">case</span>
              <span style="color: #006080">"Janus.Windows.CalendarCombo.CalendarCombo"</span>:</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 10:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 11:</span> uiaPanel
= <span style="color: #0000ff">new</span> CalendarComboPanel();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">break</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 13:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">case</span>
              <span style="color: #006080">"Janus.Windows.Schedule.Calendar"</span>:</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 15:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 16:</span> uiaPanel
= <span style="color: #0000ff">new</span> CalendarPanel();</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">break</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">default</span>:</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 20:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">if</span> (automationControl.HasChildren)</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 23:</span> PlaceControlsIntoPanel(automationControl.Controls);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 24:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">continue</span>;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 26:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 27:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 28:</span> uiaPanel.Name
= <span style="color: #006080">"p_"</span> + automationControl.Name;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 29:</span> uiaPanel.Top
= automationControl.Top;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 30:</span> uiaPanel.Left
= automationControl.Left;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 31:</span> uiaPanel.Controls.Add(automationControl);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 32:</span> automationControl.Top
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 33:</span> automationControl.Left
= 0;</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 34:</span> controls.Add(uiaPanel);</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 35:</span> }</pre>
            <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060"> 36:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Wird die Anwendung dann inkl. Test-Client ausgeführt, sieht das so aus:
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_thumb_1.png" width="397" height="491" />
          </a>
        </p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:b7242b04-359d-4031-997a-4b96134ac8f8" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/UIAPanelDemo.zip" target="_blank">Download
Demo-Code</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=17f081a9-c7fe-4c59-946e-ad63eacae539" />
      </body>
      <title>UI-Automation ServerSide Provider &amp;ndash; 3rd Party Controls accessible machen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</link>
      <pubDate>Fri, 03 Jul 2009 12:10:58 GMT</pubDate>
      <description>&lt;p&gt;
Wie in diesem Blog bereits an &lt;a href="http://www.artiso.com/ProBlog/CategoryView,category,UI%2BAutomation.aspx"&gt;anderen
Stellen&lt;/a&gt; erläutert, eignet sich das UIA (UI Automation Framework) sehr gut, um
UI-Tests aufzubauen. Wer sich mit dieser Möglichkeit beschäftigt wird aber früher
oder später auf das Problem stoßen, dass UIA Support bei WinForms Controls nicht flächendeckend
gegeben ist, vor allem bei 3rd Party Controls sieht es da oft eher mau aus.
&lt;/p&gt;
&lt;p&gt;
Ich habe &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,35d09c0e-d00b-4025-b896-af96007c8a2f.aspx"&gt;hier&lt;/a&gt; beschrieben,
wie man mit einem ServerSide Provider diese Lücken selbst schließen kann. Das Standardvorgehen
sieht dabei vor, dass man ein eigenes Control erstellt, das man dann von dem Ausgangscontrol
ableitet. Diese Vorgehen ist in der Praxis allerdings nicht unproblematisch. Zum einen
muss man die abgeleiteten Controls für jedes neue Release der Ausgangscontrols aktualisieren
und zum zweiten ist es nicht gerade schön in einer bestehenden Anwendung alle Controls
gegen die abgeleitete Variante austauschen zu müssen. 
&lt;/p&gt;
&lt;p&gt;
Deshalb möchte ich hier einen alternativen Weg vorstellen. Die Idee beruht darauf,
dass die Controls, denen es an Accesibility fehlt jeweils in ein Panel platziert werden
und auf diesem Panel dann die entsprechenden Patterns implementiert werden. Das Panel
kann die Operationen dann an das Control in seinem Bauch weiterleiten. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_thumb.png" width="439" height="241"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ich habe mal ein Beispiel für Janus Calendar Controls gebaut. Zunächst habe ich mir
ein UIA-Panel erstellt, von dem ich dann die weiteren Panels für die spezifischen
Controls ableiten kann.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Drawing;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Security.Permissions;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Automation;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Automation.Provider;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WindowsFormsApplication1&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; UIAPanel
: Panel, IRawElementProviderSimple&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; UIAPanel()&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.BackColor
= Color.Yellow;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Height
= 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Width
= 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.AutoSize
= &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; [PermissionSetAttribute(SecurityAction.Demand,
Unrestricted = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; WndProc(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; Message
m)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
0x3D == WM_GETOBJECT&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; Int32
param = 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Int32.TryParse(m.LParam.ToString(), &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; param))&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((m.Msg
== 0x3D) &amp;amp;&amp;amp; (param == AutomationInteropProvider.RootObjectId))&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; m.Result
= AutomationInteropProvider.ReturnRawElementProvider(&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; Handle,
m.WParam, m.LParam, (IRawElementProviderSimple)&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.WndProc(&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; m);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; IRawElementProviderSimple
Members&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; GetPatternProvider(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; patternId)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (patternId
== ValuePatternIdentifiers.Pattern.Id)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 42:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 43:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 44:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 45:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 46:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 47:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 48:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 49:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 50:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 51:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; GetPropertyValue(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; propertyId)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 52:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 53:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.ClassNameProperty.Id)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 54:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 55:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"CalendarPanel"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 56:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 57:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.ControlTypeProperty.Id)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 58:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 59:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ControlType.MenuBar.Id;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 60:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 61:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 62:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.HelpTextProperty.Id)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 63:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 64:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"Help
for CalendarPanel"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 65:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 66:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 67:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.AutomationIdProperty.Id)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 68:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 69:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Name; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 70:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 71:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 72:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (propertyId
== AutomationElementIdentifiers.IsEnabledProperty.Id)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 73:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 74:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 75:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 76:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 77:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 78:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 79:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 80:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 81:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 82:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 83:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; IRawElementProviderSimple
HostRawElementProvider&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 84:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 85:&lt;/span&gt; get&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 86:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 87:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; AutomationInteropProvider.HostProviderFromHandle(Handle);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 88:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 89:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 90:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 91:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ProviderOptions
ProviderOptions&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 92:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 93:&lt;/span&gt; get&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 94:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 95:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ProviderOptions.ServerSideProvider;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 96:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 97:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 98:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 99:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 100:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 101:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 102:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Dieses Panel stellt einen ServerSide Provider zur Verfügung. Wir können nun von diesem
Control ableiten und ein entsprechendes Pattern, z.B. das SetValue Pattern implementieren:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Automation.Provider;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Forms;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WindowsFormsApplication1&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; CalendarPanel
: UIAPanel, IValueProvider&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Janus.Windows.Schedule.Calendar
control;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Janus.Windows.Schedule.Calendar
Control&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; get&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (control
== &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls.Count
&amp;gt; 0 &amp;amp;&amp;amp; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls[0].GetType() == &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(Janus.Windows.Schedule.Calendar))&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; control
= (Janus.Windows.Schedule.Calendar)&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Controls[0];&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; control;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; IValueProvider
Members&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsReadOnly&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; get &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SetValue(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.BeginInvoke((MethodInvoker)&lt;span style="color: #0000ff"&gt;delegate&lt;/span&gt;()&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; DateTime
date = DateTime.Parse(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt; Control.SelectionRange
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Janus.Windows.Schedule.DateRange(date, date);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; });&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 42:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Value&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 43:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 44:&lt;/span&gt; get &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 45:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 46:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Control.SelectionRange.End.ToShortDateString(); &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 47:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 48:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 49:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 50:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 51:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 52:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Wenn wir nun das Calendar_Control nicht direkt auf unserer Form platzieren, sondern
in einem solchen CalendarPanel ablegen, können wir eine Automatisierung über die UIA
gegen dieses Panel implementieren. Was nun noch optimiert werden soll, ist dass die
ganzen Controls nicht händisch in die jeweiligen Panels platziert werden sollen, sondern
dies soll nach Möglichkeit automatisiert werden. der Ansatz hierbei ist, dass alle
Controls auf der Form beim Laden untersucht werden und für die gewünschten Controls
dynamisch entsprechende Panels erzeugt werden sollen, in die dann die Controls platziert
werden. Dieser Ansatz bietet zudem den Vorteil, dass man die UIA-Panels nur dann nutz,
wenn man UI-Test ausführen möchte. Bei der Release-Version sind diese dann nicht enthalten.
Zwar unterscheidet sich dadurch Release und Test-Version geringfügig, jedoch sollten
diese Implikationen vernachlässigbar sein, vor allem dann, wenn beim Entwickeln komplett
auf die Panels verzichtet wird und diese wirklich nur für die UI-Tests genutzt werden.
&lt;/p&gt;
&lt;p&gt;
Der Code dazu sieht dann so aus:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PlaceControlsIntoPanel(Control.ControlCollection
controls)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; Panel
uiaPanel;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (Control
automationControl &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; controls.OfType&amp;lt;Control&amp;gt;().ToList())&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (automationControl.GetType().ToString())&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;"Janus.Windows.CalendarCombo.CalendarCombo"&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; uiaPanel
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CalendarComboPanel();&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;"Janus.Windows.Schedule.Calendar"&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; uiaPanel
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CalendarPanel();&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt;:&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (automationControl.HasChildren)&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; PlaceControlsIntoPanel(automationControl.Controls);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;continue&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; uiaPanel.Name
= &lt;span style="color: #006080"&gt;"p_"&lt;/span&gt; + automationControl.Name;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; uiaPanel.Top
= automationControl.Top;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; uiaPanel.Left
= automationControl.Left;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; uiaPanel.Controls.Add(automationControl);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; automationControl.Top
= 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; automationControl.Left
= 0;&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; controls.Add(uiaPanel);&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Wird die Anwendung dann inkl. Test-Client ausgeführt, sieht das so aus:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/image_thumb_1.png" width="397" height="491"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:b7242b04-359d-4031-997a-4b96134ac8f8" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/UIAutomationServerSideProvider3rdpartyCo_8B7A/UIAPanelDemo.zip" target="_blank"&gt;Download
Demo-Code&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=17f081a9-c7fe-4c59-946e-ad63eacae539" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,17f081a9-c7fe-4c59-946e-ad63eacae539.aspx</comments>
      <category>UI Automation</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.tsug-ve.com/Default.aspx">
            <img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG" />
          </a>
        </p>
        <p>
Im Juni werden wir beim EMEA-Meeting der Team System User Group Virtual Edition Ed
Blankenship als Sprecher haben. Ed ist MVP für Team System und Release Manager bei <a href="http://www.infragistics.com">Infragistics</a>,
dem führenden Hersteller von UI-Komponenten. Er wird in seinem Vortrag über die Erfahrungen
bei der Einführung von VSTS bei Infragistics berichten. Dabei werden die verschiedenen
Bereiche wie Versionsverwaltung, Build Management, Work Item tracking, das Management
globaler Teams, automatisiertes Testen und vieles mehr aus einer Anwendersicht beleuchtet.
Ein wirklich sehenswerter Erfahrungsbericht aus der Praxis.
</p>
        <p>
Weitere Informationen unter <a href="http://www.tsug-ve.com">www.tsug-ve.com</a>. 
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f" />
      </body>
      <title>Einf&amp;uuml;hrung von VSTS bei Infragistics &amp;ndash; Vortrag bei TSUG-VE</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</link>
      <pubDate>Wed, 03 Jun 2009 22:02:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.tsug-ve.com/Default.aspx"&gt;&lt;img alt="Team System User Group - Virtual Edition" src="http://www.tsug-ve.com/Portals/0/TSUG3.JPG"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Im Juni werden wir beim EMEA-Meeting der Team System User Group Virtual Edition Ed
Blankenship als Sprecher haben. Ed ist MVP für Team System und Release Manager bei &lt;a href="http://www.infragistics.com"&gt;Infragistics&lt;/a&gt;,
dem führenden Hersteller von UI-Komponenten. Er wird in seinem Vortrag über die Erfahrungen
bei der Einführung von VSTS bei Infragistics berichten. Dabei werden die verschiedenen
Bereiche wie Versionsverwaltung, Build Management, Work Item tracking, das Management
globaler Teams, automatisiertes Testen und vieles mehr aus einer Anwendersicht beleuchtet.
Ein wirklich sehenswerter Erfahrungsbericht aus der Praxis.
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen unter &lt;a href="http://www.tsug-ve.com"&gt;www.tsug-ve.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,60ddd2e8-6d8a-41f3-8a2a-02a54fecf51f.aspx</comments>
      <category>Team System Server</category>
      <category>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</category>
      <category>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</category>
      <category>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</category>
      <category>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</category>
      <category>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</category>
      <category>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</category>
      <category>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</category>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=2b142c6d-f285-4697-ad77-9914a8bd3cfe</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=2b142c6d-f285-4697-ad77-9914a8bd3cfe</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Thema Test Driven Development oder auch Test First Developent gewinnt immer mehr
an Beachtung. Keine Konferenz, keine Zeitschrift, kein Sprecher der was auf sich hält
kommt um das Thema herum. Doch nach dem überzeugenden Vortrag sitzt man zu Hause im
Büro vor einem leeren Project und wie nun anfangen? Hier scheitern bereits die ersten,
weil entsprechende Publikationen oft zwar die Vorteile ausführlich schildern, aber
nicht den Einstieg darstellen. Deshalb möchte ich hier einen entsprechenden Einstieg
geben und mit einem wirklich leeren Projekt beginnen. 
</p>
        <p>
Die Theorie um TDD will ich hier einfach weglassen. Hierzu gibt es bereits Informationen
genug. Und wir werden verschiedene Vereinfachung vornehmen, über die Profis etwas
die Nase rümpfen werden, aber damit erhalten wir ein einfaches und praktikable Einstiegsszenario. 
</p>
        <p>
Zum Einsatz kommen hierbei die Testfunktionen von Visual Studio 2008 die ab der Professional
Edition enthalten sind. Wir beginnen mit einer komplett leeren Solution.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_2.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="245" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb.png" width="359" border="0" />
          </a>
        </p>
        <p>
Die Frage, die nun im Raum steht, ist: Wie schreibe ich einen Test ohne eine Methode
zu haben. Ein Unit-Test besteht ja im Prinzip darin, dass wir eine Methode aufrufen
und den Rückgabewert mit einem Erwartungswert vergleichen. Der Test wird aber nicht
einmal kompilieren, solange die Methode nicht definiert ist. Der Workaround an dieser
Stelle sieht dann oft so aus, dass man von der Methode und ihrer Klasse erst einmal
einen Stub anlegt der im wesentlichen eine “ThrowNotImplemented”-Exception wirft.
Damit haben wir aber eigentlich schon mehr implementiert als nach dem TDD uns lieb
ist.
</p>
        <p>
Ein etwas eleganterer Ansatz geht über die Definition von Interfaces. Diese Vorgehensweise
eignet sich besonders gut bei einer komponentenorientierten Architektur mit einem
Contract First Ansatz. Dabei werden die Schnittstellen der einzelnen Komponenten erst
über Contracts (Interfaces) beschrieben bevor diese implementiert werden. Den TDD-Ablauf
Rot &gt; Grün &gt; Refactor erweitern wir ein wenig. Damit ergibt sich folgende Abfolge:
</p>
        <p>
Contract definieren &gt; Test implementieren &gt; Rot &gt; Funktion implementieren
&gt; Grün &gt; Refactor
</p>
        <p>
D.h. wir erstellen in einem ersten Schritt einen Contract (genau genommen machen wir
damit kein TDD sondern ein Test First. Beim TDD ist der Test das erste was erstellt
werden muss, aber das ist in meinen Augen eher Haarspalterei, so funktioniert es einfach
in der Praxis). Wir erstellen ein neues ClassLibrary-Projekt und erstellen dort ein
Interface.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">namespace</span> Contracts</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">interface</span> IOrderCalculator</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">decimal</span> CalculateShippinghCosts(<span style="color: #0000ff">decimal</span> sum, <span style="color: #0000ff">decimal</span> freeShippingMin, <span style="color: #0000ff">decimal</span> shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> }</pre>
          </div>
        </div>
        <p>
        </p>
        <p>
Wir wollen hier ein überschaubares, aber auch nicht zu triviales Beispiel verwenden.
Die Methode CalculateShippingCosts soll zu einem gegebenen Rechnungsbetrag Versandkosten
hinzuaddieren, wenn ein bestimmter Mindestbetrag nicht erreicht ist. So damit haben
wir den Contract erstellt. Nun wollen wir einen Test dazu erstellen. Das geht am schnellsten
durch einen Rechts-Klick auf die Methode und dann “Create Unit-Tests”.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_8.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="187" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb_3.png" width="385" border="0" />
          </a>
        </p>
        <p>
Hier wird standardmäßig ein neues Test-Projekt angelegt. Darin wird ein entsprechender
Unit-Test generiert.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCostsTest()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> IOrderCalculator
target = CreateIOrderCalculator(); <span style="color: #008000">// TODO: Initialize
to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> Decimal
sum = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Decimal
freeShippingMin = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> Decimal
shippingCosts = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> Decimal
expected = <span style="color: #0000ff">new</span> Decimal(); <span style="color: #008000">//
TODO: Initialize to an appropriate value</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> Assert.Inconclusive(<span style="color: #006080">"Verify
the correctness of this test method."</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
Damit können wir den Test bereits zum ersten mal ausführen und er geht wie erwartet
auf Rot. Aber Moment, wie funktioniert das. Wie kann der Test eine Methode auf einem
Interface aufrufen? Es gibt ja noch keine Implementierung des Interfaces und ein Interface
selbst lässt sich ja nicht instanziieren. Hier baut Visual Studio einen kleinen Workaround.
In Zeile 4 im obigen Code sieht man, dass eine Instanz des target-Objektes über die
Methode CreateIOrderCalculator() erstellt wird. Diese Methode wollen wir mal etwas
genauer anschauen.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">internal</span>
              <span style="color: #0000ff">virtual</span> IOrderCalculator
CreateIOrderCalculator()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">//
TODO: Instantiate an appropriate concrete class.</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> IOrderCalculator
target = <span style="color: #0000ff">null</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">return</span> target;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> }</pre>
          </div>
        </div>
        <p>
        </p>
        <p>
Hier wird das Objekt einfach mit null initialisiert. Ein einfacher, aber wirkungsvoller
Workaround. Damit erreichen wir unser Ziel, dass der Test kompiliert aber fehlschlägt.
Nach der Implementierung ersetzen wir das null einfach durch die entsprechende Initialisierung.
Damit können wir nun unsere Testcases Implementieren.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCosts_Sum_Below_FreeShippingMin()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> IOrderCalculator
target = CreateIOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> Decimal
sum = 1;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Decimal
freeShippingMin = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> Decimal
shippingCosts = 5;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #008000">//
We are below min, so we have to add shippingCosts</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> Decimal
expected = 6;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCosts_Sum_Above_FreeShippingMin()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> IOrderCalculator
target = CreateIOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> Decimal
sum = 20;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> Decimal
freeShippingMin = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> Decimal
shippingCosts = 5;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #008000">//
We are above min, so we don't add shippingCosts</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> Decimal
expected = 20;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> [TestMethod()]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CalculateShippinghCosts_Sum_Equal_FreeShippingMin()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 32:</span> IOrderCalculator
target = CreateIOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 33:</span> Decimal
sum = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 34:</span> Decimal
freeShippingMin = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 35:</span> Decimal
shippingCosts = 5;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 36:</span>
              <span style="color: #008000">//
We are equal min, so we don't add shippingCosts</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 37:</span> Decimal
expected = 10;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 38:</span> Decimal
actual;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 39:</span> actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 40:</span> Assert.AreEqual(expected,
actual);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 41:</span> }</pre>
          </div>
        </div>
        <p>
Damit haben wir unser Szenario ausreichend beschrieben. Wir können nun an die Implementierung
gehen.Dazu legen wir ein neues Projekt an in dem wir eine Klasse definieren die wir
von unserem Interface ableiten.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">namespace</span> Components</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cOrderCalculator
: IOrderCalculator</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">decimal</span> CalculateShippinghCosts(<span style="color: #0000ff">decimal</span> sum, <span style="color: #0000ff">decimal</span> freeShippingMin, <span style="color: #0000ff">decimal</span> shippingCosts)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #008000">//
If sum is greater than Min then don't add shipping costs</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">if</span> (sum
&gt; freeShippingMin)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">return</span> sum;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #008000">//
else add shipping costs</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">return</span> sum
+ shippingCosts;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
          </div>
        </div>
        <p>
Nun müssen wir unbedingt noch daran denken, die Initialisierung des Testobjektes in
unserer Testmethode anzupassen.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">internal</span>
              <span style="color: #0000ff">virtual</span> IOrderCalculator
CreateIOrderCalculator()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> IOrderCalculator
target = <span style="color: #0000ff">new</span> cOrderCalculator();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span> target;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> }</pre>
          </div>
        </div>
        <p>
Nun können wir die Tests ausführen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_10.png">
            <img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="130" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb_4.png" width="574" border="0" />
          </a>
        </p>
        <p>
Oh, ein Test schlägt fehl. Bei genauerer Betrachtung stellen wir fest, dass wir bei
der Implementierung den Fall dass die Summe gleich der Grenze ist nicht richtig berücksichtigt
haben. Also hat sich hier der TDD-Ansatz schon bewährt und wir können den Fehler beheben.
Damit sind alle Tests grün und wir können weiter fortfahren. Wir könnten nun z.B.
auf unserem Interface weitere Methoden definieren und dafür Tests anlegen. 
</p>
        <p>
Also eigentlich gar nicht so schwer das mit dem TDD, oder? Freue mich auf euer Feedback.
</p>
        <p>
Die Solution gibt es zum Download.
</p>
        <p>
Happy Testing!
</p>
        <div class="wlWriterEditableSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:ff5bd5c7-cf5f-44fa-b8f6-de296f6342f9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/TDDQuickStart.zip" target="_blank">Download
Demo-Solution</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b142c6d-f285-4697-ad77-9914a8bd3cfe" />
      </body>
      <title>TDD Quickstart</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</link>
      <pubDate>Wed, 01 Apr 2009 00:10:53 GMT</pubDate>
      <description>&lt;p&gt;
Das Thema Test Driven Development oder auch Test First Developent gewinnt immer mehr
an Beachtung. Keine Konferenz, keine Zeitschrift, kein Sprecher der was auf sich hält
kommt um das Thema herum. Doch nach dem überzeugenden Vortrag sitzt man zu Hause im
Büro vor einem leeren Project und wie nun anfangen? Hier scheitern bereits die ersten,
weil entsprechende Publikationen oft zwar die Vorteile ausführlich schildern, aber
nicht den Einstieg darstellen. Deshalb möchte ich hier einen entsprechenden Einstieg
geben und mit einem wirklich leeren Projekt beginnen. 
&lt;/p&gt;
&lt;p&gt;
Die Theorie um TDD will ich hier einfach weglassen. Hierzu gibt es bereits Informationen
genug. Und wir werden verschiedene Vereinfachung vornehmen, über die Profis etwas
die Nase rümpfen werden, aber damit erhalten wir ein einfaches und praktikable Einstiegsszenario. 
&lt;/p&gt;
&lt;p&gt;
Zum Einsatz kommen hierbei die Testfunktionen von Visual Studio 2008 die ab der Professional
Edition enthalten sind. Wir beginnen mit einer komplett leeren Solution.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="245" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb.png" width="359" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Die Frage, die nun im Raum steht, ist: Wie schreibe ich einen Test ohne eine Methode
zu haben. Ein Unit-Test besteht ja im Prinzip darin, dass wir eine Methode aufrufen
und den Rückgabewert mit einem Erwartungswert vergleichen. Der Test wird aber nicht
einmal kompilieren, solange die Methode nicht definiert ist. Der Workaround an dieser
Stelle sieht dann oft so aus, dass man von der Methode und ihrer Klasse erst einmal
einen Stub anlegt der im wesentlichen eine “ThrowNotImplemented”-Exception wirft.
Damit haben wir aber eigentlich schon mehr implementiert als nach dem TDD uns lieb
ist.
&lt;/p&gt;
&lt;p&gt;
Ein etwas eleganterer Ansatz geht über die Definition von Interfaces. Diese Vorgehensweise
eignet sich besonders gut bei einer komponentenorientierten Architektur mit einem
Contract First Ansatz. Dabei werden die Schnittstellen der einzelnen Komponenten erst
über Contracts (Interfaces) beschrieben bevor diese implementiert werden. Den TDD-Ablauf
Rot &amp;gt; Grün &amp;gt; Refactor erweitern wir ein wenig. Damit ergibt sich folgende Abfolge:
&lt;/p&gt;
&lt;p&gt;
Contract definieren &amp;gt; Test implementieren &amp;gt; Rot &amp;gt; Funktion implementieren
&amp;gt; Grün &amp;gt; Refactor
&lt;/p&gt;
&lt;p&gt;
D.h. wir erstellen in einem ersten Schritt einen Contract (genau genommen machen wir
damit kein TDD sondern ein Test First. Beim TDD ist der Test das erste was erstellt
werden muss, aber das ist in meinen Augen eher Haarspalterei, so funktioniert es einfach
in der Praxis). Wir erstellen ein neues ClassLibrary-Projekt und erstellen dort ein
Interface.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Contracts&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; IOrderCalculator&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; CalculateShippinghCosts(&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; sum, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; freeShippingMin, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; shippingCosts);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Wir wollen hier ein überschaubares, aber auch nicht zu triviales Beispiel verwenden.
Die Methode CalculateShippingCosts soll zu einem gegebenen Rechnungsbetrag Versandkosten
hinzuaddieren, wenn ein bestimmter Mindestbetrag nicht erreicht ist. So damit haben
wir den Contract erstellt. Nun wollen wir einen Test dazu erstellen. Das geht am schnellsten
durch einen Rechts-Klick auf die Methode und dann “Create Unit-Tests”.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_8.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="187" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb_3.png" width="385" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Hier wird standardmäßig ein neues Test-Projekt angelegt. Darin wird ein entsprechender
Unit-Test generiert.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCostsTest()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator(); &lt;span style="color: #008000"&gt;// TODO: Initialize
to an appropriate value&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; Decimal
sum = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; Decimal
freeShippingMin = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; Decimal
shippingCosts = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; Decimal
expected = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Decimal(); &lt;span style="color: #008000"&gt;//
TODO: Initialize to an appropriate value&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; Assert.Inconclusive(&lt;span style="color: #006080"&gt;"Verify
the correctness of this test method."&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Damit können wir den Test bereits zum ersten mal ausführen und er geht wie erwartet
auf Rot. Aber Moment, wie funktioniert das. Wie kann der Test eine Methode auf einem
Interface aufrufen? Es gibt ja noch keine Implementierung des Interfaces und ein Interface
selbst lässt sich ja nicht instanziieren. Hier baut Visual Studio einen kleinen Workaround.
In Zeile 4 im obigen Code sieht man, dass eine Instanz des target-Objektes über die
Methode CreateIOrderCalculator() erstellt wird. Diese Methode wollen wir mal etwas
genauer anschauen.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; IOrderCalculator
CreateIOrderCalculator()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
TODO: Instantiate an appropriate concrete class.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; IOrderCalculator
target = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; target;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Hier wird das Objekt einfach mit null initialisiert. Ein einfacher, aber wirkungsvoller
Workaround. Damit erreichen wir unser Ziel, dass der Test kompiliert aber fehlschlägt.
Nach der Implementierung ersetzen wir das null einfach durch die entsprechende Initialisierung.
Damit können wir nun unsere Testcases Implementieren.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCosts_Sum_Below_FreeShippingMin()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator();&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; Decimal
sum = 1;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; Decimal
freeShippingMin = 10;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; Decimal
shippingCosts = 5;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
We are below min, so we have to add shippingCosts&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; Decimal
expected = 6;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCosts_Sum_Above_FreeShippingMin()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator();&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; Decimal
sum = 20;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; Decimal
freeShippingMin = 10;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; Decimal
shippingCosts = 5;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
We are above min, so we don't add shippingCosts&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; Decimal
expected = 20;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; [TestMethod()]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CalculateShippinghCosts_Sum_Equal_FreeShippingMin()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; IOrderCalculator
target = CreateIOrderCalculator();&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; Decimal
sum = 10;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; Decimal
freeShippingMin = 10;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; Decimal
shippingCosts = 5;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
We are equal min, so we don't add shippingCosts&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; Decimal
expected = 10;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt; Decimal
actual;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; actual
= target.CalculateShippinghCosts(sum, freeShippingMin, shippingCosts);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; Assert.AreEqual(expected,
actual);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Damit haben wir unser Szenario ausreichend beschrieben. Wir können nun an die Implementierung
gehen.Dazu legen wir ein neues Projekt an in dem wir eine Klasse definieren die wir
von unserem Interface ableiten.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Components&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; cOrderCalculator
: IOrderCalculator&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; CalculateShippinghCosts(&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; sum, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; freeShippingMin, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; shippingCosts)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
If sum is greater than Min then don't add shipping costs&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (sum
&amp;gt; freeShippingMin)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; sum;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
else add shipping costs&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; sum
+ shippingCosts;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Nun müssen wir unbedingt noch daran denken, die Initialisierung des Testobjektes in
unserer Testmethode anzupassen.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; IOrderCalculator
CreateIOrderCalculator()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; IOrderCalculator
target = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; cOrderCalculator();&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; target;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Nun können wir die Tests ausführen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_10.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="130" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/image_thumb_4.png" width="574" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Oh, ein Test schlägt fehl. Bei genauerer Betrachtung stellen wir fest, dass wir bei
der Implementierung den Fall dass die Summe gleich der Grenze ist nicht richtig berücksichtigt
haben. Also hat sich hier der TDD-Ansatz schon bewährt und wir können den Fehler beheben.
Damit sind alle Tests grün und wir können weiter fortfahren. Wir könnten nun z.B.
auf unserem Interface weitere Methoden definieren und dafür Tests anlegen. 
&lt;/p&gt;
&lt;p&gt;
Also eigentlich gar nicht so schwer das mit dem TDD, oder? Freue mich auf euer Feedback.
&lt;/p&gt;
&lt;p&gt;
Die Solution gibt es zum Download.
&lt;/p&gt;
&lt;p&gt;
Happy Testing!
&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:ff5bd5c7-cf5f-44fa-b8f6-de296f6342f9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TDDQuickstart_259/TDDQuickStart.zip" target="_blank"&gt;Download
Demo-Solution&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=2b142c6d-f285-4697-ad77-9914a8bd3cfe" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,2b142c6d-f285-4697-ad77-9914a8bd3cfe.aspx</comments>
      <category>Eigene Tutorials</category>
      <category>Qualitätsmanagement</category>
      <category>Testing</category>
      <category>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</category>
      <category>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</category>
      <category>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</category>
      <category>Usergroup</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=70ff6e02-8a52-4d96-86b1-cb1029b2a362</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=70ff6e02-8a52-4d96-86b1-cb1029b2a362</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550" />
        </p>
        <p>
Am 16.03.09 geht ein neuer Webcast von mir online mit dem Thema "Team Build mit Custom
Build Tasks erweitern". Ich möchte hier schon mal die entsprechenden Infos veröffentlichen.
</p>
        <p>
In TeamBuild lassen sich eigene Build-Task integrieren. Diese können sehr einfach
erstellt werden. Hierzu wird eine Klasse erstellt und diese von Task abgeleitet. Im
folgenden Beispiel wird ein Build-Task erstellt, der im Rahmen des Builds die Version
der Anwendung setzt. Und zwar soll hier die Build-Nummer in der Versionsnummer der
Assembly abgebildet werden. Dies bietet Vorteile, wenn zu einer bestimmten Anwendungsversion
der entsprechende Build identifiziert werden soll. 
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">using</span> System;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">using</span> System.Collections.Generic;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">using</span> System.Text;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">using</span> Microsoft.Build.Utilities;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">using</span> Microsoft.Build.Framework;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">namespace</span> Artiso.BuildTasks</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #008000">///
Creates a AssemblyVersion out of a BuildNumber</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #008000">///
&lt;remarks&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #008000">///
AssemblyVersion.Minjor and AssemblyVersion.Minor will be defined fiexed in</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #008000">///
the Build-Script. If the BuildNumber is Dev_Versioning_20090305.4 we use </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">///
two digit year and month for AssemblyBuildNumber and day and 3 digit BuildRevision</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #008000">///
for AssemblyRevision. BuildRevisio </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #008000">///
&lt;/remarks&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #008000">///
&lt;example&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #008000">///
Dev_Versioning_20090305.4 =&gt; xx.yy.0903.05004</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #008000">///
&lt;/example&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> ExtractRevision
: Task</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #cc6633">#region</span> [rgn]
Fields(3)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> buildRevision;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> buildVersion;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> buildNumber;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span>
              <span style="color: #cc6633">#region</span> [rgn]
Properties(3)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 30:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 31:</span>
              <span style="color: #008000">///
Input Build Number</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 32:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 33:</span> [Required]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 34:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> BuildNumber</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 35:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 36:</span> set
{ buildNumber = <span style="color: #0000ff">value</span>; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 37:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 38:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 39:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 40:</span>
              <span style="color: #008000">///
Returns the sortened date of the build</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 41:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 42:</span> [Output]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 43:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> BuildVersion</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 44:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 45:</span> get
{ <span style="color: #0000ff">return</span> buildVersion; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 46:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 47:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 48:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 49:</span>
              <span style="color: #008000">///
Returns the Build Revision (number of build at this day</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 50:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 51:</span> [Output]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 52:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> BuildRevision</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 53:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 54:</span> get
{ <span style="color: #0000ff">return</span> buildRevision; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 55:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 56:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 57:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 58:</span>
              <span style="color: #cc6633">#region</span> [rgn]
Methods(1)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 59:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">override</span>
              <span style="color: #0000ff">bool</span> Execute()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 60:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 61:</span> buildVersion
= <span style="color: #006080">"0"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 62:</span> buildRevision
= <span style="color: #006080">"0"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 63:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 64:</span>
              <span style="color: #0000ff">if</span> (buildNumber
!= <span style="color: #0000ff">null</span> &amp;&amp; buildNumber.Contains(<span style="color: #006080">"."</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 65:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 66:</span>
              <span style="color: #0000ff">string</span>[]
buildNumberParts = buildNumber.Substring(buildNumber.LastIndexOf(<span style="color: #006080">'_'</span>)+1).Split(<span style="color: #006080">'.'</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 67:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 68:</span>
              <span style="color: #008000">//
Dev_Versioning_20090305.4 -&gt; 0903.02005</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 69:</span>
              <span style="color: #008000">//
use year (2 digits) and mont for buildversion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 70:</span> buildVersion
= buildNumberParts[0].Substring(2, 4);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 71:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 72:</span>
              <span style="color: #008000">//
use day and number of build in this day for build revision</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 73:</span> buildRevision
= buildNumberParts[0].Substring(6) + buildNumberParts[1].PadLeft(3, <span style="color: #006080">'0'</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 74:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 75:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">true</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 76:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 77:</span>
              <span style="color: #cc6633">#endregion</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 78:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 79:</span> }</pre>
          </div>
        </div>
        <p>
Das Property BuildNumber wird als Input-Parameter verwendet und mit dem Attribut [Required]
versehen. Darüber kann die BuildNumber in unseren Task übergeben werden. Durch das
Attribut [Output] werden die beiden Properties BuildVersion und BuildRevision als
Rückgabewerte definiert. Beim Ausführen des Builds wird die Methode Execute aufgerufen.
Hier werden nun aus der Build-Number die entsprechenden Informationen extrahiert und
diese dann in BuildVersion und BuildRevision zurückgeschrieben. Dies ist natürlich
nur ein einfaches Beispiel, aber mit diesen Grundlagen können nun beliebige Build-Tasks
definiert werden. Im nächsten Schritt schauen wir uns an, wie wir diesen Custom Build
Task nun in unseren Build-Prozess einbinden. Hierzu kopieren wir zunächst die Assembly
in einen entsprechenden Ordner. Hier bietet sich an unter c:\Program Files\MSBuild
einen entsprechenden Ordner anzulegen und dort die Assemblies abzulegen.
</p>
        <p>
Nun muss das Build-Script entsprechend angepasst werden. Diese liegt in der Quellcode-Verwaltung
und muss zum Bearbeiten zuerst aus- und danach wieder eingechecked werden. Um diesen
Vorgang zu vereinfachen empfehle ich die TFS Sidekicks (<a href="http://www.attrice.info/downloads/index.htm">http://www.attrice.info/downloads/index.htm</a>)
die direkt im Kontextmenü des TeamExplorers entsprechende Kommandos einfügt. Das nun
ausgecheckte PROJ-File kann nun bearbeitet werden.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">&lt;?</span>
              <span style="color: #800000">xml</span>
              <span style="color: #ff0000">version</span>
              <span style="color: #0000ff">="1.0"</span>
              <span style="color: #ff0000">encoding</span>
              <span style="color: #0000ff">="utf-8"</span>?<span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">&lt;!--
DO NOT EDIT the project element - the ToolsVersion specified here does not prevent
the solutions </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000"> and
projects in the SolutionToBuild item group from targeting other versions of the .NET
framework. </span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000"> --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Project</span>
              <span style="color: #ff0000">DefaultTargets</span>
              <span style="color: #0000ff">="DesktopBuild"</span>
              <span style="color: #ff0000">xmlns</span>
              <span style="color: #0000ff">="http://schemas.microsoft.com/developer/msbuild/2003"</span>
              <span style="color: #ff0000">ToolsVersion</span>
              <span style="color: #0000ff">="3.5"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #008000">&lt;!--
Do not edit this --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Import</span>
              <span style="color: #ff0000">Project</span>
              <span style="color: #0000ff">="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Import</span>
              <span style="color: #ff0000">Project</span>
              <span style="color: #0000ff">="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">UsingTask</span>
              <span style="color: #ff0000">AssemblyFile</span>
              <span style="color: #0000ff">="$(MSBuildExtensionsPath)\ArtisoBuildTasks\ArtisoBuildTasks.dll"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #ff0000">TaskName</span>
              <span style="color: #0000ff">="ExtractRevision"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">&lt;!--
Assembly version properties. Adjust here Major and Minor Version--&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyMajorVersion</span>
              <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyMajorVersion</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyMinorVersion</span>
              <span style="color: #0000ff">&gt;</span>3<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyMinorVersion</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyBuildNumber</span>
              <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyBuildNumber</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyRevision</span>
              <span style="color: #0000ff">&gt;</span>1<span style="color: #0000ff">&lt;/</span><span style="color: #800000">AssemblyRevision</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>  </pre>...
</div>
        </div>
        <div>In Zeile 11 wird unser BuildTask entsprechend registriert. In Zeile 9 werden
noch weitere Build-Tasks registriert. Hier gereicht es uns zum Vorteil, dass Team-Build
auf MSBuild basiert. D.h. es können entsprechende Tasks für MSBuild problemlos integriert
werden. Diese gibt es in großer Zahl für sehr viele Anwendungsbereiche zum großen
Teil frei Verfügbar zum Download. Wir verwenden hier die MSBuild Community Tasks (<u><a href="http://msbuildtasks.tigris.org/">http://msbuildtasks.tigris.org/</a></u>).
Wir werden aus diesem Paket Aktionen verwenden.
</div>
        <div> 
</div>
        <div>In den Zeilen 14 bis 20 wird eine sog. PropertyGroup angelegt. Darin werden einzelne
Properties definiert und mit Default-Werten vorbelegt. Diese Properties lassen sich
mit Variablen innerhalb eines Software-Codes vergleichen. Die AssemblyMajorVersion
und AssemblyMinorVersion werden hier festgelegt. AssemblyBuildNumber und AssemblyRevision
werden wir im weiteren Verlauf überschreiben.
</div>
        <div> 
</div>
        <div>Am Ende des Scripts direkt vor dem schließenden &lt;/Project&gt;-Tag wird nun
ein Target-Block eingefügt.
</div>
        <div> 
</div>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> ...</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Target</span>
              <span style="color: #ff0000">Name</span>
              <span style="color: #0000ff">="AfterGet"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">AssemblyInfoFiles</span>
              <span style="color: #ff0000">Include</span>
              <span style="color: #0000ff">="$(SolutionRoot)\**\assemblyinfo.cs"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="Get
Revision Number from BuildNumber &amp;quot;$(BuildNumber)&amp;quot;."</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ExtractRevision</span>
              <span style="color: #ff0000">BuildNumber</span>
              <span style="color: #0000ff">="$(BuildNumber)"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Output</span>
              <span style="color: #ff0000">TaskParameter</span>
              <span style="color: #0000ff">="BuildRevision"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #ff0000">PropertyName</span>
              <span style="color: #0000ff">="AssemblyRevision"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Output</span>
              <span style="color: #ff0000">TaskParameter</span>
              <span style="color: #0000ff">="BuildVersion"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #ff0000">PropertyName</span>
              <span style="color: #0000ff">="AssemblyBuildNumber"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">ExtractRevision</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #008000">&lt;!--
Update all the assembly info files with generated version info --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="Modifying
AssemblyInfo files under &amp;quot;$(SolutionRoot)&amp;quot;."</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Attrib</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(AssemblyInfoFiles)"</span>
              <span style="color: #ff0000">Normal</span>
              <span style="color: #0000ff">="true"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(AssemblyInfoFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
              <span style="color: #ff0000">Regex</span>
              <span style="color: #0000ff">="AssemblyVersion\(&amp;quot;.*&amp;quot;\)\]"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="AssemblyVersion(&amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;quot;)]"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(AssemblyInfoFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #ff0000">Regex</span>
              <span style="color: #0000ff">="AssemblyFileVersion\(&amp;quot;.*&amp;quot;\)\]"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="AssemblyFileVersion(&amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;quot;)]"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="AssemblyInfo
files updated to version &amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;quot;"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Target</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Project</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <div>Über den Namen des Target-Blocks mit "AfterGet" wird festgelegt, dass dieser
Block ausgeführt wird, nachdem der Build-Prozess die Quelldateien aus der Versionsverwaltung
geholt hat. Genau zu diesem Zeitpunkt wollen wir unsere Versionierung anpassen. In
den Zeilen 3 bis 5 erstellen wir eine ItemGroup die alle assemblyinfo.cs Dateien unserer
Solution enthält. In diesen Dateien wollen wir die Version anpassen. In Zeile 7 wird
eine Meldung in das Build-Log geschrieben. Dies ist hilfreich, um Fehler im Ablauf
des Scriptes besser einordnen zu können. 
</div>
        <div>In den Zeilen 8 bis 13 wird nun unser Build-Task aufgerufen. Wir übergeben die
Buildnummer $(BuildNumber) in den Parameter BuildNumber und lesen die Output-Parameter
aus und schreiben diese in AssemblyRevision bzw. AssemblyBuildNumber (die Properties
die wir weiter oben definiert hatten). In Zeile 17 heben wir den Schreibschutz der
AssemblyInfo-Dateien auf und in den folgenden Zeilen wird mit Hilfe eines Ersetzen-Vorgangs
die Version in den AssemblyInfo-Dateien ersetzt. Für diese Aktionen nutzen wir die
Community Build Tasks.
</div>
        <div>Damit können wir nun die Version unserer Anwendung bei jedem Build entsprechend
setzen.
</div>
        <div>In einem nächsten Schritt wollen wir den Build-Task nun noch erweitern um das
Build-Result in einer ZIP-Datei zu verpacken und diese anschließend per Mail zu versenden.
Auch hierbei greifen wir auf die MSBuild Community Tasks zurück. Das entsprechende
Target-Tag fügen wir einfach nach dem zuvor definierten ein. Als Name geben wir "AfterCompile"
an so dass diese Aktionen nach dem Kompilieren ausgeführt werden. 
</div>
        <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
          <span style="color: #606060"> 1:</span>
          <span style="color: #0000ff">&lt;</span>
          <span style="color: #800000">Target</span>
          <span style="color: #ff0000">Name</span>
          <span style="color: #0000ff">="AfterCompile"</span>
          <span style="color: #0000ff">&gt;</span>
        </pre>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">CreateItem</span>
              <span style="color: #ff0000">Include</span>
              <span style="color: #0000ff">="..\Binaries\Release\**\*.*"</span>
              <span style="color: #ff0000">Exclude</span>
              <span style="color: #0000ff">="..\Binaries\Release\**\*.pdb;..\Binaries\Release\**\*codeanalysis*"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Output</span>
              <span style="color: #ff0000">ItemName</span>
              <span style="color: #0000ff">="ZipFiles"</span>
              <span style="color: #ff0000">TaskParameter</span>
              <span style="color: #0000ff">="Include"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">CreateItem</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="Zipping
Buildresult to \\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Zip</span>
              <span style="color: #ff0000">ZipFileName</span>
              <span style="color: #0000ff">="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ZipFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #ff0000">WorkingDirectory</span>
              <span style="color: #0000ff">="..\Binaries\Release\"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Mail</span>
              <span style="color: #ff0000">SmtpServer</span>
              <span style="color: #0000ff">="tfs"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #ff0000">To</span>
              <span style="color: #0000ff">="tschissler@tfs"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>
              <span style="color: #ff0000">From</span>
              <span style="color: #0000ff">="build@tfs"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #ff0000">Subject</span>
              <span style="color: #0000ff">="BuildDemo
v$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)
released"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #ff0000">Body</span>
              <span style="color: #0000ff">="A
new version of the BuildDemo was released. Please find the newest files attached to
this mail. You can also download them from the download folder."</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #ff0000">Attachments</span>
              <span style="color: #0000ff">="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Target</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <p>
Hier sammeln zunächst alle Dateien aus dem Build-Drop-Verzeichnis exklusive der PDB-
und Codeanalyse-Dateien In Zeilen 8-10 werden diese Dateien in ein ZIP-File verpackt
dem wir im datei-Name die Version mitgeben. Anschließend versenden wir eine e-Mail
der wir dieses ZIP-File als Attachment anhängen. 
</p>
        <p>
Als zweite Variante wollen wir im Rahmen des Builds ein Click-Once Paket erstellen.
Die Herausforderung bei der Erstellung des ClickOnce-Paketes ist dass dort die Deployment-Url
hinterlegt werden muss. Vor allem wenn verschiedene Pakete für unterschiedliche Kunden
erstellt werden sollen, ist dies nur durch eine Automatisierung im Rahmen des Builds
sinnvoll handelbar. Hierzu ersetzen wir den AfterCompile-Target durch folgendes Script:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Target</span>
              <span style="color: #ff0000">Name</span>
              <span style="color: #0000ff">="AfterCompile"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">&lt;!--
Publish using ClickOnce --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Message</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="modify
Publish directory for $(SolutionRoot)"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #008000">&lt;!--
Update directory where to publish the project --&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ProjectFiles</span>
              <span style="color: #ff0000">Include</span>
              <span style="color: #0000ff">="$(SolutionRoot)\Source\Dev\BuildDemo\BuildDemo.csproj"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">ItemGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">PublishDir</span>
              <span style="color: #0000ff">&gt;</span>\\tfs\Deploy\BuildDemo\ClickOnce\<span style="color: #0000ff">&lt;/</span><span style="color: #800000">PublishDir</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">InstallUrl</span>
              <span style="color: #0000ff">&gt;</span>\\tfs\Deploy\BuildDemo\ClickOnce\<span style="color: #0000ff">&lt;/</span><span style="color: #800000">InstallUrl</span><span style="color: #0000ff">&gt;</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">PropertyGroup</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Attrib</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
              <span style="color: #ff0000">Normal</span>
              <span style="color: #0000ff">="true"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>      <span style="color: #ff0000">Regex</span><span style="color: #0000ff">="&amp;lt;PublishUrl&amp;gt;.*&amp;lt;/PublishUrl&amp;gt;"</span></pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="&amp;lt;PublishUrl&amp;gt;$(PublishDir)&amp;lt;/PublishUrl&amp;gt;"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">FileUpdate</span>
              <span style="color: #ff0000">Files</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #ff0000">Regex</span>
              <span style="color: #0000ff">="&amp;lt;InstallUrl&amp;gt;.*&amp;lt;/InstallUrl&amp;gt;"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #ff0000">ReplacementText</span>
              <span style="color: #0000ff">="&amp;lt;InstallUrl&amp;gt;$(InstallURL)&amp;lt;/InstallUrl&amp;gt;"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">MSBuild</span>
              <span style="color: #ff0000">Projects</span>
              <span style="color: #0000ff">="@(ProjectFiles)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #ff0000">Properties</span>
              <span style="color: #0000ff">="PublishDir=$(PublishDir);ApplicationVersion=$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)"</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #ff0000">Targets</span>
              <span style="color: #0000ff">="Publish"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Target</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <p>
In den Zeilen 5 bis 7 lesen wir das csproj-File der Anwendung in eine ItemGroup. Anschließend
definieren wir zwei Properties für PublishDir und InstallUrl. Diese werden dann über
eine Ersetzung in die csproj-Datei eingefügt. Anschließend wird ein MSBuild-Task gestartet
der das ClickOnce-Paket erstellt und an der angegebenen PublishDir und mit der Versionsnummer
veröffentlicht.
</p>
        <p>
Das Ganze wird in dem genannten Webcast Live demonstriert. Über Feedback würde ich
mich sehr freuen.
</p>
        <p>
          <a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405249">Details
zur Veranstaltung: Team Build mit Custom Build Tasks erweitern [1032405249] - Microsoft
Deutschland GmbH</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=70ff6e02-8a52-4d96-86b1-cb1029b2a362" />
      </body>
      <title>MSDN Webcast zum Thema Team Build mit Custom Build Tasks erweitern</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</link>
      <pubDate>Fri, 13 Mar 2009 01:05:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height="100" alt="MSDN Webcasts" src="http://www.microsoft.com/germany/msdn/images/vkey/vkey_webcasts.jpg" width="550"&gt;
&lt;/p&gt;
&lt;p&gt;
Am 16.03.09 geht ein neuer Webcast von mir online mit dem Thema "Team Build mit Custom
Build Tasks erweitern". Ich möchte hier schon mal die entsprechenden Infos veröffentlichen.
&lt;/p&gt;
&lt;p&gt;
In TeamBuild lassen sich eigene Build-Task integrieren. Diese können sehr einfach
erstellt werden. Hierzu wird eine Klasse erstellt und diese von Task abgeleitet. Im
folgenden Beispiel wird ein Build-Task erstellt, der im Rahmen des Builds die Version
der Anwendung setzt. Und zwar soll hier die Build-Nummer in der Versionsnummer der
Assembly abgebildet werden. Dies bietet Vorteile, wenn zu einer bestimmten Anwendungsversion
der entsprechende Build identifiziert werden soll. 
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Build.Utilities;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; Microsoft.Build.Framework;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Artiso.BuildTasks&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Creates a AssemblyVersion out of a BuildNumber&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
AssemblyVersion.Minjor and AssemblyVersion.Minor will be defined fiexed in&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
the Build-Script. If the BuildNumber is Dev_Versioning_20090305.4 we use &lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
two digit year and month for AssemblyBuildNumber and day and 3 digit BuildRevision&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
for AssemblyRevision. BuildRevisio &lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;example&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Dev_Versioning_20090305.4 =&amp;gt; xx.yy.0903.05004&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/example&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ExtractRevision
: Task&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; [rgn]
Fields(3)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; buildRevision;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; buildVersion;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; buildNumber;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; [rgn]
Properties(3)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 30:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 31:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Input Build Number&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 32:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 33:&lt;/span&gt; [Required]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 34:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; BuildNumber&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 35:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 36:&lt;/span&gt; set
{ buildNumber = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 37:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 39:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 40:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Returns the sortened date of the build&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 41:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 42:&lt;/span&gt; [Output]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 43:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; BuildVersion&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 44:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 45:&lt;/span&gt; get
{ &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; buildVersion; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 46:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 47:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 48:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 49:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
Returns the Build Revision (number of build at this day&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 50:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 51:&lt;/span&gt; [Output]&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 52:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; BuildRevision&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 53:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 54:&lt;/span&gt; get
{ &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; buildRevision; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 55:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 56:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 57:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 58:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; [rgn]
Methods(1)&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 59:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Execute()&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 60:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 61:&lt;/span&gt; buildVersion
= &lt;span style="color: #006080"&gt;"0"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 62:&lt;/span&gt; buildRevision
= &lt;span style="color: #006080"&gt;"0"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 63:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 64:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (buildNumber
!= &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; buildNumber.Contains(&lt;span style="color: #006080"&gt;"."&lt;/span&gt;))&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 65:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 66:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[]
buildNumberParts = buildNumber.Substring(buildNumber.LastIndexOf(&lt;span style="color: #006080"&gt;'_'&lt;/span&gt;)+1).Split(&lt;span style="color: #006080"&gt;'.'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 67:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 68:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
Dev_Versioning_20090305.4 -&amp;gt; 0903.02005&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 69:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
use year (2 digits) and mont for buildversion&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 70:&lt;/span&gt; buildVersion
= buildNumberParts[0].Substring(2, 4);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 71:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 72:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
use day and number of build in this day for build revision&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 73:&lt;/span&gt; buildRevision
= buildNumberParts[0].Substring(6) + buildNumberParts[1].PadLeft(3, &lt;span style="color: #006080"&gt;'0'&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 74:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 75:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 76:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 77:&lt;/span&gt; &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 78:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 79:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Das Property BuildNumber wird als Input-Parameter verwendet und mit dem Attribut [Required]
versehen. Darüber kann die BuildNumber in unseren Task übergeben werden. Durch das
Attribut [Output] werden die beiden Properties BuildVersion und BuildRevision als
Rückgabewerte definiert. Beim Ausführen des Builds wird die Methode Execute aufgerufen.
Hier werden nun aus der Build-Number die entsprechenden Informationen extrahiert und
diese dann in BuildVersion und BuildRevision zurückgeschrieben. Dies ist natürlich
nur ein einfaches Beispiel, aber mit diesen Grundlagen können nun beliebige Build-Tasks
definiert werden. Im nächsten Schritt schauen wir uns an, wie wir diesen Custom Build
Task nun in unseren Build-Prozess einbinden. Hierzu kopieren wir zunächst die Assembly
in einen entsprechenden Ordner. Hier bietet sich an unter c:\Program Files\MSBuild
einen entsprechenden Ordner anzulegen und dort die Assemblies abzulegen.
&lt;/p&gt;
&lt;p&gt;
Nun muss das Build-Script entsprechend angepasst werden. Diese liegt in der Quellcode-Verwaltung
und muss zum Bearbeiten zuerst aus- und danach wieder eingechecked werden. Um diesen
Vorgang zu vereinfachen empfehle ich die TFS Sidekicks (&lt;a href="http://www.attrice.info/downloads/index.htm"&gt;http://www.attrice.info/downloads/index.htm&lt;/a&gt;)
die direkt im Kontextmenü des TeamExplorers entsprechende Kommandos einfügt. Das nun
ausgecheckte PROJ-File kann nun bearbeitet werden.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
DO NOT EDIT the project element - the ToolsVersion specified here does not prevent
the solutions &lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #008000"&gt; and
projects in the SolutionToBuild item group from targeting other versions of the .NET
framework. &lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #008000"&gt; --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="DesktopBuild"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://schemas.microsoft.com/developer/msbuild/2003"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="3.5"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Do not edit this --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;UsingTask&lt;/span&gt; &lt;span style="color: #ff0000"&gt;AssemblyFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(MSBuildExtensionsPath)\ArtisoBuildTasks\ArtisoBuildTasks.dll"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ExtractRevision"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Assembly version properties. Adjust here Major and Minor Version--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;3&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;...
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;In Zeile 11 wird unser BuildTask entsprechend registriert. In Zeile 9 werden
noch weitere Build-Tasks registriert. Hier gereicht es uns zum Vorteil, dass Team-Build
auf MSBuild basiert. D.h. es können entsprechende Tasks für MSBuild problemlos integriert
werden. Diese gibt es in großer Zahl für sehr viele Anwendungsbereiche zum großen
Teil frei Verfügbar zum Download. Wir verwenden hier die MSBuild Community Tasks (&lt;u&gt;&lt;a href="http://msbuildtasks.tigris.org/"&gt;http://msbuildtasks.tigris.org/&lt;/a&gt;&lt;/u&gt;).
Wir werden aus diesem Paket Aktionen verwenden.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;In den Zeilen 14 bis 20 wird eine sog. PropertyGroup angelegt. Darin werden einzelne
Properties definiert und mit Default-Werten vorbelegt. Diese Properties lassen sich
mit Variablen innerhalb eines Software-Codes vergleichen. Die AssemblyMajorVersion
und AssemblyMinorVersion werden hier festgelegt. AssemblyBuildNumber und AssemblyRevision
werden wir im weiteren Verlauf überschreiben.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Am Ende des Scripts direkt vor dem schließenden &amp;lt;/Project&amp;gt;-Tag wird nun
ein Target-Block eingefügt.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; ...&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AfterGet"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyInfoFiles&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(SolutionRoot)\**\assemblyinfo.cs"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Get
Revision Number from BuildNumber &amp;amp;quot;$(BuildNumber)&amp;amp;quot;."&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ExtractRevision&lt;/span&gt; &lt;span style="color: #ff0000"&gt;BuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(BuildNumber)"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="BuildRevision"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyRevision"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="BuildVersion"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyBuildNumber"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ExtractRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Update all the assembly info files with generated version info --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Modifying
AssemblyInfo files under &amp;amp;quot;$(SolutionRoot)&amp;amp;quot;."&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Attrib&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(AssemblyInfoFiles)"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Normal&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(AssemblyInfoFiles)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyVersion\(&amp;amp;quot;.*&amp;amp;quot;\)\]"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyVersion(&amp;amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;amp;quot;)]"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(AssemblyInfoFiles)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyFileVersion\(&amp;amp;quot;.*&amp;amp;quot;\)\]"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyFileVersion(&amp;amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;amp;quot;)]"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AssemblyInfo
files updated to version &amp;amp;quot;$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)&amp;amp;quot;"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;Über den Namen des Target-Blocks mit "AfterGet" wird festgelegt, dass dieser
Block ausgeführt wird, nachdem der Build-Prozess die Quelldateien aus der Versionsverwaltung
geholt hat. Genau zu diesem Zeitpunkt wollen wir unsere Versionierung anpassen. In
den Zeilen 3 bis 5 erstellen wir eine ItemGroup die alle assemblyinfo.cs Dateien unserer
Solution enthält. In diesen Dateien wollen wir die Version anpassen. In Zeile 7 wird
eine Meldung in das Build-Log geschrieben. Dies ist hilfreich, um Fehler im Ablauf
des Scriptes besser einordnen zu können. 
&lt;/div&gt;
&lt;div&gt;In den Zeilen 8 bis 13 wird nun unser Build-Task aufgerufen. Wir übergeben die
Buildnummer $(BuildNumber) in den Parameter BuildNumber und lesen die Output-Parameter
aus und schreiben diese in AssemblyRevision bzw. AssemblyBuildNumber (die Properties
die wir weiter oben definiert hatten). In Zeile 17 heben wir den Schreibschutz der
AssemblyInfo-Dateien auf und in den folgenden Zeilen wird mit Hilfe eines Ersetzen-Vorgangs
die Version in den AssemblyInfo-Dateien ersetzt. Für diese Aktionen nutzen wir die
Community Build Tasks.
&lt;/div&gt;
&lt;div&gt;Damit können wir nun die Version unserer Anwendung bei jedem Build entsprechend
setzen.
&lt;/div&gt;
&lt;div&gt;In einem nächsten Schritt wollen wir den Build-Task nun noch erweitern um das
Build-Result in einer ZIP-Datei zu verpacken und diese anschließend per Mail zu versenden.
Auch hierbei greifen wir auf die MSBuild Community Tasks zurück. Das entsprechende
Target-Tag fügen wir einfach nach dem zuvor definierten ein. Als Name geben wir "AfterCompile"
an so dass diese Aktionen nach dem Kompilieren ausgeführt werden. 
&lt;/div&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AfterCompile"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;CreateItem&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..\Binaries\Release\**\*.*"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Exclude&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..\Binaries\Release\**\*.pdb;..\Binaries\Release\**\*codeanalysis*"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ItemName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ZipFiles"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Include"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;CreateItem&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Zipping
Buildresult to \\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Zip&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ZipFileName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ZipFiles)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;WorkingDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="..\Binaries\Release\"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Mail&lt;/span&gt; &lt;span style="color: #ff0000"&gt;SmtpServer&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="tfs"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;To&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="tschissler@tfs"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;From&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="build@tfs"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Subject&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="BuildDemo
v$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)
released"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="A
new version of the BuildDemo was released. Please find the newest files attached to
this mail. You can also download them from the download folder."&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Attachments&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="\\tfs\deploy\BuildDemo\BuildDemo_$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision).zip"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Hier sammeln zunächst alle Dateien aus dem Build-Drop-Verzeichnis exklusive der PDB-
und Codeanalyse-Dateien In Zeilen 8-10 werden diese Dateien in ein ZIP-File verpackt
dem wir im datei-Name die Version mitgeben. Anschließend versenden wir eine e-Mail
der wir dieses ZIP-File als Attachment anhängen. 
&lt;/p&gt;
&lt;p&gt;
Als zweite Variante wollen wir im Rahmen des Builds ein Click-Once Paket erstellen.
Die Herausforderung bei der Erstellung des ClickOnce-Paketes ist dass dort die Deployment-Url
hinterlegt werden muss. Vor allem wenn verschiedene Pakete für unterschiedliche Kunden
erstellt werden sollen, ist dies nur durch eine Automatisierung im Rahmen des Builds
sinnvoll handelbar. Hierzu ersetzen wir den AfterCompile-Target durch folgendes Script:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="AfterCompile"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Publish using ClickOnce --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="modify
Publish directory for $(SolutionRoot)"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!--
Update directory where to publish the project --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ProjectFiles&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="$(SolutionRoot)\Source\Dev\BuildDemo\BuildDemo.csproj"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PublishDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;\\tfs\Deploy\BuildDemo\ClickOnce\&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PublishDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;InstallUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;\\tfs\Deploy\BuildDemo\ClickOnce\&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;InstallUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Attrib&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Normal&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;PublishUrl&amp;amp;gt;.*&amp;amp;lt;/PublishUrl&amp;amp;gt;"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;PublishUrl&amp;amp;gt;$(PublishDir)&amp;amp;lt;/PublishUrl&amp;amp;gt;"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;FileUpdate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Regex&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;InstallUrl&amp;amp;gt;.*&amp;amp;lt;/InstallUrl&amp;amp;gt;"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ReplacementText&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="&amp;amp;lt;InstallUrl&amp;amp;gt;$(InstallURL)&amp;amp;lt;/InstallUrl&amp;amp;gt;"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;MSBuild&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Projects&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="@(ProjectFiles)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="PublishDir=$(PublishDir);ApplicationVersion=$(AssemblyMajorVersion).$(AssemblyMinorVersion).$(AssemblyBuildNumber).$(AssemblyRevision)"&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Targets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Publish"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
In den Zeilen 5 bis 7 lesen wir das csproj-File der Anwendung in eine ItemGroup. Anschließend
definieren wir zwei Properties für PublishDir und InstallUrl. Diese werden dann über
eine Ersetzung in die csproj-Datei eingefügt. Anschließend wird ein MSBuild-Task gestartet
der das ClickOnce-Paket erstellt und an der angegebenen PublishDir und mit der Versionsnummer
veröffentlicht.
&lt;/p&gt;
&lt;p&gt;
Das Ganze wird in dem genannten Webcast Live demonstriert. Über Feedback würde ich
mich sehr freuen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032405249"&gt;Details
zur Veranstaltung: Team Build mit Custom Build Tasks erweitern [1032405249] - Microsoft
Deutschland GmbH&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=70ff6e02-8a52-4d96-86b1-cb1029b2a362" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,70ff6e02-8a52-4d96-86b1-cb1029b2a362.aspx</comments>
      <category>Eigene Tutorials</category>
      <category>Qualitätsmanagement</category>
      <category>Team System Server</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=b705c37b-b47f-4e8d-8f8b-091efc4cb684</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=b705c37b-b47f-4e8d-8f8b-091efc4cb684</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After <a href="Login.aspx">logging in</a>, be sure to visit all the options under <a href="EditConfig.aspx">Configuration</a> in
the Admin Menu Bar above. There are <a href="http://dasblog.info/ThemeScreenShots.aspx">26
themes to choose from</a>, and you can also <a href="http://dasblog.info/ThemesAndMacros.aspx">create
your own</a>.
</p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=b705c37b-b47f-4e8d-8f8b-091efc4cb684" />
      </body>
      <title>Congratulations, you've installed dasBlog with Web Deploy!</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</link>
      <pubDate>Wed, 11 Mar 2009 07:00:00 GMT</pubDate>
      <description>
		&lt;p&gt;
After &lt;a href="Login.aspx"&gt;logging in&lt;/a&gt;, be sure to visit all the options under &lt;a href="EditConfig.aspx"&gt;Configuration&lt;/a&gt; in
the Admin Menu Bar above. There are &lt;a href="http://dasblog.info/ThemeScreenShots.aspx"&gt;26
themes to choose from&lt;/a&gt;, and you can also &lt;a href="http://dasblog.info/ThemesAndMacros.aspx"&gt;create
your own&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=b705c37b-b47f-4e8d-8f8b-091efc4cb684" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</comments>
      <category>dasBlog</category>
    </item>
  </channel>
</rss>
