<?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 - Tools</title>
    <link>http://www.artiso.com/ProBlog/</link>
    <description>Neues rund um's Thema .Net</description>
    <language>de-de</language>
    <copyright>Thomas</copyright>
    <lastBuildDate>Tue, 02 Mar 2010 16:34:34 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>tschissler@artiso.com</managingEditor>
    <webMaster>tschissler@artiso.com</webMaster>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools
die viele nützliche Funktionen hinzufügen.
</p>
        <p>
Kostenloaser Download: <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b">http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b</a></p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4" />
      </body>
      <title>Team Foundation Server Power Tools 2010 RC</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</link>
      <pubDate>Tue, 02 Mar 2010 16:34:34 GMT</pubDate>
      <description>&lt;p&gt;
Für den Release Candidate für VS / TFS 2010 gibt es acuh die passenden Power-Tools
die viele nützliche Funktionen hinzufügen.
&lt;/p&gt;
&lt;p&gt;
Kostenloaser Download: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b"&gt;http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,64bbf2e1-b46a-4ae7-8a7f-03f45dde99e4.aspx</comments>
      <category>Team System Server;Tools;VS 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=48ea5bb9-ec43-40b9-a7db-079d130bd345</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=48ea5bb9-ec43-40b9-a7db-079d130bd345</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Team Foundation Server verwendet in den Versionen bis 2008 eine XML-Datei um den
Build-Prozess zu steuern. Diese Datei wird Build Project File genannt und wird in
der Versionsverwaltung abgelegt um vom Buildcomputer genutzt werden zu können. Jeder
der diese Datei aber schon manuell bearbeitet hat, kennt das umständliche Vorgehen
umd die Date erst aus der Quellcode-Verwaltung auszuchecken, und nach dem Bearbeiten
wieder einzuchecken. Einfacher geht das mit den <a href="http://www.attrice.info/cm/tfs/index.htm">TFS
Sidekicks</a>, die direkt im Context-Menü des Team-Explorers eine Checkout und Checkin-Funktion
für das Project-File anbietet.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamFoundationServerBuildProjectFilesele_197A/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="273" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamFoundationServerBuildProjectFilesele_197A/image_thumb.png" width="232" border="0" />
          </a>
        </p>
        <p>
Darüber hinaus bieten die TFS Sidekicks noch weitere sehr nützliche Funktionen, auf
jeden Fall ist das Tool einen näheren Blick wert. 
</p>
        <p>
          <a href="http://www.attrice.info/cm/tfs/index.htm">Attrice Corporation - Team Foundation
Sidekicks</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=48ea5bb9-ec43-40b9-a7db-079d130bd345" />
      </body>
      <title>Team Foundation Server Build Project Files eleganter bearbeiten</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx</link>
      <pubDate>Tue, 18 Nov 2008 00:49:56 GMT</pubDate>
      <description>&lt;p&gt;
Der Team Foundation Server verwendet in den Versionen bis 2008 eine XML-Datei um den
Build-Prozess zu steuern. Diese Datei wird Build Project File genannt und wird in
der Versionsverwaltung abgelegt um vom Buildcomputer genutzt werden zu können. Jeder
der diese Datei aber schon manuell bearbeitet hat, kennt das umständliche Vorgehen
umd die Date erst aus der Quellcode-Verwaltung auszuchecken, und nach dem Bearbeiten
wieder einzuchecken. Einfacher geht das mit den &lt;a href="http://www.attrice.info/cm/tfs/index.htm"&gt;TFS
Sidekicks&lt;/a&gt;, die direkt im Context-Menü des Team-Explorers eine Checkout und Checkin-Funktion
für das Project-File anbietet.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamFoundationServerBuildProjectFilesele_197A/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="273" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamFoundationServerBuildProjectFilesele_197A/image_thumb.png" width="232" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Darüber hinaus bieten die TFS Sidekicks noch weitere sehr nützliche Funktionen, auf
jeden Fall ist das Tool einen näheren Blick wert. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.attrice.info/cm/tfs/index.htm"&gt;Attrice Corporation - Team Foundation
Sidekicks&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=48ea5bb9-ec43-40b9-a7db-079d130bd345" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,48ea5bb9-ec43-40b9-a7db-079d130bd345.aspx</comments>
      <category>Team System Server;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3bc7e8bd-5052-4be2-96db-e8e7d80cf9da</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3bc7e8bd-5052-4be2-96db-e8e7d80cf9da</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der <a href="http://www.alm-tools.de/">artiso Workitem Manager</a> ist ein Tool mit
dem sich Workitems hierarchisch organisieren lassen. Diese hierarchische Organisation
bietet verschiedene Vorteile. Neben einer besseren Strukturierung und einer erhöhten
Übersichtlichkeit vor allem auch eine visuelle Traceability. Damit ist gemein, dass
durch die Hierarchie sichtbar wird welche Tests und Implementierungsaufgaben einem
Feature zugeordnet sind. Die ist z.B. sehr hilfreich, wenn sich das Feature ändert
zu erkennen, welche Workitems auf mögliche Auswirkungen überprüft werden können. Wie
hierarchische Workitems in Projekten hilfreich eingesetzt werden, habe ich zusammen
mit <a href="http://blogs.msdn.com/cbinder">Christian Binder</a> in diesem <a href="http://www.artiso.com/ProBlog/PermaLink,guid,667a97e1-6d04-4744-935f-7b796f621643.aspx">MSDN-Webcast</a> erörtert.
</p>
        <p>
Leider bringt der TFS in der Version 2008 diese Hierarchie nicht von Haus aus mit.
Deshalb hat <a href="www.artiso.com">artiso</a> den Workitem Manager entwickelt. Diesen
gibt es nun auch als Open-Version. Die Open-Version ist kostenlos und wird auch als
Source-Code bereitgestellt. Wie sich der Workitem Manager Open zur Vollversion unterscheidet
kann man der unten stehenden Funktionsmatrix entnehmen. Weiter unten gibt's noch eine
Screenshot. 
</p>
        <p>
Den Donload für das Setup und den Source-Code findet man unter <a href="http://www.alm-tools.de">http://www.alm-tools.de</a>.
Gerne freue ich mich über euer Feedback zu dem Tool.
</p>
        <p>
          <img src="http://www.alm-tools.com/contentImages/WIM_FeatureComparison.jpg" />
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/artisoWorkitemManagerOpenverffentlicht_1111/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="469" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/artisoWorkitemManagerOpenverffentlicht_1111/image_thumb.png" width="673" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3bc7e8bd-5052-4be2-96db-e8e7d80cf9da" />
      </body>
      <title>artiso Workitem Manager Open ver&amp;ouml;ffentlicht</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx</link>
      <pubDate>Fri, 31 Oct 2008 00:14:31 GMT</pubDate>
      <description>&lt;p&gt;
Der &lt;a href="http://www.alm-tools.de/"&gt;artiso Workitem Manager&lt;/a&gt; ist ein Tool mit
dem sich Workitems hierarchisch organisieren lassen. Diese hierarchische Organisation
bietet verschiedene Vorteile. Neben einer besseren Strukturierung und einer erhöhten
Übersichtlichkeit vor allem auch eine visuelle Traceability. Damit ist gemein, dass
durch die Hierarchie sichtbar wird welche Tests und Implementierungsaufgaben einem
Feature zugeordnet sind. Die ist z.B. sehr hilfreich, wenn sich das Feature ändert
zu erkennen, welche Workitems auf mögliche Auswirkungen überprüft werden können. Wie
hierarchische Workitems in Projekten hilfreich eingesetzt werden, habe ich zusammen
mit &lt;a href="http://blogs.msdn.com/cbinder"&gt;Christian Binder&lt;/a&gt; in diesem &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,667a97e1-6d04-4744-935f-7b796f621643.aspx"&gt;MSDN-Webcast&lt;/a&gt; erörtert.
&lt;/p&gt;
&lt;p&gt;
Leider bringt der TFS in der Version 2008 diese Hierarchie nicht von Haus aus mit.
Deshalb hat &lt;a href="www.artiso.com"&gt;artiso&lt;/a&gt; den Workitem Manager entwickelt. Diesen
gibt es nun auch als Open-Version. Die Open-Version ist kostenlos und wird auch als
Source-Code bereitgestellt. Wie sich der Workitem Manager Open zur Vollversion unterscheidet
kann man der unten stehenden Funktionsmatrix entnehmen. Weiter unten gibt's noch eine
Screenshot. 
&lt;/p&gt;
&lt;p&gt;
Den Donload für das Setup und den Source-Code findet man unter &lt;a href="http://www.alm-tools.de"&gt;http://www.alm-tools.de&lt;/a&gt;.
Gerne freue ich mich über euer Feedback zu dem Tool.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.alm-tools.com/contentImages/WIM_FeatureComparison.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/artisoWorkitemManagerOpenverffentlicht_1111/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="469" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/artisoWorkitemManagerOpenverffentlicht_1111/image_thumb.png" width="673" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3bc7e8bd-5052-4be2-96db-e8e7d80cf9da" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3bc7e8bd-5052-4be2-96db-e8e7d80cf9da.aspx</comments>
      <category>Team System Server;Tipps und Tricks;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft Research hat vor kurzer Zeit <a href="http://research.microsoft.com/pex">PEX</a> zum
freien Download veröffentlicht. Hinter diesem unscheinbaren Kürzel verbirgt sich ein
Tool das absolut genial und beeindruckend ist und klar mach, warum Microsoft ein research
center unterhält. Das Tool verspricht nichts weniger als die automatische Generierung
von Unit-Tests und den dazugehörigen Testcases um eine möglichst hohe Code-Abdeckung
zu erzielen. Detaillierte Informationen bietet das <a href="http://research.microsoft.com/pex/articles/pextutorial.pdf">Whitepaper</a>,
wer sich auf die schnelle einen Einblick verschaffen möchte findet einen Überblick
im Folgenden (na ja, für einen Überblick ist der Post vielleicht doch ein wenig lang
geraden, aber ich konnte mich nicht bremsen vor Begeisterung):
</p>
        <p>
          <strong>Darf ich vorstellen - PEX</strong>
        </p>
        <p>
Gegeben sei folgende Methode die getestet werden soll:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> SimpleTest(<span style="color: #0000ff">int</span> x1, <span style="color: #0000ff">int</span> x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">if</span> (x1
&gt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (x1
&lt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&lt; x2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
== x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> }</pre>
          </div>
        </div>
        <p>
Für das versierte Auge eines Entwicklers ist sofort klar, da brauchen wir 3 Testcases
um eine vollständige Code-Abdeckung zu erzielen. Mal sehen, was PEX daraus macht.
Zunächst mal muss PEX heruntergeladen und installiert sein.  Dann kann man einfach
einen "Parameterized Unit Test Stub" erzeugen. Dazu in der Methode rechts klicken
und den Befehl aus dem Pex-Menü auswählen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="161" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb.png" width="447" border="0" />
          </a>
        </p>
        <p>
Im folgenden Dialog können Sie verschiedene Parameter angeben. Das wichtigste hier
ist das Testprojekt in dem der Stub erzeugt werden soll.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_6.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_2.png" width="469" border="0" />
          </a>
        </p>
        <p>
Der erzeugte Stub sieht dann so aus:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #008000">///
&lt;summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #008000">///
This class contains parameterized unit tests for Calculation</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">///
&lt;/summary&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> [TestClass]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> [PexClass(<span style="color: #0000ff">typeof</span>(Calculation))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> CalculationTest</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> [PexMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> SimpleTest(</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> [PexAssumeUnderTest]Calculation
target,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">int</span> x1,</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">int</span> x2</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> )</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">string</span> result
= target.SimpleTest(x1, x2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">return</span> result;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>
              <span style="color: #008000">//
TODO: add assertions to method CalculationTest.SimpleTest(Calculation, Int32, Int32)</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> }</pre>
          </div>
        </div>
        <p>
Bei diesem Stub handelt es such um eine Vorlage für einen parameterisierten Unit-test.
Toll, und was lässt sich damit nun machen? Wir können eine "Exploration" starten.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_8.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_3.png" width="461" border="0" />
          </a>
        </p>
        <p>
Diese Exploration versucht nun Input-Parameter zu finden die zu einer möglichst 100%igen
Code-Abdeckung führen. Und hier beginnt nun die Magic von PEX. Ohne unser Zutun findet
PEX 3 Kombinationen von Input-Parametern die tatsächlich eine komplette Code-Abdeckung
erzielen- WOW! Dazu analysiert PEX wirklich den von uns erstellten Code und kann daraus
definieren, mit welchen Input-Parametern die einzelnen noch nicht abgedeckten Zweige
erreicht werden können.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_10.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_4.png" width="407" border="0" />
          </a>
        </p>
        <p>
Und das schönste, PEX baut uns automatisch 3 Unit-Tests die diese Testcases implementieren:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(CalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SimpleTest01()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> Calculation
calculation = <span style="color: #0000ff">new</span> Calculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> s
= <span style="color: #0000ff">this</span>.SimpleTest(calculation, 1, 2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
&lt; x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(CalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SimpleTest02()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> Calculation
calculation = <span style="color: #0000ff">new</span> Calculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> s
= <span style="color: #0000ff">this</span>.SimpleTest(calculation, 1879212556, 1879212556);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
== x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(CalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SimpleTest03()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> Calculation
calculation = <span style="color: #0000ff">new</span> Calculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span> s
= <span style="color: #0000ff">this</span>.SimpleTest(calculation, 256, 254);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
&gt; x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> }</pre>
          </div>
        </div>
        <p>
Diese Unit-Tests können wir nun starten und sehen, dass diese wie erwartet alle erfolgreich
sind.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_12.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="150" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_5.png" width="244" border="0" />
          </a>
        </p>
        <p>
Damit haben wir einen Test automatisiert erstellt, der sicherstellen kann, dass diese
Methode ihr Verhalten nach Außen für die aktuell definierten Test-Cases nicht verändert.
Damit können ungewollte Änderungen an der Methode erkannt und beseitigt werden. Ob
die Methode allerdings ihre Aufgabe korrekt erledigt, kann PEX natürlich nicht testen.
Haben wir die Funktionsweise einer Methode allerdings einmal validiert, kann PEX nun
sehr einfach dieses Verhalten prüfen. Und natürlich eignet es sich auch sehr gut um
mögliche Test-Cases zu definieren. Es müssen in diesem Fall dann nur noch die einzelnen
Ergebnisse je Test validiert werden.
</p>
        <p>
Ändern wir die Methode ab, so dass sich ihr Verhalten ändert, dann alarmiert uns der
entsprechende Test.
</p>
        <p>
          <strong>Soweit sogut - Und was geht sonst noch?</strong>
        </p>
        <p>
Wenn wir nun ein gewünschte Änderung der Funktionalität implementieren, wie kann PEX
dann damit umgehen? Zunächst würden wir die vorhandenen Tests durchführen, damit wir
sicher sind, dass die aktuelle Funktionalität noch korrekt läuft. Dann erweitern wir
unsere Methode:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> SimpleTest(<span style="color: #0000ff">int</span> x1, <span style="color: #0000ff">int</span> x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">if</span> (x1
&gt; x2 * 2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2 * 2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (x1
&gt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (x1
&lt; x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&lt; x2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
== x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
          </div>
        </div>
        <div>Zeile 3+4 haben wir neu hinzugefügt. Nun starten wir eine neue Exploration und
PEX ermittelt einen weiteren Test-Case um diese Funktion ebenfalls abzudecken.
</div>
        <div> 
</div>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_14.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_6.png" width="376" border="0" />
          </a>
        </p>
        <p>
          <strong>Schön - darf's noch ein bisschen mehr sein?</strong>
        </p>
        <p>
Dieses einfache Sample war ja schon sehr beeindruckend. Die Frage, die sich aber natürlich
direkt stellt, ist wie weit geht denn das? Wir wollen nun den Schwierigkeitsgrad für
PEX schrittweise steigern. Integer-Werte sind ja noch relativ einfach zu handhaben,
aber wie sieht's denn beispielsweise mit Strings aus? Hierzu zunächst wieder eine
Methode, die wir testen wollen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> StringOperations</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> CheckString(<span style="color: #0000ff">string</span> Input)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>)
&amp;&amp; Input.Length &gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc' and length &gt; 10"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"ABC"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'ABC'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Unknown
pattern"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> }</pre>
          </div>
        </div>
        <p>
Stubs erzeugen und Exploration starten. Ob PEX wohl solche Operationen wie "StartsWith"
und "Length" versteht?
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_16.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="172" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_7.png" width="433" border="0" />
          </a>
        </p>
        <p>
Es findet tatsächlich alle erforderlichen Input-Parameter und sogar noch mehr! PEX
stell fest, dass unsere Methode beim Übergeben einer NULL-Referenz eine Exception
wirft. Und damit nicht genug, PEX kann uns auch einen Vorschlag machen, wie wir unseren
Code verbessern können. Dazu im "Pex Exploration Results" - Fenster unter Views "Show
suggestions window" aufrufen. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_18.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_8.png" width="725" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_20.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_9.png" width="736" border="0" />
          </a>
        </p>
        <p>
Durch einen Doppelklick auf den Eintrag am unteren Rand des Bereichs öffnet sich ein
Fenster, das die vorgeschlagene Änderung direkt in unseren Code einfügen kann.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_22.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="432" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_10.png" width="536" border="0" />
          </a>
        </p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> CheckString(<span style="color: #0000ff">string</span> Input)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #008000">//
&lt;pex&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">if</span> (Input
== (<span style="color: #0000ff">string</span>)<span style="color: #0000ff">null</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">throw</span>
              <span style="color: #0000ff">new</span> ArgumentNullException(<span style="color: #006080">"Input"</span>);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #008000">//
&lt;/pex&gt;</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>)
&amp;&amp; Input.Length &gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc' and length &gt; 10"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"abc"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'abc'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">if</span> (Input.StartsWith(<span style="color: #006080">"ABC"</span>))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">return</span> Input
+ <span style="color: #006080">" Starts with 'ABC'"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"Unknown
pattern"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> }</pre>
          </div>
        </div>
        <p>
Die Zeilen 3-6 wurden von PEX erzeugt. Natürlich können wir das entsprechende Verhalten
im Code direkt ändern und an unsere Vorstellungen anpassen. Vielleicht ist es aber
gar keine schlechte Idee, in diesem Fall eine Exception zu werden. Dies ist das Standard-Verhalten
von PEX an dieser Stelle. Wird die erwartete Exception nicht mehr geworfen oder eine
andere Exception tritt auf, wird dies durch einen fehlgeschlagenen Test angezeigt.
</p>
        <p>
          <strong>Der nächste bitte!</strong>
        </p>
        <p>
So nun wollen wir noch einen Schritt weitergehen und sehen, wie PEX mit Listen umgehen
kann. Dazu habe ich folgende Testmethode erstellt (über den Sinn einer solchen Methode
wollen wir jetzt nicht nachdenken)
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">int</span> result
= 0;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">if</span> (list.Count
&gt; 10)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">int</span> i <span style="color: #0000ff">in</span> list)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> result
+= i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">int</span> i <span style="color: #0000ff">in</span> list)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> result
*= i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">return</span> result;</pre>
          </div>
        </div>
        <p>
Die Methode bekommt eine Liste von Integer-Werten übergeben. Wenn es mehr als 10 Elemente
sind, werden diese addiert, sonst werden die Werte miteinander Multipliziert. Mal
sehen, wie PEX mit Listen umgeht.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_24.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="120" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_11.png" width="572" border="0" />
          </a>
        </p>
        <p>
PEX erkennt noch, dass unsere Methode mit Null-References nicht korrekt umgeht, aber
dann verließen sie ihn.  Aber freundlicherweise bekommen wir noch einen Hinweis
"2 Object Creations". klickt man darauf, dann bekommt man schon mehr Informationen. 
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_26.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_12.png" width="441" border="0" />
          </a>
        </p>
        <p>
Aha, PEX kann also eine List&lt;int&gt; nicht erzeugen. Also was tun? Klickt man den
unteren der beiden Einträge an, bietet PEX etwas weiter rechts die Möglichkeit eine
Factory zu definieren. Eine Factory ist ein Extensibility-Point mit dem PEX beigebracht
werden kann mit solchen Objekten umzugehen. Ein Beispiel für eine solche Factory kann
so aussehen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">namespace</span> System.Collections.Generic</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> [PexFactoryClass]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">partial</span>
              <span style="color: #0000ff">class</span> ListFactory</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> [PexFactoryMethod(<span style="color: #0000ff">typeof</span>(List&lt;<span style="color: #0000ff">int</span>&gt;))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">static</span> List&lt;<span style="color: #0000ff">int</span>&gt;
Create(<span style="color: #0000ff">int</span> i)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">if</span> (i
&gt; 100)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> i
= 100;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> List&lt;<span style="color: #0000ff">int</span>&gt;
l = <span style="color: #0000ff">new</span> List&lt;<span style="color: #0000ff">int</span>&gt;();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> j
= 0; j &lt; i; j++)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> l.Add(j
* 10);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span>
              <span style="color: #0000ff">return</span> l;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> }</pre>
          </div>
        </div>
        <p>
Hier teilt man PEX nun mit, welche Elemente es damit erzeugen kann (Zeile 6). Anschließend
implementiert man eine Create-Methode die beliebige Parameter übernehmen kann. In
Abhängigkeit dieser Parameter wird nun eine Instanz des gewünschten Objektes erzeugt.
In unserem Beispiel übernehmen wir nur einen Parameter der die Länge der Liste angibt.
In den Zeilen 9/10 begrenzen wir die Länge der Lsite auf 100 Elemente. Die Liste selbst
befüllen wir mit einer Reihe von Zahlen. Hier ist es sicher keine gute Idee, z.B.
Zufallszahlen zu verwenden, da diese ja bei jedem Testdurchlauf andere Werte liefern
und deshalb der Assert nicht erfolgreich ausgeführt werden kann.
</p>
        <p>
Mit hilfe dieser Factory kannPEX nun unsere Testcases definieren. Dazu ermittelt es
einfach geeignete Parameter für die Create-Methode in unserer Factory statt das Objekt
selbst zu erzeugen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_28.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_13.png" width="597" border="0" />
          </a>
        </p>
        <p>
Die erzeugten Tests sehen dann so aus:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(ListCalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SumList03()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> List&lt;<span style="color: #0000ff">int</span>&gt;
list;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">int</span> i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span> list
= ListFactory.Create(2);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> ListCalculation
listCalculation = <span style="color: #0000ff">new</span> ListCalculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> i
= <span style="color: #0000ff">this</span>.SumList(listCalculation, list);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> Assert.AreEqual&lt;<span style="color: #0000ff">int</span>&gt;(0,
i);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(ListCalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> SumList04()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> List&lt;<span style="color: #0000ff">int</span>&gt;
list;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">int</span> i;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> list
= ListFactory.Create(536870912);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> ListCalculation
listCalculation = <span style="color: #0000ff">new</span> ListCalculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> i
= <span style="color: #0000ff">this</span>.SumList(listCalculation, list);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span> Assert.AreEqual&lt;<span style="color: #0000ff">int</span>&gt;(49500,
i);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> }</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
          <strong>Nun folgt noch die Kür</strong>
        </p>
        <p>
Nach den Erfahrungen mit der Liste bereits etwas skeptischer geworden, wollen wir's
jetzt aber doch wissen. Wie sieht's mit eigenen Objekten aus? Wie weit kommt PEX damit?
Auch hier gibt es wieder eine einfache Methode die wir testen wollen:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> ComplexDataCalculation</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> DoComplexDataCalculation(cData
d)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">if</span> (!d.IsValid)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"NotValid"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span>
              <span style="color: #0000ff">if</span> (d.DataValues.x1
&gt; d.DataValues.x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&gt; x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span>
              <span style="color: #0000ff">if</span> (d.DataValues.x1
&lt; d.DataValues.x2)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
&lt; x2"</span>; </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span>
              <span style="color: #0000ff">return</span>
              <span style="color: #006080">"x1
== x2"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cData</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span>
              <span style="color: #0000ff">public</span> cDataValues
DataValues { get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> ObsoleteParameter
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> IsValid
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> cDataValues</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">int</span> x1
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">int</span> x2
{ get; set; }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 29:</span> }</pre>
          </div>
        </div>
        <p>
Die Methode bekommt einen komplexen Datentyp übergeben. Und was macht PEX???
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_32.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="190" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_15.png" width="543" border="0" />
          </a>
        </p>
        <p>
PEX erkennt nicht nur, dass wir zwei Null-Exceptions abfangen sollten, sondern kann
auch unser Datenobjekt so initialisieren, dass wir wieder eine 100% Codeabdeckung
bekommen. Die Unit-Tests sehen ungefähr so aus:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [TestMethod]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> [PexGeneratedBy(<span style="color: #0000ff">typeof</span>(ComplexDataCalculationTest))]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> DoComplexDataCalculation04()</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span> cDataValues
cDataValues;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span> cData
cData;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">string</span> s;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> cDataValues
= <span style="color: #0000ff">new</span> cDataValues();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> cDataValues.x1
= 3;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> cDataValues.x2
= 4;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span> cData
= <span style="color: #0000ff">new</span> cData();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> cData.DataValues
= cDataValues;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> cData.ObsoleteParameter
= <span style="color: #006080">""</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> cData.IsValid
= <span style="color: #0000ff">true</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> ComplexDataCalculation
complexDataCalculation = <span style="color: #0000ff">new</span> ComplexDataCalculation();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> s
= <span style="color: #0000ff">this</span>.DoComplexDataCalculation(complexDataCalculation,
cData);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> Assert.AreEqual&lt;<span style="color: #0000ff">string</span>&gt;(<span style="color: #006080">"x1
&lt; x2"</span>, s);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> }</pre>
          </div>
        </div>
        <p>
Das ist schon extrem beeindruckend, wie PEX tatsächlich eine entsprechende Instanz
unseres Datenobjektes erzeugt und initialisiert und das so, dass wir alle Testcases
abdecken. Wirklich beeindruckend.
</p>
        <p>
        </p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:35094c03-c207-4962-9c04-0342f1082d8c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/PEX.zip" target="_blank">Die
Demos können hier heruntergeladen werden</a>
          </p>
        </div>
        <p>
        </p>
        <p>
Was haltet ihr davon? Würde mich über Feedback freuen.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c" />
      </body>
      <title>PEX - Automatisches Generieren von Unit-Tests</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx</link>
      <pubDate>Tue, 14 Oct 2008 12:10:10 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft Research hat vor kurzer Zeit &lt;a href="http://research.microsoft.com/pex"&gt;PEX&lt;/a&gt; zum
freien Download veröffentlicht. Hinter diesem unscheinbaren Kürzel verbirgt sich ein
Tool das absolut genial und beeindruckend ist und klar mach, warum Microsoft ein research
center unterhält. Das Tool verspricht nichts weniger als die automatische Generierung
von Unit-Tests und den dazugehörigen Testcases um eine möglichst hohe Code-Abdeckung
zu erzielen. Detaillierte Informationen bietet das &lt;a href="http://research.microsoft.com/pex/articles/pextutorial.pdf"&gt;Whitepaper&lt;/a&gt;,
wer sich auf die schnelle einen Einblick verschaffen möchte findet einen Überblick
im Folgenden (na ja, für einen Überblick ist der Post vielleicht doch ein wenig lang
geraden, aber ich konnte mich nicht bremsen vor Begeisterung):
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Darf ich vorstellen - PEX&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Gegeben sei folgende Methode die getestet 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;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; SimpleTest(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x1, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (x1
&amp;gt; x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; &lt;span style="color: #006080"&gt;"x1
&amp;gt; x2"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (x1
&amp;lt; x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
&amp;lt; x2"&lt;/span&gt;; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
== x2"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Für das versierte Auge eines Entwicklers ist sofort klar, da brauchen wir 3 Testcases
um eine vollständige Code-Abdeckung zu erzielen. Mal sehen, was PEX daraus macht.
Zunächst mal muss PEX heruntergeladen und installiert sein.&amp;nbsp; Dann kann man einfach
einen "Parameterized Unit Test Stub" erzeugen. Dazu in der Methode rechts klicken
und den Befehl aus dem Pex-Menü auswählen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="161" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb.png" width="447" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Im folgenden Dialog können Sie verschiedene Parameter angeben. Das wichtigste hier
ist das Testprojekt in dem der Stub erzeugt werden soll.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_2.png" width="469" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Der erzeugte Stub sieht dann so aus:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &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; 2:&lt;/span&gt; &lt;span style="color: #008000"&gt;///
This class contains parameterized unit tests for Calculation&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;///
&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; 4:&lt;/span&gt; [TestClass]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; [PexClass(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(Calculation))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; CalculationTest&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; [PexMethod]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; SimpleTest(&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; [PexAssumeUnderTest]Calculation
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; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x1,&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;int&lt;/span&gt; x2&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;span style="color: #0000ff"&gt;string&lt;/span&gt; result
= target.SimpleTest(x1, x2);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;return&lt;/span&gt; result;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #008000"&gt;//
TODO: add assertions to method CalculationTest.SimpleTest(Calculation, Int32, Int32)&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Bei diesem Stub handelt es such um eine Vorlage für einen parameterisierten Unit-test.
Toll, und was lässt sich damit nun machen? Wir können eine "Exploration" starten.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_3.png" width="461" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Diese Exploration versucht nun Input-Parameter zu finden die zu einer möglichst 100%igen
Code-Abdeckung führen. Und hier beginnt nun die Magic von PEX. Ohne unser Zutun findet
PEX 3 Kombinationen von Input-Parametern die tatsächlich eine komplette Code-Abdeckung
erzielen- WOW! Dazu analysiert PEX wirklich den von uns erstellten Code und kann daraus
definieren, mit welchen Input-Parametern die einzelnen noch nicht abgedeckten Zweige
erreicht werden können.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_4.png" width="407" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Und das schönste, PEX baut uns automatisch 3 Unit-Tests die diese 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; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(CalculationTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SimpleTest01()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;string&lt;/span&gt; s;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Calculation
calculation = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Calculation();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; s
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SimpleTest(calculation, 1, 2);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color: #006080"&gt;"x1
&amp;lt; x2"&lt;/span&gt;, s);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt;&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; [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; 12:&lt;/span&gt; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(CalculationTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SimpleTest02()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;span style="color: #0000ff"&gt;string&lt;/span&gt; s;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Calculation
calculation = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Calculation();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; s
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SimpleTest(calculation, 1879212556, 1879212556);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color: #006080"&gt;"x1
== x2"&lt;/span&gt;, s);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;&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; 21:&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; 22:&lt;/span&gt; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(CalculationTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SimpleTest03()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;string&lt;/span&gt; s;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Calculation
calculation = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Calculation();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; s
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SimpleTest(calculation, 256, 254);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color: #006080"&gt;"x1
&amp;gt; x2"&lt;/span&gt;, s);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Diese Unit-Tests können wir nun starten und sehen, dass diese wie erwartet alle erfolgreich
sind.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="150" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Damit haben wir einen Test automatisiert erstellt, der sicherstellen kann, dass diese
Methode ihr Verhalten nach Außen für die aktuell definierten Test-Cases nicht verändert.
Damit können ungewollte Änderungen an der Methode erkannt und beseitigt werden. Ob
die Methode allerdings ihre Aufgabe korrekt erledigt, kann PEX natürlich nicht testen.
Haben wir die Funktionsweise einer Methode allerdings einmal validiert, kann PEX nun
sehr einfach dieses Verhalten prüfen. Und natürlich eignet es sich auch sehr gut um
mögliche Test-Cases zu definieren. Es müssen in diesem Fall dann nur noch die einzelnen
Ergebnisse je Test validiert werden.
&lt;/p&gt;
&lt;p&gt;
Ändern wir die Methode ab, so dass sich ihr Verhalten ändert, dann alarmiert uns der
entsprechende Test.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Soweit sogut - Und was geht sonst noch?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Wenn wir nun ein gewünschte Änderung der Funktionalität implementieren, wie kann PEX
dann damit umgehen? Zunächst würden wir die vorhandenen Tests durchführen, damit wir
sicher sind, dass die aktuelle Funktionalität noch korrekt läuft. Dann erweitern wir
unsere Methode:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; SimpleTest(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x1, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (x1
&amp;gt; x2 * 2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; &lt;span style="color: #006080"&gt;"x1
&amp;gt; x2 * 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; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (x1
&amp;gt; x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
&amp;gt; x2"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (x1
&amp;lt; x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
&amp;lt; x2"&lt;/span&gt;; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
== x2"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;Zeile 3+4 haben wir neu hinzugefügt. Nun starten wir eine neue Exploration und
PEX ermittelt einen weiteren Test-Case um diese Funktion ebenfalls abzudecken.
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_6.png" width="376" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Schön - darf's noch ein bisschen mehr sein?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Dieses einfache Sample war ja schon sehr beeindruckend. Die Frage, die sich aber natürlich
direkt stellt, ist wie weit geht denn das? Wir wollen nun den Schwierigkeitsgrad für
PEX schrittweise steigern. Integer-Werte sind ja noch relativ einfach zu handhaben,
aber wie sieht's denn beispielsweise mit Strings aus? Hierzu zunächst wieder eine
Methode, die wir testen wollen:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; StringOperations&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;string&lt;/span&gt; CheckString(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Input)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;if&lt;/span&gt; (Input.StartsWith(&lt;span style="color: #006080"&gt;"abc"&lt;/span&gt;)
&amp;amp;&amp;amp; Input.Length &amp;gt; 10)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Input
+ &lt;span style="color: #006080"&gt;" Starts with 'abc' and length &amp;gt; 10"&lt;/span&gt;; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Input.StartsWith(&lt;span style="color: #006080"&gt;"abc"&lt;/span&gt;))&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Input
+ &lt;span style="color: #006080"&gt;" Starts with 'abc'"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;if&lt;/span&gt; (Input.StartsWith(&lt;span style="color: #006080"&gt;"ABC"&lt;/span&gt;))&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;return&lt;/span&gt; Input
+ &lt;span style="color: #006080"&gt;" Starts with 'ABC'"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"Unknown
pattern"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Stubs erzeugen und Exploration starten. Ob PEX wohl solche Operationen wie "StartsWith"
und "Length" versteht?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="172" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_7.png" width="433" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Es findet tatsächlich alle erforderlichen Input-Parameter und sogar noch mehr! PEX
stell fest, dass unsere Methode beim Übergeben einer NULL-Referenz eine Exception
wirft. Und damit nicht genug, PEX kann uns auch einen Vorschlag machen, wie wir unseren
Code verbessern können. Dazu im "Pex Exploration Results" - Fenster unter Views "Show
suggestions window" aufrufen. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_8.png" width="725" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_20.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_9.png" width="736" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Durch einen Doppelklick auf den Eintrag am unteren Rand des Bereichs öffnet sich ein
Fenster, das die vorgeschlagene Änderung direkt in unseren Code einfügen kann.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_22.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="432" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_10.png" width="536" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; CheckString(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Input)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;//
&amp;lt;pex&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;if&lt;/span&gt; (Input
== (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;)&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;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color: #006080"&gt;"Input"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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: #008000"&gt;//
&amp;lt;/pex&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;if&lt;/span&gt; (Input.StartsWith(&lt;span style="color: #006080"&gt;"abc"&lt;/span&gt;)
&amp;amp;&amp;amp; Input.Length &amp;gt; 10)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Input
+ &lt;span style="color: #006080"&gt;" Starts with 'abc' and length &amp;gt; 10"&lt;/span&gt;; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;if&lt;/span&gt; (Input.StartsWith(&lt;span style="color: #006080"&gt;"abc"&lt;/span&gt;))&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;return&lt;/span&gt; Input
+ &lt;span style="color: #006080"&gt;" Starts with 'abc'"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;if&lt;/span&gt; (Input.StartsWith(&lt;span style="color: #006080"&gt;"ABC"&lt;/span&gt;))&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Input
+ &lt;span style="color: #006080"&gt;" Starts with 'ABC'"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"Unknown
pattern"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Die Zeilen 3-6 wurden von PEX erzeugt. Natürlich können wir das entsprechende Verhalten
im Code direkt ändern und an unsere Vorstellungen anpassen. Vielleicht ist es aber
gar keine schlechte Idee, in diesem Fall eine Exception zu werden. Dies ist das Standard-Verhalten
von PEX an dieser Stelle. Wird die erwartete Exception nicht mehr geworfen oder eine
andere Exception tritt auf, wird dies durch einen fehlgeschlagenen Test angezeigt.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Der nächste bitte!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So nun wollen wir noch einen Schritt weitergehen und sehen, wie PEX mit Listen umgehen
kann. Dazu habe ich folgende Testmethode erstellt (über den Sinn einer solchen Methode
wollen wir jetzt nicht nachdenken)
&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;int&lt;/span&gt; result
= 0;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (list.Count
&amp;gt; 10)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: 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; &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; list)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; result
+= i;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 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: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; list)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; result
*= i;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; result;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Die Methode bekommt eine Liste von Integer-Werten übergeben. Wenn es mehr als 10 Elemente
sind, werden diese addiert, sonst werden die Werte miteinander Multipliziert. Mal
sehen, wie PEX mit Listen umgeht.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_24.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="120" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_11.png" width="572" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
PEX erkennt noch, dass unsere Methode mit Null-References nicht korrekt umgeht, aber
dann verließen sie ihn.&amp;nbsp; Aber freundlicherweise bekommen wir noch einen Hinweis
"2 Object Creations". klickt man darauf, dann bekommt man schon mehr Informationen. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_26.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="128" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_12.png" width="441" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Aha, PEX kann also eine List&amp;lt;int&amp;gt; nicht erzeugen. Also was tun? Klickt man den
unteren der beiden Einträge an, bietet PEX etwas weiter rechts die Möglichkeit eine
Factory zu definieren. Eine Factory ist ein Extensibility-Point mit dem PEX beigebracht
werden kann mit solchen Objekten umzugehen. Ein Beispiel für eine solche Factory kann
so aussehen:
&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; 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: #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; [PexFactoryClass]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ListFactory&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; [PexFactoryMethod(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&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;static&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;
Create(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #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: #0000ff"&gt;if&lt;/span&gt; (i
&amp;gt; 100)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; i
= 100;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;
l = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; j
= 0; j &amp;lt; i; j++)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; l.Add(j
* 10);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; l;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Hier teilt man PEX nun mit, welche Elemente es damit erzeugen kann (Zeile 6). Anschließend
implementiert man eine Create-Methode die beliebige Parameter übernehmen kann. In
Abhängigkeit dieser Parameter wird nun eine Instanz des gewünschten Objektes erzeugt.
In unserem Beispiel übernehmen wir nur einen Parameter der die Länge der Liste angibt.
In den Zeilen 9/10 begrenzen wir die Länge der Lsite auf 100 Elemente. Die Liste selbst
befüllen wir mit einer Reihe von Zahlen. Hier ist es sicher keine gute Idee, z.B.
Zufallszahlen zu verwenden, da diese ja bei jedem Testdurchlauf andere Werte liefern
und deshalb der Assert nicht erfolgreich ausgeführt werden kann.
&lt;/p&gt;
&lt;p&gt;
Mit hilfe dieser Factory kannPEX nun unsere Testcases definieren. Dazu ermittelt es
einfach geeignete Parameter für die Create-Methode in unserer Factory statt das Objekt
selbst zu erzeugen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_28.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_13.png" width="597" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Die erzeugten Tests sehen dann so aus:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ListCalculationTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SumList03()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;
list;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; list
= ListFactory.Create(2);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; ListCalculation
listCalculation = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ListCalculation();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; i
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SumList(listCalculation, list);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;(0,
i);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt;&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; 13:&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; 14:&lt;/span&gt; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ListCalculationTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SumList04()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;
list;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; list
= ListFactory.Create(536870912);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; ListCalculation
listCalculation = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ListCalculation();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; i
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.SumList(listCalculation, list);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt;(49500,
i);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Nun folgt noch die Kür&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Nach den Erfahrungen mit der Liste bereits etwas skeptischer geworden, wollen wir's
jetzt aber doch wissen. Wie sieht's mit eigenen Objekten aus? Wie weit kommt PEX damit?
Auch hier gibt es wieder eine einfache Methode die wir testen wollen:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ComplexDataCalculation&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;string&lt;/span&gt; DoComplexDataCalculation(cData
d)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 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;if&lt;/span&gt; (!d.IsValid)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"NotValid"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;if&lt;/span&gt; (d.DataValues.x1
&amp;gt; d.DataValues.x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; &lt;span style="color: #006080"&gt;"x1
&amp;gt; x2"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;if&lt;/span&gt; (d.DataValues.x1
&amp;lt; d.DataValues.x2)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
&amp;lt; x2"&lt;/span&gt;; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;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; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;"x1
== x2"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt;&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; 18:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; cData&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;public&lt;/span&gt; cDataValues
DataValues { get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ObsoleteParameter
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsValid
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt;&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; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; cDataValues&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x1
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; x2
{ get; set; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 29:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Die Methode bekommt einen komplexen Datentyp übergeben. Und was macht PEX???
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_32.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="190" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/image_thumb_15.png" width="543" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
PEX erkennt nicht nur, dass wir zwei Null-Exceptions abfangen sollten, sondern kann
auch unser Datenobjekt so initialisieren, dass wir wieder eine 100% Codeabdeckung
bekommen. Die Unit-Tests sehen ungefähr so aus:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [TestMethod]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; [PexGeneratedBy(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(ComplexDataCalculationTest))]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; DoComplexDataCalculation04()&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; cDataValues
cDataValues;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; cData
cData;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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;string&lt;/span&gt; s;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; cDataValues
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; cDataValues();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; cDataValues.x1
= 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; 10:&lt;/span&gt; cDataValues.x2
= 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; 11:&lt;/span&gt; cData
= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; cData();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; cData.DataValues
= cDataValues;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; cData.ObsoleteParameter
= &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: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; cData.IsValid
= &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: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; ComplexDataCalculation
complexDataCalculation = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ComplexDataCalculation();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; s
= &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.DoComplexDataCalculation(complexDataCalculation,
cData);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', 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; Assert.AreEqual&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color: #006080"&gt;"x1
&amp;lt; x2"&lt;/span&gt;, s);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Das ist schon extrem beeindruckend, wie PEX tatsächlich eine entsprechende Instanz
unseres Datenobjektes erzeugt und initialisiert und das so, dass wir alle Testcases
abdecken. Wirklich beeindruckend.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:35094c03-c207-4962-9c04-0342f1082d8c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PEXAutomatischesGenerierenvonUnitTests_12C9A/PEX.zip" target="_blank"&gt;Die
Demos können hier heruntergeladen werden&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Was haltet ihr davon? Würde mich über Feedback freuen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7d3e3e4a-eb47-434a-acd5-bbb92a0fb88c.aspx</comments>
      <category>Qualitätsmanagement;Tipps und Tricks;Tools;Vorträge</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=aca4b466-ca48-4033-b6ed-fffeaba1f677</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aca4b466-ca48-4033-b6ed-fffeaba1f677</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wer eine Visual Studio 2008 Standard Edition oder höher sein Eigen nennt, kann sich
jetzt kostenlos einen Icon-Editor herunterladen.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserIconEditorfrVS2008Anwender_D99/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="343" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserIconEditorfrVS2008Anwender_D99/image_thumb.png" width="597" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.axialis.com/download/iwlite.html">Axialis Software - IconWorkshop™
Lite Download</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aca4b466-ca48-4033-b6ed-fffeaba1f677" />
      </body>
      <title>Kostenloser Icon-Editor f&amp;uuml;r VS 2008 Anwender</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx</link>
      <pubDate>Wed, 13 Aug 2008 22:58:04 GMT</pubDate>
      <description>&lt;p&gt;
Wer eine Visual Studio 2008 Standard Edition oder höher sein Eigen nennt, kann sich
jetzt kostenlos einen Icon-Editor herunterladen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserIconEditorfrVS2008Anwender_D99/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="343" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/KostenloserIconEditorfrVS2008Anwender_D99/image_thumb.png" width="597" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.axialis.com/download/iwlite.html"&gt;Axialis Software - IconWorkshop™
Lite Download&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aca4b466-ca48-4033-b6ed-fffeaba1f677" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,aca4b466-ca48-4033-b6ed-fffeaba1f677.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e2ae8361-4cb3-41b9-83ab-86a394395c5e</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e2ae8361-4cb3-41b9-83ab-86a394395c5e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die Workitems aus dem Team Foundation Server können direkt nach Excel geladen, dort
bearbeitet und wieder auf den TFS gepublished werden. Das hierzu erforderliche Add-In
wird bei der Installation des Team Explorers automatisch mitinstalliert und funktioniert
sehr gut. Ein wenig nervig ist allerdings, wenn man zu einem Workitem weitere Informationen
sehen oder eintragen möchte und die entsprechende Spalte nicht angezeigt wird. Dann
muss man die Spalte erst zur Anzeige auswählen und die Liste aktualisieren. Darüber
hinaus wird die Darstellung in Excel schnell unübersichtlich, wenn man viele Felder
anzeigen lässt.
</p>
        <p>
Wäre es nicht schön, wenn man auch in Excel den gewohnten Detail-Dialog zu einem Workitem
hätte? Genau diese Funktion bietet das kostenfreie Tool Ekobit TeamCompanion for Excel.
Das Workitem kann editiert und gespeichert werden. Die selbe Funktion gibt es übrigens
auch für MS Project.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamCompanionforExcelWorkitemsinExcelbea_6EBB/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="313" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamCompanionforExcelWorkitemsinExcelbea_6EBB/image_thumb.png" width="498" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.ekobit.com/ProductsDetailView.aspx?id=17" target="_blank">TeamCompanion
for Excel</a>
        </p>
        <p>
          <a href="http://www.ekobit.com/ProductsDetailView.aspx?id=39" target="_blank">TeamCompanion
for Project</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e2ae8361-4cb3-41b9-83ab-86a394395c5e" />
      </body>
      <title>TeamCompanion for Excel - Workitems in Excel bearbeiten</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx</link>
      <pubDate>Tue, 01 Jul 2008 05:57:09 GMT</pubDate>
      <description>&lt;p&gt;
Die Workitems aus dem Team Foundation Server können direkt nach Excel geladen, dort
bearbeitet und wieder auf den TFS gepublished werden. Das hierzu erforderliche Add-In
wird bei der Installation des Team Explorers automatisch mitinstalliert und funktioniert
sehr gut. Ein wenig nervig ist allerdings, wenn man zu einem Workitem weitere Informationen
sehen oder eintragen möchte und die entsprechende Spalte nicht angezeigt wird. Dann
muss man die Spalte erst zur Anzeige auswählen und die Liste aktualisieren. Darüber
hinaus wird die Darstellung in Excel schnell unübersichtlich, wenn man viele Felder
anzeigen lässt.
&lt;/p&gt;
&lt;p&gt;
Wäre es nicht schön, wenn man auch in Excel den gewohnten Detail-Dialog zu einem Workitem
hätte? Genau diese Funktion bietet das kostenfreie Tool Ekobit TeamCompanion for Excel.
Das Workitem kann editiert und gespeichert werden. Die selbe Funktion gibt es übrigens
auch für MS Project.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamCompanionforExcelWorkitemsinExcelbea_6EBB/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="313" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TeamCompanionforExcelWorkitemsinExcelbea_6EBB/image_thumb.png" width="498" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.ekobit.com/ProductsDetailView.aspx?id=17" target="_blank"&gt;TeamCompanion
for Excel&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.ekobit.com/ProductsDetailView.aspx?id=39" target="_blank"&gt;TeamCompanion
for Project&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e2ae8361-4cb3-41b9-83ab-86a394395c5e" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e2ae8361-4cb3-41b9-83ab-86a394395c5e.aspx</comments>
      <category>Team System Server;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=971e427f-b4f6-4ff3-a115-c9ee34e6072b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,971e427f-b4f6-4ff3-a115-c9ee34e6072b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,971e427f-b4f6-4ff3-a115-c9ee34e6072b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=971e427f-b4f6-4ff3-a115-c9ee34e6072b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für manuelle Tests muss man einen definierten Ausgangszustand schaffen um diese sinnvoll
durchführen zu können. Dieser Ausgangszustand bezieht sich meist auf eine Datenbank.
Um diesen Vorgang nun zu vereinfachen haben wir ein kleines Tool erstellt. Damit können
Snapshots von Datenbanken erstellt und wiederhergestellt werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SQLSnapshotTool_E144/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="227" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SQLSnapshotTool_E144/image_thumb.png" width="409" border="0" />
          </a>
        </p>
        <p>
Das Tool erstellt dazu einfach ein Backup der Datenbank und kann dieses Backup auch
wiederherstellen. Das ist sicher nicht extrem elegant, aber sehr einfach und praktikabel.
Damit das Tool funktioniert, muss man zunächst ein parr Einstellungen in der config
vornehmen:
</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: #f4f4f4; 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: #0000ff">&lt;</span>
              <span style="color: #800000">configuration</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"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">configSections</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">sectionGroup</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="applicationSettings"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="System.Configuration.ApplicationSettingsGroup,
System, Version=2.0.0.0, Culture=neutral, 
<br />
PublicKeyToken=b77a5c561934e089"</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"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">section</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="SQLSnapshotTool.Properties.Settings"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="System.Configuration.ClientSettingsSection,
System, Version=2.0.0.0, 
<br />
Culture=neutral, PublicKeyToken=b77a5c561934e089"</span>
              <span style="color: #ff0000">requirePermission</span>
              <span style="color: #0000ff">="false"</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">sectionGroup</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"> 7:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">configSections</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">applicationSettings</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"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">SQLSnapshotTool.Properties.Settings</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">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="Password"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">value</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">setting</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"> 13:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="IntegratedSecurity"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">value</span>
              <span style="color: #0000ff">&gt;</span>True<span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</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"> 15:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">setting</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">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="Database"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">value</span>
              <span style="color: #0000ff">&gt;</span>Zeiterfassung<span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</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">setting</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"> 19:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="User"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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">value</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"> 21:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">setting</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"> 22:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="LocalBackupPath"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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"> 23:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">value</span>
              <span style="color: #0000ff">&gt;</span>C:\Temp\DBSnapshots<span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</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">setting</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"> 25:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="Server"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">value</span>
              <span style="color: #0000ff">&gt;</span>MyServer<span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</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"> 27:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">setting</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"> 28:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">setting</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="UNCBackupPath"</span>
              <span style="color: #ff0000">serializeAs</span>
              <span style="color: #0000ff">="String"</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"> 29:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">value</span>
              <span style="color: #0000ff">&gt;</span>\\MyServer\DBSnapshots<span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</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"> 30:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">setting</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"> 31:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">SQLSnapshotTool.Properties.Settings</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"> 32:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">applicationSettings</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"> 33:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">configuration</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Die wichtigsten Einstellungen hier kurz beschrieben:
</p>
        <p>
Zeile 11 : Das Kennwort für den Datenbankzugriff (kann leer sein, wenn integrated
Security verwendet wird)<br />
Zeile 14 : Angabe ob integrated Security verwendt werden soll.<br />
Zeile 17 : Name der Datenbank 
<br />
Zeile 20 : Name des Users (kann leer sein, wenn integrated Security verwendet wird)<br />
Zeile 23 : Der lokale Pfad auf dem DB-Server in den die Snapshots geschrieben werden
sollen<br />
Zeile 26 : Der Name des DB-Servers<br />
Zeile 29 : Der UNC-Pfad über den auf das Sbnapshot-Verzeichnis auf dem DB-Server vom
Client aus zugegriffen werden kann.
</p>
        <p>
Die Bedienung ist denkbar einfach. Man gibt einfach den Namen des gewünschten Snapshots
an und klickt auf "Create Snapshot". Damit wird eine Backup-Datei in das Snapshot-Verzeichnis
auf dem Server geschrieben. In der Liste sieht man alle BAK-Dateien aus dem Verzeichnis
und kann eine auswählen um diese dann wiederherzustellen. Das ganze ist so einfach,
dass sogar Anwender damit klarkommen.
</p>
        <p>
Eine Einschränkung gibt es, das Tool läuft nur mit dem SQL-Server.
</p>
        <p>
Wenn jemand das Tool nützlich findet, würde ich mich über ein kurzes Feedback freuen.
</p>
        <div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:442e201f-431a-4c7e-b483-fb5a845c1420" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
          <p>
            <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SQLSnapshotTool_E144/SQLSnapshotTool.zip" target="_blank">Hier
kann das Tool heruntergeladen werden</a>
          </p>
        </div>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=971e427f-b4f6-4ff3-a115-c9ee34e6072b" />
      </body>
      <title>SQL Snapshot Tool</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,971e427f-b4f6-4ff3-a115-c9ee34e6072b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,971e427f-b4f6-4ff3-a115-c9ee34e6072b.aspx</link>
      <pubDate>Fri, 16 May 2008 14:12:05 GMT</pubDate>
      <description>&lt;p&gt;
Für manuelle Tests muss man einen definierten Ausgangszustand schaffen um diese sinnvoll
durchführen zu können. Dieser Ausgangszustand bezieht sich meist auf eine Datenbank.
Um diesen Vorgang nun zu vereinfachen haben wir ein kleines Tool erstellt. Damit können
Snapshots von Datenbanken erstellt und wiederhergestellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SQLSnapshotTool_E144/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="227" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SQLSnapshotTool_E144/image_thumb.png" width="409" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Das Tool erstellt dazu einfach ein Backup der Datenbank und kann dieses Backup auch
wiederherstellen. Das ist sicher nicht extrem elegant, aber sehr einfach und praktikabel.
Damit das Tool funktioniert, muss man zunächst ein parr Einstellungen in der config
vornehmen:
&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: #f4f4f4; 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: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&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; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configSections&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;sectionGroup&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="applicationSettings"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Configuration.ApplicationSettingsGroup,
System, Version=2.0.0.0, Culture=neutral, 
&lt;br&gt;
PublicKeyToken=b77a5c561934e089"&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; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;section&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="SQLSnapshotTool.Properties.Settings"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="System.Configuration.ClientSettingsSection,
System, Version=2.0.0.0, 
&lt;br&gt;
Culture=neutral, PublicKeyToken=b77a5c561934e089"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;requirePermission&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="false"&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;sectionGroup&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; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configSections&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;applicationSettings&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; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SQLSnapshotTool.Properties.Settings&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;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Password"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;value&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;setting&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; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="IntegratedSecurity"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;value&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;value&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; 15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&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;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Database"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Zeiterfassung&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;value&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;setting&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; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="User"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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;value&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; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&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; 22:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="LocalBackupPath"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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; 23:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;C:\Temp\DBSnapshots&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;value&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;setting&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; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Server"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;MyServer&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;value&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; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&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; 28:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="UNCBackupPath"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;serializeAs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="String"&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; 29:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;\\MyServer\DBSnapshots&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;value&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; 30:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;setting&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; 31:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;SQLSnapshotTool.Properties.Settings&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; 32:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;applicationSettings&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; 33:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&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;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Die wichtigsten Einstellungen hier kurz beschrieben:
&lt;/p&gt;
&lt;p&gt;
Zeile 11 : Das Kennwort für den Datenbankzugriff (kann leer sein, wenn integrated
Security verwendet wird)&lt;br&gt;
Zeile 14 : Angabe ob integrated Security verwendt werden soll.&lt;br&gt;
Zeile 17 : Name der Datenbank 
&lt;br&gt;
Zeile 20 : Name des Users (kann leer sein, wenn integrated Security verwendet wird)&lt;br&gt;
Zeile 23 : Der lokale Pfad auf dem DB-Server in den die Snapshots geschrieben werden
sollen&lt;br&gt;
Zeile 26 : Der Name des DB-Servers&lt;br&gt;
Zeile 29 : Der UNC-Pfad über den auf das Sbnapshot-Verzeichnis auf dem DB-Server vom
Client aus zugegriffen werden kann.
&lt;/p&gt;
&lt;p&gt;
Die Bedienung ist denkbar einfach. Man gibt einfach den Namen des gewünschten Snapshots
an und klickt auf "Create Snapshot". Damit wird eine Backup-Datei in das Snapshot-Verzeichnis
auf dem Server geschrieben. In der Liste sieht man alle BAK-Dateien aus dem Verzeichnis
und kann eine auswählen um diese dann wiederherzustellen. Das ganze ist so einfach,
dass sogar Anwender damit klarkommen.
&lt;/p&gt;
&lt;p&gt;
Eine Einschränkung gibt es, das Tool läuft nur mit dem SQL-Server.
&lt;/p&gt;
&lt;p&gt;
Wenn jemand das Tool nützlich findet, würde ich mich über ein kurzes Feedback freuen.
&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:442e201f-431a-4c7e-b483-fb5a845c1420" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/SQLSnapshotTool_E144/SQLSnapshotTool.zip" target="_blank"&gt;Hier
kann das Tool heruntergeladen werden&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=971e427f-b4f6-4ff3-a115-c9ee34e6072b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,971e427f-b4f6-4ff3-a115-c9ee34e6072b.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=75488fed-f383-4c3b-bdc3-f15580af3343</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,75488fed-f383-4c3b-bdc3-f15580af3343.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,75488fed-f383-4c3b-bdc3-f15580af3343.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=75488fed-f383-4c3b-bdc3-f15580af3343</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die PowerCommands for Visual Studio 2008 sind jetzt in der Version 1.1 veröffentlicht
worden und bieten in dieser neuen Version einige neue Funktionen. Bei den PowertCommends
for Visual Studio 2008 handelt es sich um eine kostenlose Sammlung von nützlichen
Erweiterungen für die Visual Studio IDE. Einen Überblick über die Funktionen bietet
dieses <a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=PowerCommands&amp;DownloadId=952" target="_blank">Dokument</a>.
Da hat es viele Sachen dabei, die sicher schon jeder beim Arbeiten mit Visual Studio
2008 vermisst hat.
</p>
        <p>
          <a href="http://code.msdn.microsoft.com/PowerCommands">PowerCommands for Visual Studio
2008 - Home</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=75488fed-f383-4c3b-bdc3-f15580af3343" />
      </body>
      <title>PowerCommands for Visual Studio 2008 Verion 1.1 ver&amp;ouml;ffentlicht</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,75488fed-f383-4c3b-bdc3-f15580af3343.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,75488fed-f383-4c3b-bdc3-f15580af3343.aspx</link>
      <pubDate>Sun, 13 Apr 2008 12:48:05 GMT</pubDate>
      <description>&lt;p&gt;
Die PowerCommands for Visual Studio 2008 sind jetzt in der Version 1.1 veröffentlicht
worden und bieten in dieser neuen Version einige neue Funktionen. Bei den PowertCommends
for Visual Studio 2008 handelt es sich um eine kostenlose Sammlung von nützlichen
Erweiterungen für die Visual Studio IDE. Einen Überblick über die Funktionen bietet
dieses &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=PowerCommands&amp;amp;DownloadId=952" target="_blank"&gt;Dokument&lt;/a&gt;.
Da hat es viele Sachen dabei, die sicher schon jeder beim Arbeiten mit Visual Studio
2008 vermisst hat.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://code.msdn.microsoft.com/PowerCommands"&gt;PowerCommands for Visual Studio
2008 - Home&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=75488fed-f383-4c3b-bdc3-f15580af3343" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,75488fed-f383-4c3b-bdc3-f15580af3343.aspx</comments>
      <category>Tools;VS 2008</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=547a6f99-c22a-499c-85c9-5b8202b546c8</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,547a6f99-c22a-499c-85c9-5b8202b546c8.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,547a6f99-c22a-499c-85c9-5b8202b546c8.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=547a6f99-c22a-499c-85c9-5b8202b546c8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bin gerade auf das Jing-Projekt gestoßen. Damit lassen sich ganz einfach Screenshoots
und Screencasts erstellen. Auf Wunsch kann man die Ergebnisse bei Screencast.com hochladen
(ein kostenloser Account wird bei der Installation mit eingerichtet) oder in Flickr
bzw. auf einem eigenen FTP-Server oder einem Fileshre ablegen.
</p>
        <p>
Werde das mal testen, ob sich damit meine Blog-Beiträge etwas aufwerten lassen.
</p>
        <p>
          <img src="http://content.screencast.com/media/80d301e9-34e0-4994-8ede-125f67ba1fa0_532c3e3e-0c58-40fd-8e5f-5d79dc76f525_static_0_0_2008-03-20_0840.png" />
        </p>
        <p>
          <a href="http://www.jingproject.com/">Download Jing-Projet</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=547a6f99-c22a-499c-85c9-5b8202b546c8" />
      </body>
      <title>Jing Project: Screencasts ganz einfach erzeugen und verteilen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,547a6f99-c22a-499c-85c9-5b8202b546c8.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,547a6f99-c22a-499c-85c9-5b8202b546c8.aspx</link>
      <pubDate>Thu, 20 Mar 2008 07:51:57 GMT</pubDate>
      <description>&lt;p&gt;
Bin gerade auf das Jing-Projekt gestoßen. Damit lassen sich ganz einfach Screenshoots
und Screencasts erstellen. Auf Wunsch kann man die Ergebnisse bei Screencast.com hochladen
(ein kostenloser Account wird bei der Installation mit eingerichtet) oder in Flickr
bzw. auf einem eigenen FTP-Server oder einem Fileshre ablegen.
&lt;/p&gt;
&lt;p&gt;
Werde das mal testen, ob sich damit meine Blog-Beiträge etwas aufwerten lassen.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://content.screencast.com/media/80d301e9-34e0-4994-8ede-125f67ba1fa0_532c3e3e-0c58-40fd-8e5f-5d79dc76f525_static_0_0_2008-03-20_0840.png"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jingproject.com/"&gt;Download Jing-Projet&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=547a6f99-c22a-499c-85c9-5b8202b546c8" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,547a6f99-c22a-499c-85c9-5b8202b546c8.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e09f213f-47d6-44f9-9cd3-aed6b256868b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e09f213f-47d6-44f9-9cd3-aed6b256868b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e09f213f-47d6-44f9-9cd3-aed6b256868b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e09f213f-47d6-44f9-9cd3-aed6b256868b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jeder vermisst so die eine oder andere Funktion im Visual Studio. Ein paar kleine
nützlichen Erweiterung kann man sich kostenlos mit den Power Commands für Visual Studio
2008 herunterladen. Wer wollte nicht schon immer solche netten Sachen machen wie...
</p>
        <p>
.. alle Projekte in einer Solution einklappen
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="229" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_thumb.png" width="315" border="0" />
          </a>
        </p>
        <p>
... Referenzen in ein anderes Projekt zu kopieren
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_4.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="207" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_thumb_1.png" width="317" border="0" />
          </a>
        </p>
        <p>
.. und vieles mehr.
</p>
        <p>
          <a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PowerCommands&amp;ReleaseId=559" target="_blank">Download
und Source Code gibt es hier</a>
        </p>
        <p>
          <a href="javascript:__doPostBack('ctl00$ctl00$Content$TabContentPanel$Content$ReleaseFiles$FileList$ctl01$FileNameLink','')" target="_blank">Wer
zuerst mal lesen will, welche Funktionen es gibt, hier klicken</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e09f213f-47d6-44f9-9cd3-aed6b256868b" />
      </body>
      <title>Power Commands f&amp;uuml;r Visual Studio 2008</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e09f213f-47d6-44f9-9cd3-aed6b256868b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e09f213f-47d6-44f9-9cd3-aed6b256868b.aspx</link>
      <pubDate>Wed, 12 Mar 2008 19:01:56 GMT</pubDate>
      <description>&lt;p&gt;
Jeder vermisst so die eine oder andere Funktion im Visual Studio. Ein paar kleine
nützlichen Erweiterung kann man sich kostenlos mit den Power Commands für Visual Studio
2008 herunterladen. Wer wollte nicht schon immer solche netten Sachen machen wie...
&lt;/p&gt;
&lt;p&gt;
.. alle Projekte in einer Solution einklappen
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="229" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_thumb.png" width="315" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
... Referenzen in ein anderes Projekt zu kopieren
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="207" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/PowerCommandsfrVisualStudio2008_119B3/image_thumb_1.png" width="317" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
.. und vieles mehr.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PowerCommands&amp;amp;ReleaseId=559" target="_blank"&gt;Download
und Source Code gibt es hier&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="javascript:__doPostBack('ctl00$ctl00$Content$TabContentPanel$Content$ReleaseFiles$FileList$ctl01$FileNameLink','')" target="_blank"&gt;Wer
zuerst mal lesen will, welche Funktionen es gibt, hier klicken&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e09f213f-47d6-44f9-9cd3-aed6b256868b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e09f213f-47d6-44f9-9cd3-aed6b256868b.aspx</comments>
      <category>Tools;VS 2008</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=f62c2e77-206b-47b0-8a03-2f67985acea2</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,f62c2e77-206b-47b0-8a03-2f67985acea2.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,f62c2e77-206b-47b0-8a03-2f67985acea2.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=f62c2e77-206b-47b0-8a03-2f67985acea2</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wir nutzen in unserem Entwicklungsprozess seit einiger Zeit den Team Foundation Server.
Für das Requirement Management setzen wir Workitems ein. In der aktuellen Version
des Team Foundation Servers fehlte uns dabei bisher allerdings die Möglichkeit, Workitems
hierarchisch zu organisieren. Glücklicherweise verfügt der Team Foundation Server
über ein leistungsfähiges API (siehe auch meinen <a href="http://www.artiso.com/ProBlog/PermaLink,guid,54113461-6d17-497d-b4d3-6ecd770ccc92.aspx" target="_blank">MSDN-Webcast</a> zu
diesem Thema). Auf Basis dieser API haben wir ein Tool, den <a href="http://www.artiso.com/?Page=90" target="_blank">artiso
Workitem Manager</a>, entwickelt, mit dem wir nun Workitems so strukturieren können,
wie wir das in unseren Projekten brauchen. Neben der hierarchischen Struktur können
auch Iterationen in Baumstrukturen abgebildet werden.
</p>
        <p>
          <img src="http://www.artiso.com/Images/contentimages/wim.png" />
        </p>
        <p>
Ebenfalls Bestandteil des <a href="http://www.artiso.com/?Page=90" target="_blank">artiso
Workitem Manger</a> ist ein Word-AddIn mit der Spezifikationsdokumente auf Funktionsebene
verwaltet werden können. Damit lassen sich verschiedene Probleme mit Spezifikationsdokumente
als monolithische Worddokumente lösen.
</p>
        <p>
          <img src="http://www.artiso.com/Images/contentimages/wordaddin.png" />
        </p>
        <p>
Den <a href="http://www.artiso.com/?Page=90" target="_blank">artiso Workitem Manager</a> kann
als <a href="http://www.artiso.com/?Page=95" target="_blank">Beta-Version</a> kostenlos
heruntergeladen werden. Die frei verfügbare Version ist auf 50 Workitems begrenzt. 
</p>
        <p>
Weitere Informationen finden sich <a href="http://www.artiso.com/?Page=90" target="_blank">hier</a>.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f62c2e77-206b-47b0-8a03-2f67985acea2" />
      </body>
      <title>artiso Workitem Manager als Beta-Version verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,f62c2e77-206b-47b0-8a03-2f67985acea2.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,f62c2e77-206b-47b0-8a03-2f67985acea2.aspx</link>
      <pubDate>Thu, 14 Feb 2008 20:15:30 GMT</pubDate>
      <description>&lt;p&gt;
Wir nutzen in unserem Entwicklungsprozess seit einiger Zeit den Team Foundation Server.
Für das Requirement Management setzen wir Workitems ein. In der aktuellen Version
des Team Foundation Servers fehlte uns dabei bisher allerdings die Möglichkeit, Workitems
hierarchisch zu organisieren. Glücklicherweise verfügt der Team Foundation Server
über ein leistungsfähiges API (siehe auch meinen &lt;a href="http://www.artiso.com/ProBlog/PermaLink,guid,54113461-6d17-497d-b4d3-6ecd770ccc92.aspx" target="_blank"&gt;MSDN-Webcast&lt;/a&gt; zu
diesem Thema). Auf Basis dieser API haben wir ein Tool, den &lt;a href="http://www.artiso.com/?Page=90" target="_blank"&gt;artiso
Workitem Manager&lt;/a&gt;, entwickelt, mit dem wir nun Workitems so strukturieren können,
wie wir das in unseren Projekten brauchen. Neben der hierarchischen Struktur können
auch Iterationen in Baumstrukturen abgebildet werden.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.artiso.com/Images/contentimages/wim.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Ebenfalls Bestandteil des &lt;a href="http://www.artiso.com/?Page=90" target="_blank"&gt;artiso
Workitem Manger&lt;/a&gt; ist ein Word-AddIn mit der Spezifikationsdokumente auf Funktionsebene
verwaltet werden können. Damit lassen sich verschiedene Probleme mit Spezifikationsdokumente
als monolithische Worddokumente lösen.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.artiso.com/Images/contentimages/wordaddin.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Den &lt;a href="http://www.artiso.com/?Page=90" target="_blank"&gt;artiso Workitem Manager&lt;/a&gt; kann
als &lt;a href="http://www.artiso.com/?Page=95" target="_blank"&gt;Beta-Version&lt;/a&gt; kostenlos
heruntergeladen werden. Die frei verfügbare Version ist auf 50 Workitems begrenzt. 
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen finden sich &lt;a href="http://www.artiso.com/?Page=90" target="_blank"&gt;hier&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=f62c2e77-206b-47b0-8a03-2f67985acea2" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,f62c2e77-206b-47b0-8a03-2f67985acea2.aspx</comments>
      <category>Team System Server;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3b33de8c-c3db-47f1-a3e6-1e626710c5e5</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3b33de8c-c3db-47f1-a3e6-1e626710c5e5.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3b33de8c-c3db-47f1-a3e6-1e626710c5e5.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3b33de8c-c3db-47f1-a3e6-1e626710c5e5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit diesem kostenlosen Add-In lassen sich Feiertage in MS-Project und Outlook im Kalender
eintragen und auch wieder entfernen. 
</p>
        <p>
          <a href="http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html">SetHolidays
- Import von Feiertagen in Outlook und Microsoft Project</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3b33de8c-c3db-47f1-a3e6-1e626710c5e5" />
      </body>
      <title>SetHolidays - Import von Feiertagen in Outlook und Microsoft Project</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3b33de8c-c3db-47f1-a3e6-1e626710c5e5.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3b33de8c-c3db-47f1-a3e6-1e626710c5e5.aspx</link>
      <pubDate>Tue, 08 Jan 2008 09:52:54 GMT</pubDate>
      <description>&lt;p&gt;
Mit diesem kostenlosen Add-In lassen sich Feiertage in MS-Project und Outlook im Kalender
eintragen und auch wieder entfernen. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html"&gt;SetHolidays
- Import von Feiertagen in Outlook und Microsoft Project&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3b33de8c-c3db-47f1-a3e6-1e626710c5e5" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3b33de8c-c3db-47f1-a3e6-1e626710c5e5.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=63b84ed2-eea1-43ff-81b9-0d7324e74262</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,63b84ed2-eea1-43ff-81b9-0d7324e74262.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,63b84ed2-eea1-43ff-81b9-0d7324e74262.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=63b84ed2-eea1-43ff-81b9-0d7324e74262</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Problem kennt vermutlich fast jeder Notebook-Besitzer der an seinem Arbeitsplatz
noch einen zusätzlichen PC hat. Wenn man am Arbeitsplatz sitrzt steht das Notebook
entweder nutzlos in der Ecke oder man kommt mit den Mäusen und Tastaturen immer durcheinander.
Wäre es nicht schön, das Notebook am Arbeitsplatz zu integrieren. Unter XP hatte ich
hier eine geniale Lösung - <a href="http://www.maxivista.com/de" target="_blank">Maxivista</a>.
Damit konnte man sogar eine Zweischirmlösung aufbauen indem das Notebook einfach den
Desktop des Arbeitsplatzrechners erweiterte. Absolut klasse, nur funktioniert der
Host unter Vista nicht (zumindest nur mit den WDDM-Treibern, was für mich allerdings
keine Alternative ist). 
</p>
        <p>
Nun habe ich <a href="http://synergy2.sourceforge.net/" target="_blank">Synergy</a> entdeckt.
Dieses Opensource-Tool bitet die Möglichkeit, einen Rechner mit der Maus / Taststur
eines zweiten Rechners fernzusteuern. Es unterschiedet sich zu Remote Desktop o. ä.,
indem es nicht den Bildschirm des PCs auf den Zweit-PC überträgt. Es lässt sich in
meinem Szenario damit wunderbar nutzen. Ich habe auf meinem Desktop-PC Visual Studio
laufen und kann dann einfach mit der Maus links zum Bildschirmrand rausfahren und
schon bin ich auf meinem Notebook und kann damit mit der gleichen Tastatur / Maus
z.B. Suchen im Internet, Downloads, E-Mail oder andere Funktionen aufrufen ohne dass
mein Desktop-PC damit belastet wird. Das Ganze läuft auch problemlos unter Vista und
ist zumindest mal ein brauchbarer Ersatz für MaxiVista.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=63b84ed2-eea1-43ff-81b9-0d7324e74262" />
      </body>
      <title>Vista-Fernsteuerung</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,63b84ed2-eea1-43ff-81b9-0d7324e74262.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,63b84ed2-eea1-43ff-81b9-0d7324e74262.aspx</link>
      <pubDate>Mon, 05 Nov 2007 07:22:54 GMT</pubDate>
      <description>&lt;p&gt;
Das Problem kennt vermutlich fast jeder Notebook-Besitzer der an seinem Arbeitsplatz
noch einen zusätzlichen PC hat. Wenn man am Arbeitsplatz sitrzt steht das Notebook
entweder nutzlos in der Ecke oder man kommt mit den Mäusen und Tastaturen immer durcheinander.
Wäre es nicht schön, das Notebook am Arbeitsplatz zu integrieren. Unter XP hatte ich
hier eine geniale Lösung - &lt;a href="http://www.maxivista.com/de" target="_blank"&gt;Maxivista&lt;/a&gt;.
Damit konnte man sogar eine Zweischirmlösung aufbauen indem das Notebook einfach den
Desktop des Arbeitsplatzrechners erweiterte. Absolut klasse, nur funktioniert der
Host unter Vista nicht (zumindest nur mit den WDDM-Treibern, was für mich allerdings
keine Alternative ist). 
&lt;/p&gt;
&lt;p&gt;
Nun habe ich &lt;a href="http://synergy2.sourceforge.net/" target="_blank"&gt;Synergy&lt;/a&gt; entdeckt.
Dieses Opensource-Tool bitet die Möglichkeit, einen Rechner mit der Maus / Taststur
eines zweiten Rechners fernzusteuern. Es unterschiedet sich zu Remote Desktop o. ä.,
indem es nicht den Bildschirm des PCs auf den Zweit-PC überträgt. Es lässt sich in
meinem Szenario damit wunderbar nutzen. Ich habe auf meinem Desktop-PC Visual Studio
laufen und kann dann einfach mit der Maus links zum Bildschirmrand rausfahren und
schon bin ich auf meinem Notebook und kann damit mit der gleichen Tastatur / Maus
z.B. Suchen im Internet, Downloads, E-Mail oder andere Funktionen aufrufen ohne dass
mein Desktop-PC damit belastet wird. Das Ganze läuft auch problemlos unter Vista und
ist zumindest mal ein brauchbarer Ersatz für MaxiVista.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=63b84ed2-eea1-43ff-81b9-0d7324e74262" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,63b84ed2-eea1-43ff-81b9-0d7324e74262.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=bec44aef-cf7a-475c-871a-dbf9d1e9954c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,bec44aef-cf7a-475c-871a-dbf9d1e9954c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,bec44aef-cf7a-475c-871a-dbf9d1e9954c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=bec44aef-cf7a-475c-871a-dbf9d1e9954c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wer mal etwas mehr mit WCF programmiert hat, wird feststellen, dass es recht müßig
ist, für jeden Service einen Host zu implementieren. Deshalb habe ich zusammen mit
meinem Kollegen Tobi einen WCF Service-Managerr entwickelt. Dieser Servicemanager
wird auf dem Application-Server als Windows-Dienst ausgeführt und ist in der Lage
Services die in DLLs bereitgestellt werden dynamisch zu laden und auszuführen. Zur
Steuerung dient ein Client der natürlich per WCF mit dem Service-Manager kommuniziert.
Damit kann auch eine größere Zahl von Services auf einem Application-Server effizient
verwaltet werden.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WCFServiceManager_9D4C/image_2.png">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="303" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WCFServiceManager_9D4C/image_thumb.png" width="509" border="0" />
          </a>
        </p>
        <p>
Der Service-Manager kann inkl. einer kleinen Doku kostenlos heruntergeladen und verwendet
werden. Über ein Feedback würde ich mich freuen.
</p>
        <a href="http://www.artiso.com/ProBlog/content/binary/artisoServiceManager.zip">artisoServiceManager.zip
(5,94 MB)</a> Version 0.9.0<img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=bec44aef-cf7a-475c-871a-dbf9d1e9954c" /></body>
      <title>WCF Service-Manager</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,bec44aef-cf7a-475c-871a-dbf9d1e9954c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,bec44aef-cf7a-475c-871a-dbf9d1e9954c.aspx</link>
      <pubDate>Wed, 24 Oct 2007 09:11:09 GMT</pubDate>
      <description>&lt;p&gt;
Wer mal etwas mehr mit WCF programmiert hat, wird feststellen, dass es recht müßig
ist, für jeden Service einen Host zu implementieren. Deshalb habe ich zusammen mit
meinem Kollegen Tobi einen WCF Service-Managerr entwickelt. Dieser Servicemanager
wird auf dem Application-Server als Windows-Dienst ausgeführt und ist in der Lage
Services die in DLLs bereitgestellt werden dynamisch zu laden und auszuführen. Zur
Steuerung dient ein Client der natürlich per WCF mit dem Service-Manager kommuniziert.
Damit kann auch eine größere Zahl von Services auf einem Application-Server effizient
verwaltet werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WCFServiceManager_9D4C/image_2.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=303 alt=image src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WCFServiceManager_9D4C/image_thumb.png" width=509 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Der Service-Manager kann inkl. einer kleinen Doku kostenlos heruntergeladen und verwendet
werden. Über ein Feedback würde ich mich freuen.
&lt;/p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/artisoServiceManager.zip"&gt;artisoServiceManager.zip
(5,94 MB)&lt;/a&gt;&amp;nbsp;Version 0.9.0&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=bec44aef-cf7a-475c-871a-dbf9d1e9954c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,bec44aef-cf7a-475c-871a-dbf9d1e9954c.aspx</comments>
      <category>Eigene Tutorials;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3e5743c6-645d-418f-b151-7f1a5e9e1eba</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3e5743c6-645d-418f-b151-7f1a5e9e1eba.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3e5743c6-645d-418f-b151-7f1a5e9e1eba.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3e5743c6-645d-418f-b151-7f1a5e9e1eba</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bei der Neuinstallation eines Entwicklungsrechners dauert es immer ewig, bis man sich
die ganzen nützlichen Helferlein zusammengesucht hat, die man im Laufe der Zeit zu
schätzen gelernt hat. Deshalb habe ich mir gedacht, ich schreibe mir mal eine Liste,
die ich dann immer wieder ergänzen kann. Und vielleicht ist für den einen oder anderen
da auch noch was interessantes dabei. Also so könnte ein Entwicklungsrechner aussehen:
</p>
        <p>
          <strong>Betriebsystem / Standardanwendungen:</strong>
        </p>
        <ul>
          <li>
Windows Vista Ultimate 
</li>
          <li>
Office 2007 
</li>
          <li>
SQL-Server 2005 Express 
</li>
          <li>
SQL-Server 2005 Management Studio</li>
        </ul>
        <p>
          <strong>Entwicklungsumgebung:</strong>
        </p>
        <ul>
          <li>
Visual Studio 2005 Team Edition for Software Developers 
</li>
          <li>
Visual Studio Team Explorer 
</li>
          <li>
Microsoft Team Foundation Server Power Tools mit zusätzlichen Tools zum TFS<br /><a href="http://msdn2.microsoft.com/en-us/vstudio/aa718351.aspx">http://msdn2.microsoft.com/en-us/vstudio/aa718351.aspx</a></li>
          <li>
GostDoc um XML-Kommentare zu erstellen (Free)<br /><a href="http://www.roland-weigelt.de/ghostdoc/">http://www.roland-weigelt.de/ghostdoc/</a></li>
          <li>
Infragistics Netadvantage Suite eine sehr gute GUI Bibliothek, aktuelle Hotfixes unbedingt
installieren<br /><a href="http://www.infragistics.com/dotnet/netadvantage.aspx#Overview">http://www.infragistics.com/dotnet/netadvantage.aspx#Overview</a></li>
          <li>
Internet Explorer Developer Toolbar zum untersuchen von Web-Seiten im IE (Free)<br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en</a></li>
          <li>
Lutz Roeders Reflector for .Net um Assemblies zu im Quellcode anzuzeigen (Free)<br /><a href="http://www.aisto.com/roeder/dotnet/">http://www.aisto.com/roeder/dotnet/</a></li>
          <li>
Regionerate, ein Helfer, der Fields, Properties und Methoden in Regions gruppiert
(Beta)<br /><a href="http://www.rauchy.net/regionerate/">http://www.rauchy.net/regionerate/</a><br /></li>
        </ul>
        <p>
          <strong>Tools</strong>
        </p>
        <ul>
          <li>
Acronis True Image 10 Home um Images der lokalen Platte auf ein USB-Device zu sichern<br /><a href="http://www.acronis.de/homecomputing/products/trueimage/">http://www.acronis.de/homecomputing/products/trueimage/</a></li>
          <li>
Acrobat Reader 8.1.0<br /><a href="http://www.adobe.com/products/acrobat/readstep2.html">http://www.adobe.com/products/acrobat/readstep2.html</a></li>
          <li>
AusLogics Disk Defrag zum Festplatten defragmentieren (Free)<br /><a href="http://www.auslogics.com/disk-defrag/index.php">http://www.auslogics.com/disk-defrag/index.php</a></li>
          <li>
Avira AntiVir Workstation als Virenscanner<br /><a href="http://www.avira.de/de/produkte/avira_antivir_workstation.html">http://www.avira.de/de/produkte/avira_antivir_workstation.html</a></li>
          <li>
Axialis Icon Workshop um Icons zu erstellen und zu bearbeiten<br /><a href="http://www.axialis.com/iconworkshop/">http://www.axialis.com/iconworkshop/</a></li>
          <li>
Daemon Tools um ISO-Images direkt zu lesen<br /><a href="http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&amp;catid=5">http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&amp;catid=5</a></li>
          <li>
IEeee ist ein Plugin für den IE mit dem einfach und schnell Bug-Workitems im TFS generiert
werden können (Free)<br /><a href="http://www.codeplex.com/UKVSTS">http://www.codeplex.com/UKVSTS</a></li>
          <li>
Maxivista erlaubt die Nutzung des Notebooks als Zweitschirm (Host läuft nicht unter
Vista)<br /><a href="http://www.maxivista.de">http://www.maxivista.de</a></li>
          <li>
Microsoft Shared View um Desktop über eine einfache Internetverbindung zu sharen (Beta)<br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=95AF94BA-755E-4039-9038-63005EE9D33A&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=95AF94BA-755E-4039-9038-63005EE9D33A&amp;displaylang=en</a></li>
          <li>
Notepad++ ein echt cooler Editor für praktisch alle Textformate (Free)<br /><a href="http://notepad-plus.sourceforge.net/de/site.htm">http://notepad-plus.sourceforge.net/de/site.htm</a></li>
          <li>
Office 2007 Save as PDF or XPS Add-In (Free mit gültigem Office 2007)<br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;displaylang=en</a></li>
          <li>
Paint .Net, ein sehr gutes Grafik-Programm (Free)<br /><a href="http://getpaint.net/index.html">http://getpaint.net/index.html</a></li>
          <li>
Paint .Net PhotoshopFilter, ein Plugin das das Öffnen und Speichern von Photoshop-Dateien
mit Paint .Net ermöglicht (Free)<br /><a href="http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin">http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin</a></li>
          <li>
RocketDock als Startleiste<br /><a href="http://rocketdock.com/">http://rocketdock.com/</a></li>
          <li>
Skype zur Kommunikation über das Internet (Free)<br /><a href="http://www.skype.de/intl/de/">http://www.skype.de/intl/de/</a></li>
          <li>
Synergy um mein Notebook mit der Tastatur / Maus meines Hauptrechners zu steuer (Free)<br /><a href="http://synergy2.sourceforge.net/">http://synergy2.sourceforge.net/</a></li>
          <li>
TPG Setholidays zum Eintragen von Feiertagen in Project und Outlook<br /><a href="http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html">http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html</a></li>
          <li>
VMWare Workstation um Testumgebungen virtuell ablaufen zu lassen<br /><a href="http://www.vmware.com/products/ws/">http://www.vmware.com/products/ws/</a></li>
          <li>
Windows Live Toolbar mit sinnvollen Tools für den IE, z.B. Blog this (Free)<br /><a href="http://toolbar.live.com/?mkt=de-at">http://toolbar.live.com/?mkt=de-at</a></li>
          <li>
Windows Live Writer zum bloggen (Free)<br /><a href="http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx">http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx</a></li>
          <li>
XML Notepad zum Anzeigen und Bearbeiten von XML-Dateien (Free)<br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=72D6AA49-787D-4118-BA5F-4F30FE913628&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=72D6AA49-787D-4118-BA5F-4F30FE913628&amp;displaylang=en</a></li>
          <li>
ZoomIt zum Zoomen und Zeichnen auf dem Desktop - sehr praktisch für Präsentationen
(Free)<br /><a href="http://download.sysinternals.com/Files/ZoomIt.zip">http://download.sysinternals.com/Files/ZoomIt.zip</a><br /></li>
        </ul>
        <p>
Stand 05.10.2007<br />
To be continued...
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3e5743c6-645d-418f-b151-7f1a5e9e1eba" />
      </body>
      <title>Rechnerkonfiguration</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3e5743c6-645d-418f-b151-7f1a5e9e1eba.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3e5743c6-645d-418f-b151-7f1a5e9e1eba.aspx</link>
      <pubDate>Tue, 21 Aug 2007 08:30:22 GMT</pubDate>
      <description>&lt;p&gt;
Bei der Neuinstallation eines Entwicklungsrechners dauert es immer ewig, bis man sich
die ganzen nützlichen Helferlein zusammengesucht hat, die man im Laufe der Zeit zu
schätzen gelernt hat. Deshalb habe ich mir gedacht, ich schreibe mir mal eine Liste,
die ich dann immer wieder ergänzen kann. Und vielleicht ist für den einen oder anderen
da auch noch was interessantes dabei. Also so könnte ein Entwicklungsrechner aussehen:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Betriebsystem / Standardanwendungen:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Windows Vista Ultimate 
&lt;li&gt;
Office 2007 
&lt;li&gt;
SQL-Server 2005 Express 
&lt;li&gt;
SQL-Server 2005 Management Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Entwicklungsumgebung:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Visual Studio 2005 Team Edition for Software Developers 
&lt;li&gt;
Visual Studio Team Explorer 
&lt;li&gt;
Microsoft Team Foundation Server Power Tools mit zusätzlichen Tools zum TFS&lt;br&gt;
&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa718351.aspx"&gt;http://msdn2.microsoft.com/en-us/vstudio/aa718351.aspx&lt;/a&gt; 
&lt;li&gt;
GostDoc um XML-Kommentare zu erstellen (Free)&lt;br&gt;
&lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;http://www.roland-weigelt.de/ghostdoc/&lt;/a&gt; 
&lt;li&gt;
Infragistics Netadvantage Suite eine sehr gute GUI Bibliothek, aktuelle Hotfixes unbedingt
installieren&lt;br&gt;
&lt;a href="http://www.infragistics.com/dotnet/netadvantage.aspx#Overview"&gt;http://www.infragistics.com/dotnet/netadvantage.aspx#Overview&lt;/a&gt; 
&lt;li&gt;
Internet Explorer Developer Toolbar zum untersuchen von Web-Seiten im IE (Free)&lt;br&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en&lt;/a&gt; 
&lt;li&gt;
Lutz Roeders Reflector for .Net um Assemblies zu im Quellcode anzuzeigen (Free)&lt;br&gt;
&lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;http://www.aisto.com/roeder/dotnet/&lt;/a&gt; 
&lt;li&gt;
Regionerate, ein Helfer, der Fields, Properties und Methoden in Regions gruppiert
(Beta)&lt;br&gt;
&lt;a href="http://www.rauchy.net/regionerate/"&gt;http://www.rauchy.net/regionerate/&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Tools&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Acronis True Image 10 Home um Images der lokalen Platte auf ein USB-Device zu sichern&lt;br&gt;
&lt;a href="http://www.acronis.de/homecomputing/products/trueimage/"&gt;http://www.acronis.de/homecomputing/products/trueimage/&lt;/a&gt; 
&lt;li&gt;
Acrobat Reader 8.1.0&lt;br&gt;
&lt;a href="http://www.adobe.com/products/acrobat/readstep2.html"&gt;http://www.adobe.com/products/acrobat/readstep2.html&lt;/a&gt; 
&lt;li&gt;
AusLogics Disk Defrag zum Festplatten defragmentieren (Free)&lt;br&gt;
&lt;a href="http://www.auslogics.com/disk-defrag/index.php"&gt;http://www.auslogics.com/disk-defrag/index.php&lt;/a&gt; 
&lt;li&gt;
Avira AntiVir Workstation als Virenscanner&lt;br&gt;
&lt;a href="http://www.avira.de/de/produkte/avira_antivir_workstation.html"&gt;http://www.avira.de/de/produkte/avira_antivir_workstation.html&lt;/a&gt; 
&lt;li&gt;
Axialis Icon Workshop um Icons zu erstellen und zu bearbeiten&lt;br&gt;
&lt;a href="http://www.axialis.com/iconworkshop/"&gt;http://www.axialis.com/iconworkshop/&lt;/a&gt; 
&lt;li&gt;
Daemon Tools um ISO-Images direkt zu lesen&lt;br&gt;
&lt;a href="http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&amp;amp;catid=5"&gt;http://www.daemon-tools.cc/dtcc/download.php?mode=ViewCategory&amp;amp;catid=5&lt;/a&gt; 
&lt;li&gt;
IEeee ist ein Plugin für den IE mit dem einfach und schnell Bug-Workitems im TFS generiert
werden können (Free)&lt;br&gt;
&lt;a href="http://www.codeplex.com/UKVSTS"&gt;http://www.codeplex.com/UKVSTS&lt;/a&gt; 
&lt;li&gt;
Maxivista erlaubt die Nutzung des Notebooks als Zweitschirm (Host läuft nicht unter
Vista)&lt;br&gt;
&lt;a href="http://www.maxivista.de"&gt;http://www.maxivista.de&lt;/a&gt; 
&lt;li&gt;
Microsoft Shared View um Desktop über eine einfache Internetverbindung zu sharen (Beta)&lt;br&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=95AF94BA-755E-4039-9038-63005EE9D33A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=95AF94BA-755E-4039-9038-63005EE9D33A&amp;amp;displaylang=en&lt;/a&gt; 
&lt;li&gt;
Notepad++ ein echt cooler Editor für praktisch alle Textformate (Free)&lt;br&gt;
&lt;a href="http://notepad-plus.sourceforge.net/de/site.htm"&gt;http://notepad-plus.sourceforge.net/de/site.htm&lt;/a&gt; 
&lt;li&gt;
Office 2007 Save as PDF or XPS Add-In (Free mit gültigem Office 2007)&lt;br&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;amp;displaylang=en&lt;/a&gt; 
&lt;li&gt;
Paint .Net, ein sehr gutes Grafik-Programm (Free)&lt;br&gt;
&lt;a href="http://getpaint.net/index.html"&gt;http://getpaint.net/index.html&lt;/a&gt; 
&lt;li&gt;
Paint .Net PhotoshopFilter, ein Plugin das das Öffnen und Speichern von Photoshop-Dateien
mit Paint .Net ermöglicht (Free)&lt;br&gt;
&lt;a href="http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin"&gt;http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin&lt;/a&gt; 
&lt;li&gt;
RocketDock als Startleiste&lt;br&gt;
&lt;a href="http://rocketdock.com/"&gt;http://rocketdock.com/&lt;/a&gt; 
&lt;li&gt;
Skype zur Kommunikation über das Internet (Free)&lt;br&gt;
&lt;a href="http://www.skype.de/intl/de/"&gt;http://www.skype.de/intl/de/&lt;/a&gt; 
&lt;li&gt;
Synergy um mein Notebook mit der Tastatur / Maus meines Hauptrechners zu steuer (Free)&lt;br&gt;
&lt;a href="http://synergy2.sourceforge.net/"&gt;http://synergy2.sourceforge.net/&lt;/a&gt; 
&lt;li&gt;
TPG Setholidays zum Eintragen von Feiertagen in Project und Outlook&lt;br&gt;
&lt;a href="http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html"&gt;http://www.theprojectgroup.com/D/produkte/produkte_setholidays.html&lt;/a&gt; 
&lt;li&gt;
VMWare Workstation um Testumgebungen virtuell ablaufen zu lassen&lt;br&gt;
&lt;a href="http://www.vmware.com/products/ws/"&gt;http://www.vmware.com/products/ws/&lt;/a&gt; 
&lt;li&gt;
Windows Live Toolbar mit sinnvollen Tools für den IE, z.B. Blog this (Free)&lt;br&gt;
&lt;a href="http://toolbar.live.com/?mkt=de-at"&gt;http://toolbar.live.com/?mkt=de-at&lt;/a&gt; 
&lt;li&gt;
Windows Live Writer zum bloggen (Free)&lt;br&gt;
&lt;a href="http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx"&gt;http://www.live-writer.de/project/WindowsLiveWriterDownload.aspx&lt;/a&gt; 
&lt;li&gt;
XML Notepad zum Anzeigen und Bearbeiten von XML-Dateien (Free)&lt;br&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=72D6AA49-787D-4118-BA5F-4F30FE913628&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=72D6AA49-787D-4118-BA5F-4F30FE913628&amp;amp;displaylang=en&lt;/a&gt; 
&lt;li&gt;
ZoomIt zum Zoomen und Zeichnen auf dem Desktop - sehr praktisch für Präsentationen
(Free)&lt;br&gt;
&lt;a href="http://download.sysinternals.com/Files/ZoomIt.zip"&gt;http://download.sysinternals.com/Files/ZoomIt.zip&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Stand 05.10.2007&lt;br&gt;
To be continued...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3e5743c6-645d-418f-b151-7f1a5e9e1eba" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3e5743c6-645d-418f-b151-7f1a5e9e1eba.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e7b247b7-a6f2-4c29-8dbc-57006e0580ed</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e7b247b7-a6f2-4c29-8dbc-57006e0580ed.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e7b247b7-a6f2-4c29-8dbc-57006e0580ed.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e7b247b7-a6f2-4c29-8dbc-57006e0580ed</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Habe gerade den ersten Praxis-Test mit Microsoft SharedView absolviert. Das hat auf
Anhieb geklappt, echt klasse.
</p>
        <p>
          <a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MicrosoftSharedViewBeta_A336/image.png" atomicselection="true">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="190" alt="image" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MicrosoftSharedViewBeta_A336/image_thumb.png" width="240" border="0" />
          </a>
        </p>
        <p>
Das Tool erlaubt es, dass man eine Session einrichtet und die Teilnehmer der Session
untereinander ihre Desktops oder auch nur einzelne Anwendungen freigeben
können. Dabei können die anderen entweder nur zuschauen oder auch aktiv eingreifen.
Das tolle dabei ist, dass für alle Teilnehmer eine einfache Internet-Verbindung genügt,
auch für den Session-Initiator. 
</p>
        <p>
Ich wollte gerade einen externen Kollegen bei einer Fehlersuche unterstützen. Am Telefon
war das aber kaum zu erklären. Wir haben einfach beide SharedView runtergeladen und
installiert. Die Verbindung hat auf Anhieb geklappt, obwohl wir beide hinter einer
Firewall sitzen. ich konnte mich auf seinen Desktop schalten und diesen bedienen<font color="#000000">.
Das Ganze ist noch nicht sehr schnell, aber es handelt sich dabei ja noch um eine
Beta-Version und hoffentlich wird das Release in Punkto Performance noch etwas zulegen.
Das einzige, was am Anfang zu etwas Verwirrung geführt hat, war, dass der Kollege
mir zwar die</font> Kontrolle über seinen Desktop übertragen hat, die dann aber immer
gleich wieder zurücksprang. Wir haben dann aber schnell rausgefunden, dass die Kontrolle
wieder zurückgeht, wenn am Freigabe-Rechner die Maus bewegt wird. Wenn man's weiss,
eigentlich gar nicht so schlecht.
</p>
        <p>
Ich fand das Ding echt superklasse und wir konnten den Fehler recht schnell beheben.
(Sicher schneller als per Telefon und auch schneller als wenn wir erst den remote
desktop auf der Firewall hätten freischalten lassen müssen)
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=ddbf048d-db67-4c56-9335-6964e15975d2&amp;displayLang=en">Microsoft
SharedView Beta</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e7b247b7-a6f2-4c29-8dbc-57006e0580ed" />
      </body>
      <title>Microsoft SharedView Beta</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e7b247b7-a6f2-4c29-8dbc-57006e0580ed.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e7b247b7-a6f2-4c29-8dbc-57006e0580ed.aspx</link>
      <pubDate>Wed, 18 Jul 2007 09:38:00 GMT</pubDate>
      <description>&lt;p&gt;
Habe gerade den ersten Praxis-Test mit Microsoft SharedView absolviert. Das hat auf
Anhieb geklappt, echt klasse.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MicrosoftSharedViewBeta_A336/image.png" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=190 alt=image src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/MicrosoftSharedViewBeta_A336/image_thumb.png" width=240 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Das Tool erlaubt es, dass man eine Session einrichtet und die Teilnehmer der Session
untereinander ihre Desktops&amp;nbsp;oder auch nur einzelne Anwendungen&amp;nbsp;freigeben
können. Dabei können die anderen entweder nur zuschauen oder auch aktiv eingreifen.
Das tolle dabei ist, dass für alle Teilnehmer eine einfache Internet-Verbindung genügt,
auch für den Session-Initiator. 
&lt;/p&gt;
&lt;p&gt;
Ich wollte gerade einen externen Kollegen bei einer Fehlersuche unterstützen. Am Telefon
war das aber kaum zu erklären. Wir haben einfach beide SharedView runtergeladen und
installiert. Die Verbindung hat auf Anhieb geklappt, obwohl wir beide hinter einer
Firewall sitzen. ich konnte mich auf seinen Desktop schalten und diesen bedienen&lt;font color=#000000&gt;.
Das Ganze ist noch nicht sehr schnell, aber es handelt sich dabei ja noch um eine
Beta-Version und hoffentlich wird das Release in Punkto Performance noch etwas zulegen.
Das einzige, was am Anfang zu etwas Verwirrung geführt hat, war, dass der Kollege
mir zwar die&lt;/font&gt; Kontrolle über seinen Desktop übertragen hat, die dann aber immer
gleich wieder zurücksprang. Wir haben dann aber schnell rausgefunden, dass die Kontrolle
wieder zurückgeht, wenn am Freigabe-Rechner die Maus bewegt wird. Wenn man's weiss,
eigentlich gar nicht so schlecht.
&lt;/p&gt;
&lt;p&gt;
Ich fand das Ding echt superklasse und wir konnten den Fehler recht schnell beheben.
(Sicher schneller als per Telefon und auch schneller als wenn wir erst den remote
desktop auf der Firewall hätten freischalten lassen müssen)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=ddbf048d-db67-4c56-9335-6964e15975d2&amp;amp;displayLang=en"&gt;Microsoft
SharedView Beta&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e7b247b7-a6f2-4c29-8dbc-57006e0580ed" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e7b247b7-a6f2-4c29-8dbc-57006e0580ed.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit diesem kleinen Plugin kann man Code-Ausschnitte direkt aus VS mit dem Windows
Live Writer bloggen. Das Plugin übernimmt dabei die komplette Formatierung. Die Farbcodierung
von VS bleibt dabei erhalten. 
</p>
        <p>
          <a href="http://sharpsoft.net/blogmycode.aspx">Link to BlogMyCode VS2005 plugin</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad" />
      </body>
      <title>Code direkt aus VS mit Windows Live Writer bloggen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad.aspx</link>
      <pubDate>Mon, 02 Apr 2007 17:52:34 GMT</pubDate>
      <description>&lt;p&gt;
Mit diesem kleinen Plugin kann man Code-Ausschnitte direkt aus VS mit dem Windows
Live Writer bloggen. Das Plugin übernimmt dabei die komplette Formatierung. Die Farbcodierung
von VS bleibt dabei erhalten.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://sharpsoft.net/blogmycode.aspx"&gt;Link to BlogMyCode VS2005 plugin&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,68b8fc7e-35ce-40b6-8b2f-817eb5a2b6ad.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=73465371-e4e3-4275-bb6f-007268b1130b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,73465371-e4e3-4275-bb6f-007268b1130b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,73465371-e4e3-4275-bb6f-007268b1130b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=73465371-e4e3-4275-bb6f-007268b1130b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Möchte man die Process Guidance des Team Foundation Server in Papierform verfügbar
machen, kann folgendes Tool sehr hilfreich sein. Damit kann die Process Guidance als
ein einzelnes HTML-Dokument konvertiert werden.
</p>
        <p>
          <a href="http://staff.southworks.net/blogs/mariano/archive/2006/01/28/206.aspx">http://staff.southworks.net/blogs/mariano/archive/2006/01/28/206.aspx</a>  
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=73465371-e4e3-4275-bb6f-007268b1130b" />
      </body>
      <title>Team Foundation Process Guidance drucken.</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,73465371-e4e3-4275-bb6f-007268b1130b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,73465371-e4e3-4275-bb6f-007268b1130b.aspx</link>
      <pubDate>Thu, 01 Mar 2007 21:46:58 GMT</pubDate>
      <description>&lt;p&gt;
Möchte man die Process Guidance des Team Foundation Server&amp;nbsp;in Papierform verfügbar
machen, kann folgendes Tool sehr hilfreich sein. Damit kann die Process Guidance als
ein einzelnes HTML-Dokument konvertiert werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://staff.southworks.net/blogs/mariano/archive/2006/01/28/206.aspx"&gt;http://staff.southworks.net/blogs/mariano/archive/2006/01/28/206.aspx&lt;/a&gt;&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=73465371-e4e3-4275-bb6f-007268b1130b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,73465371-e4e3-4275-bb6f-007268b1130b.aspx</comments>
      <category>Team System Server;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=80e1ec57-4c50-4fed-a14c-79f0a8c97514</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,80e1ec57-4c50-4fed-a14c-79f0a8c97514.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,80e1ec57-4c50-4fed-a14c-79f0a8c97514.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=80e1ec57-4c50-4fed-a14c-79f0a8c97514</wfw:commentRss>
      <title>Windows Mobile Developer Power Toys</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,80e1ec57-4c50-4fed-a14c-79f0a8c97514.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,80e1ec57-4c50-4fed-a14c-79f0a8c97514.aspx</link>
      <pubDate>Thu, 08 Feb 2007 17:56:19 GMT</pubDate>
      <description>&lt;p&gt;
Wer Anwendungen für&amp;nbsp;Pocket PCs oder andere mobile Geräte entwickelt oder präsentieren
möchte, findet einige hilfreiche Tools im Windows Mobile Developer Power Toys Paket,
das kostenlos heruntergeladen werden kann. Unter anderem findet man darin&amp;nbsp;das
ActiveSync Remote Display, mit dem man den Bildschirm des PDAs auf dem PC darstellen
und den PDA sogar mit der Maus und der Tastatur des PCs steuern kann.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size: 11pt; line-height: 115%; font-family: calibri; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: de; mso-fareast-language: de; mso-bidi-language: ar-sa; mso-no-proof: yes"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;
&lt;v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;
&lt;img height="376" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/WindowsMobileDeveloperPowerToys_10A53/clip_image002.jpg" width="256"&gt;
&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;
&lt;v:formulas&gt;
&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;
&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;
&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;
&lt;/v:formulas&gt;
&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;
&lt;/v:shapetype&gt;
&lt;v:shape id="Picture_x0020_1" style="visibility: visible; width: 192pt; height: 282pt" type="#_x0000_t75" o:spid="_x0000_i1025"&gt;
&lt;v:imagedata o:title="" src="file:///E:\Temp\msohtml1\08\clip_image001.png"&gt;&lt;/v:imagedata&gt;
&lt;/v:shape&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=74473FD6-1DCC-47AA-AB28-6A2B006EDFE9&amp;amp;displaylang=en"&gt;Link
to Download details: Windows Mobile Developer Power Toys&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=80e1ec57-4c50-4fed-a14c-79f0a8c97514" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,80e1ec57-4c50-4fed-a14c-79f0a8c97514.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6e587e91-3c25-4e3c-ba06-16fe6c3adaf1</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6e587e91-3c25-4e3c-ba06-16fe6c3adaf1.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6e587e91-3c25-4e3c-ba06-16fe6c3adaf1.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6e587e91-3c25-4e3c-ba06-16fe6c3adaf1</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/TutorialzuSandcastle_AB2F/image%7B0%7D%5B2%5D.png" atomicselection="true">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="146" src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TutorialzuSandcastle_AB2F/image%7B0%7D_thumb.png" width="146" border="0" />
          </a>
        </p>
        <p>
Mit Microsoft Sandcastle lassen sich die XML-Kommentare aus dem Sourcecode in eine
Dokumentation konvertieren. Damit lassen sich ohne viel Aufwand Dokumentationen im
Stile einer MSDN-Dokumentation erstellen, die sogar in die VS-Hilfe eingebunden werden
können. Einen Einstieg bietet das folgende Tutorial von Jonas:
</p>
        <p>
          <a href="http://www.dotnet-ulm.de/Downloads/20061121/Sandcastle.zip">http://www.dotnet-ulm.de/Downloads/20061121/Sandcastle.zip</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6e587e91-3c25-4e3c-ba06-16fe6c3adaf1" />
      </body>
      <title>Tutorial zu Sandcastle</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6e587e91-3c25-4e3c-ba06-16fe6c3adaf1.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6e587e91-3c25-4e3c-ba06-16fe6c3adaf1.aspx</link>
      <pubDate>Sat, 25 Nov 2006 11:10:24 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TutorialzuSandcastle_AB2F/image%7B0%7D%5B2%5D.png" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=146 src="http://www.artiso.com/ProBlog/content/binary/WindowsLiveWriter/TutorialzuSandcastle_AB2F/image%7B0%7D_thumb.png" width=146 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Mit Microsoft Sandcastle lassen sich die XML-Kommentare aus dem Sourcecode in eine
Dokumentation konvertieren. Damit lassen sich ohne viel Aufwand Dokumentationen im
Stile einer MSDN-Dokumentation erstellen, die sogar in die VS-Hilfe eingebunden werden
können. Einen Einstieg bietet das folgende Tutorial von Jonas:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnet-ulm.de/Downloads/20061121/Sandcastle.zip"&gt;http://www.dotnet-ulm.de/Downloads/20061121/Sandcastle.zip&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6e587e91-3c25-4e3c-ba06-16fe6c3adaf1" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6e587e91-3c25-4e3c-ba06-16fe6c3adaf1.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7badfeac-a0ba-4e0c-b8ec-4ec44eba2997</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7badfeac-a0ba-4e0c-b8ec-4ec44eba2997.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7badfeac-a0ba-4e0c-b8ec-4ec44eba2997.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7badfeac-a0ba-4e0c-b8ec-4ec44eba2997</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem Power Toys Pack Installer erhält man einen schnellen Überblick über die verfügbaren
Power Toys und kann diese direkt installieren.
</p>
        <p>
          <a href="http://www.codeplex.com/PackInstaller">http://www.codeplex.com/PackInstaller</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7badfeac-a0ba-4e0c-b8ec-4ec44eba2997" />
      </body>
      <title>Power Toys Pack Installer</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7badfeac-a0ba-4e0c-b8ec-4ec44eba2997.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7badfeac-a0ba-4e0c-b8ec-4ec44eba2997.aspx</link>
      <pubDate>Sat, 18 Nov 2006 13:17:01 GMT</pubDate>
      <description>&lt;p&gt;
Mit dem Power Toys Pack Installer erhält man einen schnellen Überblick über die verfügbaren
Power Toys und kann diese direkt installieren.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.codeplex.com/PackInstaller"&gt;http://www.codeplex.com/PackInstaller&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7badfeac-a0ba-4e0c-b8ec-4ec44eba2997" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7badfeac-a0ba-4e0c-b8ec-4ec44eba2997.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=06ad7551-2933-4308-b717-b0dce272b13c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,06ad7551-2933-4308-b717-b0dce272b13c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,06ad7551-2933-4308-b717-b0dce272b13c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=06ad7551-2933-4308-b717-b0dce272b13c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sandcastle, das Dokmentations-Tool von Microsoft ist nun in der November CTP zum download
verfügbar.
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&amp;DisplayLang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&amp;DisplayLang=en</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=06ad7551-2933-4308-b717-b0dce272b13c" />
      </body>
      <title>Sandcastel November CTP verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,06ad7551-2933-4308-b717-b0dce272b13c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,06ad7551-2933-4308-b717-b0dce272b13c.aspx</link>
      <pubDate>Sat, 18 Nov 2006 10:39:10 GMT</pubDate>
      <description>&lt;p&gt;
Sandcastle, das Dokmentations-Tool von Microsoft ist nun in der November CTP zum download
verfügbar.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&amp;amp;DisplayLang=en&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=06ad7551-2933-4308-b717-b0dce272b13c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,06ad7551-2933-4308-b717-b0dce272b13c.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=e295b20b-c49d-489d-bfd9-786ea8f0ba10</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,e295b20b-c49d-489d-bfd9-786ea8f0ba10.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,e295b20b-c49d-489d-bfd9-786ea8f0ba10.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=e295b20b-c49d-489d-bfd9-786ea8f0ba10</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft hat ein Resource Refactoring Tool rausgebracht, mit dem einfach Strings
aus der Anwendung in Resource-Files ausgelagert werden können.
</p>
        <p>
Ein Beispiel mit Screenshots gibts in dem Blog-Beitrag von Alex-
</p>
        <p>
          <a href="http://blogs.dotnetgerman.com/alexonasp.net/PermaLink,guid,4293f21b-679c-4d12-b3c9-3c2a6d3f3833.aspx">http://blogs.dotnetgerman.com/alexonasp.net/PermaLink,guid,4293f21b-679c-4d12-b3c9-3c2a6d3f3833.aspx</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e295b20b-c49d-489d-bfd9-786ea8f0ba10" />
      </body>
      <title>Resource Refactoring Tool f&amp;uuml;r VS 2005</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,e295b20b-c49d-489d-bfd9-786ea8f0ba10.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,e295b20b-c49d-489d-bfd9-786ea8f0ba10.aspx</link>
      <pubDate>Sat, 18 Nov 2006 10:30:32 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft hat ein Resource Refactoring Tool rausgebracht, mit dem einfach Strings
aus der Anwendung in Resource-Files ausgelagert werden können.
&lt;/p&gt;
&lt;p&gt;
Ein Beispiel mit Screenshots gibts in dem Blog-Beitrag von Alex-
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.dotnetgerman.com/alexonasp.net/PermaLink,guid,4293f21b-679c-4d12-b3c9-3c2a6d3f3833.aspx"&gt;http://blogs.dotnetgerman.com/alexonasp.net/PermaLink,guid,4293f21b-679c-4d12-b3c9-3c2a6d3f3833.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=e295b20b-c49d-489d-bfd9-786ea8f0ba10" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,e295b20b-c49d-489d-bfd9-786ea8f0ba10.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=9247e1dc-f69e-4945-9194-5447e5bafe10</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,9247e1dc-f69e-4945-9194-5447e5bafe10.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,9247e1dc-f69e-4945-9194-5447e5bafe10.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=9247e1dc-f69e-4945-9194-5447e5bafe10</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Internet Explorer 7 ist jetzt in der finalen Version zum Download verfügbar. 
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9ae91ebe-3385-447c-8a30-081805b2f90b&amp;DisplayLang=en">Link
to Download details: Windows Internet Explorer for 7 Windows XP SP2</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9247e1dc-f69e-4945-9194-5447e5bafe10" />
      </body>
      <title>Internet Explorer 7 verf&amp;uuml;gbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,9247e1dc-f69e-4945-9194-5447e5bafe10.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,9247e1dc-f69e-4945-9194-5447e5bafe10.aspx</link>
      <pubDate>Mon, 23 Oct 2006 07:53:33 GMT</pubDate>
      <description>&lt;p&gt;
Der Internet Explorer 7 ist jetzt in der finalen Version zum Download verfügbar.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9ae91ebe-3385-447c-8a30-081805b2f90b&amp;amp;DisplayLang=en"&gt;Link
to Download details: Windows Internet Explorer for 7 Windows XP SP2&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=9247e1dc-f69e-4945-9194-5447e5bafe10" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,9247e1dc-f69e-4945-9194-5447e5bafe10.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=1b4ed0de-697f-4cae-90f8-2fa9ff208e7a</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,1b4ed0de-697f-4cae-90f8-2fa9ff208e7a.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,1b4ed0de-697f-4cae-90f8-2fa9ff208e7a.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1b4ed0de-697f-4cae-90f8-2fa9ff208e7a</wfw:commentRss>
      <title>Kostenloses Paint-Tool auf Basis von .net</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,1b4ed0de-697f-4cae-90f8-2fa9ff208e7a.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,1b4ed0de-697f-4cae-90f8-2fa9ff208e7a.aspx</link>
      <pubDate>Fri, 29 Sep 2006 06:29:35 GMT</pubDate>
      <description>&lt;p&gt;
Paint.Net ist ein kostenloses Grafik-Tool, das umfangreiche Funktionen zur Bearbeitung
von Grafiken bietet. Gerade für Entwickler düfte das Tool vollkommen ausreichen und
auch eine echte Alternative zu Photshop &amp;amp; Co sein.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;&lt;a title=http://www.getpaint.net/ href="http://www.getpaint.net/"&gt;http://www.getpaint.net/&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Danke
an Jonas für den Link&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1b4ed0de-697f-4cae-90f8-2fa9ff208e7a" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,1b4ed0de-697f-4cae-90f8-2fa9ff208e7a.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=02dbdf9c-807e-4baf-80bd-087e70a94811</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,02dbdf9c-807e-4baf-80bd-087e70a94811.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,02dbdf9c-807e-4baf-80bd-087e70a94811.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=02dbdf9c-807e-4baf-80bd-087e70a94811</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit der BusyBoxDotNet kann man einfach eine Wartemeldung unter ASP.Net erzeugen.
</p>
        <p>
          <a href="http://busyboxdotnet.qsh.eu/">http://busyboxdotnet.qsh.eu/</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02dbdf9c-807e-4baf-80bd-087e70a94811" />
      </body>
      <title>Warte-Meldung für ASP.Net</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,02dbdf9c-807e-4baf-80bd-087e70a94811.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,02dbdf9c-807e-4baf-80bd-087e70a94811.aspx</link>
      <pubDate>Sun, 17 Sep 2006 19:52:27 GMT</pubDate>
      <description>&lt;p&gt;
Mit der BusyBoxDotNet kann man einfach eine Wartemeldung unter ASP.Net erzeugen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://busyboxdotnet.qsh.eu/"&gt;http://busyboxdotnet.qsh.eu/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=02dbdf9c-807e-4baf-80bd-087e70a94811" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,02dbdf9c-807e-4baf-80bd-087e70a94811.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=06601eaf-c1c1-4c32-971a-86e3aef4ce91</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,06601eaf-c1c1-4c32-971a-86e3aef4ce91.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,06601eaf-c1c1-4c32-971a-86e3aef4ce91.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=06601eaf-c1c1-4c32-971a-86e3aef4ce91</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit <a href="http://www.microsoft.com/downloads/details.aspx?familyid=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;displaylang=en">Sancastle</a> können
XML-Kommentare aus VS 2005 als Dokumentation ähnlich wie die MSDN-Dokumentation aufbereitet
werden. Nun gibt es bei CodeProjekt nun auch eine grafische Oberfläche für Sandcastle.
</p>
        <p>
          <a href="http://www.codeproject.com/useritems/SandcastleBuilder.asp">http://www.codeproject.com/useritems/SandcastleBuilder.asp</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=06601eaf-c1c1-4c32-971a-86e3aef4ce91" />
      </body>
      <title>Grafische Oberfläche für Sandcastle</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,06601eaf-c1c1-4c32-971a-86e3aef4ce91.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,06601eaf-c1c1-4c32-971a-86e3aef4ce91.aspx</link>
      <pubDate>Sun, 17 Sep 2006 19:20:04 GMT</pubDate>
      <description>&lt;p&gt;
Mit &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en"&gt;Sancastle&lt;/a&gt; können
XML-Kommentare aus VS 2005 als Dokumentation ähnlich wie die MSDN-Dokumentation aufbereitet
werden. Nun gibt es bei CodeProjekt nun auch eine grafische Oberfläche für Sandcastle.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.codeproject.com/useritems/SandcastleBuilder.asp"&gt;http://www.codeproject.com/useritems/SandcastleBuilder.asp&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=06601eaf-c1c1-4c32-971a-86e3aef4ce91" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,06601eaf-c1c1-4c32-971a-86e3aef4ce91.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=5b34f2f9-5001-4126-96db-d7c25b082d9b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,5b34f2f9-5001-4126-96db-d7c25b082d9b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,5b34f2f9-5001-4126-96db-d7c25b082d9b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=5b34f2f9-5001-4126-96db-d7c25b082d9b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wenn man seine Klassen sauber mit XML-Kommentaren versieht, ist es ein leichtes, daraus
auch eine schöne Dokumentation zu erstellen. Nur beim eingeben der XML-Kommentare
taucht oft die Frage aus, wie sieht das Ergebnis aus? Dazu jedesmal die Dokumentation
zu erstellen ist recht mühsam. Abhilfe schafft hier dieses kleine Tool, das in der
IDE eine HTML-Vorschau ermöglicht.
</p>
        <p>
          <a href="http://www.kyrsoft.com/opentools/qdocviewer.html">http://www.kyrsoft.com/opentools/qdocviewer.html</a>
        </p>
        <p>
          <img src="http://www.artiso.com/ProBlog/content/binary/docv1.jpg" border="0" />
        </p>
        <img src="http://www.artiso.com/ProBlog/content/binary/docv2.jpg" border="0" />
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5b34f2f9-5001-4126-96db-d7c25b082d9b" />
      </body>
      <title>XML-Kommentare innerhalb der VS IDE als HTML ansehen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,5b34f2f9-5001-4126-96db-d7c25b082d9b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,5b34f2f9-5001-4126-96db-d7c25b082d9b.aspx</link>
      <pubDate>Thu, 07 Sep 2006 20:27:00 GMT</pubDate>
      <description>&lt;p&gt;
Wenn man seine Klassen sauber mit XML-Kommentaren versieht, ist es ein leichtes, daraus
auch eine schöne Dokumentation zu erstellen. Nur beim eingeben der XML-Kommentare
taucht oft die Frage aus, wie sieht das Ergebnis aus? Dazu jedesmal die Dokumentation
zu erstellen ist recht mühsam. Abhilfe schafft hier dieses kleine Tool, das in der
IDE eine HTML-Vorschau ermöglicht.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.kyrsoft.com/opentools/qdocviewer.html"&gt;http://www.kyrsoft.com/opentools/qdocviewer.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.artiso.com/ProBlog/content/binary/docv1.jpg" border=0&gt;
&lt;/p&gt;
&lt;img src="http://www.artiso.com/ProBlog/content/binary/docv2.jpg" border=0&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5b34f2f9-5001-4126-96db-d7c25b082d9b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,5b34f2f9-5001-4126-96db-d7c25b082d9b.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=3abd6b7f-db37-41f9-af98-3abee28a2dd2</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,3abd6b7f-db37-41f9-af98-3abee28a2dd2.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,3abd6b7f-db37-41f9-af98-3abee28a2dd2.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=3abd6b7f-db37-41f9-af98-3abee28a2dd2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem XML Notepad von Microsoft lassen sich XML-Dateien einfach anzeigen und bearbeiten.
Selbst ein Vergleich von zwei XML-Dateien ist möglich.
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;displaylang=en</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3abd6b7f-db37-41f9-af98-3abee28a2dd2" />
      </body>
      <title>XML Notepad</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,3abd6b7f-db37-41f9-af98-3abee28a2dd2.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,3abd6b7f-db37-41f9-af98-3abee28a2dd2.aspx</link>
      <pubDate>Thu, 07 Sep 2006 05:53:10 GMT</pubDate>
      <description>&lt;p&gt;
Mit dem XML Notepad von Microsoft lassen sich XML-Dateien einfach anzeigen und bearbeiten.
Selbst ein Vergleich von zwei XML-Dateien ist möglich.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=3abd6b7f-db37-41f9-af98-3abee28a2dd2" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,3abd6b7f-db37-41f9-af98-3abee28a2dd2.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=31380d13-ebc2-4ba8-97e3-a3a306c68743</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,31380d13-ebc2-4ba8-97e3-a3a306c68743.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,31380d13-ebc2-4ba8-97e3-a3a306c68743.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=31380d13-ebc2-4ba8-97e3-a3a306c68743</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dieses Tool erstellt automatisch XML-Kommentare für einzelne Methoden, Eigenschaften
etc. Wenn man sprechende Methoden- und Parameternamen verwendet, kann das Tool daraus
automatisch eine Beschreibung generieren. Außerdem können neue Parameter zu den XML-Kommentaren
hinzufügen.
</p>
        <p>
          <a href="http://www.roland-weigelt.de/ghostdoc/">http://www.roland-weigelt.de/ghostdoc/</a>
        </p>
        <p>
Es gibt auch ein kleines Video, das die Funktionsweise des Tools zeigt.
</p>
        <p>
          <a href="http://channel9.msdn.com/Showpost.aspx?postid=121822">http://channel9.msdn.com/Showpost.aspx?postid=121822</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=31380d13-ebc2-4ba8-97e3-a3a306c68743" />
      </body>
      <title>Tool das beim Erstellen der XML-Kommentare hilft</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,31380d13-ebc2-4ba8-97e3-a3a306c68743.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,31380d13-ebc2-4ba8-97e3-a3a306c68743.aspx</link>
      <pubDate>Mon, 28 Aug 2006 19:41:59 GMT</pubDate>
      <description>&lt;p&gt;
Dieses Tool erstellt automatisch XML-Kommentare für einzelne Methoden, Eigenschaften
etc. Wenn man sprechende Methoden- und Parameternamen verwendet, kann das Tool daraus
automatisch eine Beschreibung generieren. Außerdem können neue Parameter zu den XML-Kommentaren
hinzufügen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;http://www.roland-weigelt.de/ghostdoc/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Es gibt auch ein kleines Video, das die Funktionsweise des Tools zeigt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=121822"&gt;http://channel9.msdn.com/Showpost.aspx?postid=121822&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=31380d13-ebc2-4ba8-97e3-a3a306c68743" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,31380d13-ebc2-4ba8-97e3-a3a306c68743.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der Task-Manager liefert oftmals nur unzureichende Informationen über die einzelnen
Prozesse etc. Mit dem Tool Process Explorer kann man zu jedem Prozess umfangreiche
Informationen abfragen. Das Tool kann auch den Task-Manager ersetzen. 
</p>
        <p>
Sehr praktisch ist, dass man das Tool nicht installieren muss, sondern die Exe separat
gestartet werden kann.
</p>
        <p>
          <a href="http://www.sysinternals.com/Utilities/ProcessExplorer.html">http://www.sysinternals.com/Utilities/ProcessExplorer.html</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74" />
      </body>
      <title>Erweiterter Task-Manager</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74.aspx</link>
      <pubDate>Mon, 28 Aug 2006 13:28:12 GMT</pubDate>
      <description>&lt;p&gt;
Der Task-Manager liefert oftmals nur unzureichende Informationen über die einzelnen
Prozesse etc. Mit dem Tool Process Explorer kann man zu jedem Prozess umfangreiche
Informationen abfragen. Das Tool kann auch den Task-Manager ersetzen. 
&lt;/p&gt;
&lt;p&gt;
Sehr praktisch ist, dass man das Tool nicht installieren muss, sondern die Exe separat
gestartet werden kann.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.sysinternals.com/Utilities/ProcessExplorer.html"&gt;http://www.sysinternals.com/Utilities/ProcessExplorer.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,78ce1a5f-c43e-48c9-b63d-6fc9c0ca5a74.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=aa3c756a-23f5-4d04-9bbe-fcea45a6028f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,aa3c756a-23f5-4d04-9bbe-fcea45a6028f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,aa3c756a-23f5-4d04-9bbe-fcea45a6028f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=aa3c756a-23f5-4d04-9bbe-fcea45a6028f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
22:02 - Im Internet nach einem Tutorial gesucht.<br />
22:10 - Genau das Passende gefunden.<br />
22:11 - Ausdruck starten, um zu Hause zu lesen<br />
22:12 - Geflucht, weil der rechte Rand mal wieder abgeschnitten ist
</p>
        <p>
Für sole Probleme hat jeder so seinen eigenes Patentrezept, im Querformat drucken,
nach Word kopieren und von da drucken oder - dieses kleine Tool installieren. Damit
kann im IE die Seite so angepasst werden, dass Sie auf jeden Fall auf die Seite passt.
Das Tool bietet auch eine Vorschau. Echt genial!
</p>
        <p>
ACHTUNG - Bei der deutschen Version des IE muss das Icon manuell in die Symbolleiste
eingefügt werden:<br />
Rechte Maustaste auf die Symbolleiste / Anpassen dann aus der linken Liste das Icon
"Fit-width Print" in die rechte Liste übernehmen.
</p>
        <p>
          <a href="http://www.visiontech.ltd.uk/software/#IEPrint">http://www.visiontech.ltd.uk/software/#IEPrint</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa3c756a-23f5-4d04-9bbe-fcea45a6028f" />
      </body>
      <title>Webseiten beim Drucken auf Seite einpassen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,aa3c756a-23f5-4d04-9bbe-fcea45a6028f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,aa3c756a-23f5-4d04-9bbe-fcea45a6028f.aspx</link>
      <pubDate>Fri, 25 Aug 2006 20:12:28 GMT</pubDate>
      <description>&lt;p&gt;
22:02 - Im Internet nach einem Tutorial gesucht.&lt;br&gt;
22:10 - Genau das Passende gefunden.&lt;br&gt;
22:11 - Ausdruck starten, um zu Hause zu lesen&lt;br&gt;
22:12 - Geflucht, weil der rechte Rand mal wieder abgeschnitten ist
&lt;/p&gt;
&lt;p&gt;
Für sole Probleme hat jeder so seinen eigenes Patentrezept, im Querformat drucken,
nach Word kopieren und von da drucken oder - dieses kleine Tool installieren. Damit
kann im IE die Seite so angepasst werden, dass Sie auf jeden Fall auf die Seite passt.
Das Tool bietet auch eine Vorschau. Echt genial!
&lt;/p&gt;
&lt;p&gt;
ACHTUNG - Bei der deutschen Version des IE muss das Icon manuell in die Symbolleiste
eingefügt werden:&lt;br&gt;
Rechte Maustaste auf die Symbolleiste / Anpassen dann aus der linken Liste das Icon
"Fit-width Print" in die rechte Liste übernehmen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.visiontech.ltd.uk/software/#IEPrint"&gt;http://www.visiontech.ltd.uk/software/#IEPrint&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa3c756a-23f5-4d04-9bbe-fcea45a6028f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,aa3c756a-23f5-4d04-9bbe-fcea45a6028f.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4beb249a-5b4c-4147-9932-78fbb17e4beb</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4beb249a-5b4c-4147-9932-78fbb17e4beb.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4beb249a-5b4c-4147-9932-78fbb17e4beb.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4beb249a-5b4c-4147-9932-78fbb17e4beb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jeder Programmierer kennt das Problem. Am Entwicklungsrechner hat man einen schönen
großen Monitor aber wie sieht die Anwendung bei einer anderen Auflösung, z.B. 1024
x 768 aus? Ein Fenster genau auf diese Größe zu bringen ist genau das, was Sizer
tut. Man kann sich beliebige Größen defibnieren und dann einfach diese Größe für ein
Fenster einstellen lassen.
</p>
        <p>
          <a href="http://www.brianapps.net/sizer.html">http://www.brianapps.net/sizer.html</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4beb249a-5b4c-4147-9932-78fbb17e4beb" />
      </body>
      <title>Fenster auf eine definierte Größe setzen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4beb249a-5b4c-4147-9932-78fbb17e4beb.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4beb249a-5b4c-4147-9932-78fbb17e4beb.aspx</link>
      <pubDate>Fri, 25 Aug 2006 20:02:57 GMT</pubDate>
      <description>&lt;p&gt;
Jeder Programmierer kennt das Problem. Am Entwicklungsrechner hat man einen schönen
großen Monitor aber wie sieht die Anwendung bei einer anderen Auflösung, z.B. 1024
x 768 aus?&amp;nbsp;Ein Fenster genau auf diese Größe zu bringen ist genau das, was Sizer
tut. Man kann sich beliebige Größen defibnieren und dann einfach diese Größe für ein
Fenster einstellen lassen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.brianapps.net/sizer.html"&gt;http://www.brianapps.net/sizer.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4beb249a-5b4c-4147-9932-78fbb17e4beb" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4beb249a-5b4c-4147-9932-78fbb17e4beb.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=08c18c6d-503e-433c-b32d-b95178db2b5c</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,08c18c6d-503e-433c-b32d-b95178db2b5c.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,08c18c6d-503e-433c-b32d-b95178db2b5c.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=08c18c6d-503e-433c-b32d-b95178db2b5c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit diesem Tool lassen sich verschiedene Befehle auf Datenbanken ausführen. Damit
lassen sich z.B. Daten einer Tabelle abfragen und nach CSV oder XML exportieren. Der
besondere Charme des Tools ist, dass es nicht installiert werden muss, es kann einfach
die EXE gestartet werden. Damit ist es gut geeignet als Datenbank-Viewer für unterwegs.
</p>
        <p>
          <a href="http://www.albahari.com/queryexpress.html">http://www.albahari.com/queryexpress.html</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=08c18c6d-503e-433c-b32d-b95178db2b5c" />
      </body>
      <title>Kleines SQL-Tool</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,08c18c6d-503e-433c-b32d-b95178db2b5c.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,08c18c6d-503e-433c-b32d-b95178db2b5c.aspx</link>
      <pubDate>Fri, 25 Aug 2006 18:11:19 GMT</pubDate>
      <description>&lt;p&gt;
Mit diesem Tool lassen sich verschiedene Befehle auf Datenbanken ausführen. Damit
lassen sich z.B. Daten einer Tabelle abfragen und nach CSV oder XML exportieren. Der
besondere Charme des Tools ist, dass es nicht installiert werden muss, es kann einfach
die EXE gestartet werden. Damit ist es gut geeignet als Datenbank-Viewer für unterwegs.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.albahari.com/queryexpress.html"&gt;http://www.albahari.com/queryexpress.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=08c18c6d-503e-433c-b32d-b95178db2b5c" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,08c18c6d-503e-433c-b32d-b95178db2b5c.aspx</comments>
      <category>SQL;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8a31d644-04fa-4d3c-9a5b-6577d997739b</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8a31d644-04fa-4d3c-9a5b-6577d997739b.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8a31d644-04fa-4d3c-9a5b-6577d997739b.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8a31d644-04fa-4d3c-9a5b-6577d997739b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der kostenlose Internet Explorer Developer Toolbar von Microsoft bietet eine Fülle
von sehr nützlichen Funktionen für Web-Entwickler. Der Toolbar integriert sich im
Internet-Explorer. Man kann sich z.B. Objekte wie Tabellen, Bilder, DIVs etc. durch
eine Umrandung hervorheben lassen oder man kann die komplette DOM-Struktur dursuchen
und die Eigenschaften der Elemente abfragen und sogar verändern. Die Änderungen werden
sofort sichtbar. Darüber hinaus werden noch eine vielzahl nützlicher Helfer angeboten,
z.B. um Cookies anzuzeigen und zu löschen etc. Ein Tool, das bei keinem Web-Entwickler
fehlen sollte!
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en</a>
        </p>
        <a href="http://www.artiso.com/ProBlog/content/binary/devtoolbar.png" target="_blank">
          <img style="WIDTH: 532px; HEIGHT: 427px" height="554" src="http://www.artiso.com/ProBlog/content/binary/devtoolbar.png" width="817" border="0" />
        </a>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8a31d644-04fa-4d3c-9a5b-6577d997739b" />
      </body>
      <title>Internet Explorer Developer Toolbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8a31d644-04fa-4d3c-9a5b-6577d997739b.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8a31d644-04fa-4d3c-9a5b-6577d997739b.aspx</link>
      <pubDate>Tue, 22 Aug 2006 16:59:42 GMT</pubDate>
      <description>&lt;p&gt;
Der kostenlose Internet Explorer Developer Toolbar von Microsoft bietet eine Fülle
von sehr nützlichen Funktionen für Web-Entwickler. Der Toolbar integriert sich im
Internet-Explorer. Man kann sich z.B. Objekte wie Tabellen, Bilder, DIVs etc. durch
eine Umrandung hervorheben lassen oder man kann die komplette DOM-Struktur dursuchen
und die Eigenschaften der Elemente abfragen und sogar verändern. Die Änderungen werden
sofort sichtbar. Darüber hinaus werden noch eine vielzahl nützlicher Helfer angeboten,
z.B. um Cookies anzuzeigen und zu löschen etc. Ein Tool, das bei keinem Web-Entwickler
fehlen sollte!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en&lt;/a&gt;
&lt;/p&gt;
&lt;a href="http://www.artiso.com/ProBlog/content/binary/devtoolbar.png" target="_blank"&gt;&lt;img style="WIDTH: 532px; HEIGHT: 427px" height=554 src="http://www.artiso.com/ProBlog/content/binary/devtoolbar.png" width=817 border=0&gt;&lt;/a&gt;&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8a31d644-04fa-4d3c-9a5b-6577d997739b" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8a31d644-04fa-4d3c-9a5b-6577d997739b.aspx</comments>
      <category>Tipps und Tricks;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=8000fbfd-7083-49da-ae0a-b03bef1d2178</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,8000fbfd-7083-49da-ae0a-b03bef1d2178.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,8000fbfd-7083-49da-ae0a-b03bef1d2178.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=8000fbfd-7083-49da-ae0a-b03bef1d2178</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dieses Tool unterstützt beim Entwickeln mehrsprachiger Oberflächen. In einer Tabelle
können die Textattribute für verschiedene Sprachen eingegeben werden.
</p>
        <p>
          <a href="http://www.jollans.com/multilang_dotnet/multilang_for_dotnet.htm">http://www.jollans.com/multilang_dotnet/multilang_for_dotnet.htm</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8000fbfd-7083-49da-ae0a-b03bef1d2178" />
      </body>
      <title>Tool zum Erstellen von mehrsprachigen Oberflächen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,8000fbfd-7083-49da-ae0a-b03bef1d2178.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,8000fbfd-7083-49da-ae0a-b03bef1d2178.aspx</link>
      <pubDate>Sat, 19 Aug 2006 08:12:19 GMT</pubDate>
      <description>&lt;p&gt;
Dieses Tool unterstützt beim Entwickeln mehrsprachiger Oberflächen. In einer Tabelle
können die Textattribute für verschiedene Sprachen eingegeben werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jollans.com/multilang_dotnet/multilang_for_dotnet.htm"&gt;http://www.jollans.com/multilang_dotnet/multilang_for_dotnet.htm&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=8000fbfd-7083-49da-ae0a-b03bef1d2178" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,8000fbfd-7083-49da-ae0a-b03bef1d2178.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=7e2f7817-d5ae-49a3-9f75-54ba779d4ea6</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,7e2f7817-d5ae-49a3-9f75-54ba779d4ea6.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,7e2f7817-d5ae-49a3-9f75-54ba779d4ea6.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=7e2f7817-d5ae-49a3-9f75-54ba779d4ea6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Xml2PDF ist eine Komponente, mit der verschiedene XML-Formate nach PDF konvertiert
werden können, unter anderem auch WordML.
</p>
        <p>
          <a href="http://alt-soft.com/products_xml2pdf.jsp">http://alt-soft.com/products_xml2pdf.jsp</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7e2f7817-d5ae-49a3-9f75-54ba779d4ea6" />
      </body>
      <title>PDF aus WordML erzeugen</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,7e2f7817-d5ae-49a3-9f75-54ba779d4ea6.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,7e2f7817-d5ae-49a3-9f75-54ba779d4ea6.aspx</link>
      <pubDate>Fri, 04 Aug 2006 07:08:16 GMT</pubDate>
      <description>&lt;p&gt;
Xml2PDF ist eine Komponente, mit der verschiedene XML-Formate nach PDF konvertiert
werden können, unter anderem auch WordML.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://alt-soft.com/products_xml2pdf.jsp"&gt;http://alt-soft.com/products_xml2pdf.jsp&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=7e2f7817-d5ae-49a3-9f75-54ba779d4ea6" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,7e2f7817-d5ae-49a3-9f75-54ba779d4ea6.aspx</comments>
      <category>Komponenten und Bibliotheken;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=fba53adf-cbe4-409a-acbe-b2256ea36f12</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,fba53adf-cbe4-409a-acbe-b2256ea36f12.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,fba53adf-cbe4-409a-acbe-b2256ea36f12.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=fba53adf-cbe4-409a-acbe-b2256ea36f12</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://sharptoolbox.com/">http://sharptoolbox.com/</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=fba53adf-cbe4-409a-acbe-b2256ea36f12" />
      </body>
      <title>Portal mit zahlreichen Tools und Komponenten rund um .Net</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,fba53adf-cbe4-409a-acbe-b2256ea36f12.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,fba53adf-cbe4-409a-acbe-b2256ea36f12.aspx</link>
      <pubDate>Fri, 28 Jul 2006 06:17:18 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://sharptoolbox.com/"&gt;http://sharptoolbox.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=fba53adf-cbe4-409a-acbe-b2256ea36f12" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,fba53adf-cbe4-409a-acbe-b2256ea36f12.aspx</comments>
      <category>Komponenten und Bibliotheken;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit MSBee kann MSBuild von VS2005 so konfiguriert werden, dass damit Anwendungen kompiliert
werden können, die auf dem Framework 1.1 ablaufen. Dies kann vor allem zur Pflege
von bestehenden Anwendungen sinnvoll sein. Neue Anwendungen zu erstellen ist jedoch
recht mühsahm, weil VS 2005 automatisch partial Classes verwendet, die aber vom Framework
SDK 1.1 nicht unterstützt werden.
</p>
        <p>
          <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee">http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696" />
      </body>
      <title>Mit VS2005 Anwendungen für Framework 1.1 kompilieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696.aspx</link>
      <pubDate>Fri, 28 Jul 2006 06:06:40 GMT</pubDate>
      <description>&lt;p&gt;
Mit MSBee kann MSBuild von VS2005 so konfiguriert werden, dass damit Anwendungen kompiliert
werden können, die auf dem Framework 1.1 ablaufen. Dies kann vor allem zur Pflege
von bestehenden Anwendungen sinnvoll sein. Neue Anwendungen zu erstellen ist jedoch
recht mühsahm, weil VS 2005 automatisch partial Classes verwendet, die aber vom Framework
SDK 1.1 nicht unterstützt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee"&gt;http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,6c1a6e02-d4b9-4f5d-982f-eb0c1ac00696.aspx</comments>
      <category>Tools;VS 2005</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=5a5e2285-f7a5-47e7-b77b-2400da575900</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,5a5e2285-f7a5-47e7-b77b-2400da575900.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,5a5e2285-f7a5-47e7-b77b-2400da575900.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=5a5e2285-f7a5-47e7-b77b-2400da575900</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Unter <a href="http://www.red-gate.com/products/SQL_Prompt/index.htm">http://www.red-gate.com/products/SQL_Prompt/index.htm</a> kann
man kostenlos ein kleines Tool herunterladen, das für alle SQL-Editoren wie z.B. den
Query Analyzer, SQL Server 2005 Managementstudio etc. eine Intelli-Sense Unterstützung
für Tabellen-, Aplaten und Funktionsnamen bietet.
</p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5a5e2285-f7a5-47e7-b77b-2400da575900" />
      </body>
      <title>Intelli-Sense für SQL-Server Editoren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,5a5e2285-f7a5-47e7-b77b-2400da575900.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,5a5e2285-f7a5-47e7-b77b-2400da575900.aspx</link>
      <pubDate>Mon, 24 Jul 2006 15:21:32 GMT</pubDate>
      <description>&lt;p&gt;
Unter &lt;a href="http://www.red-gate.com/products/SQL_Prompt/index.htm"&gt;http://www.red-gate.com/products/SQL_Prompt/index.htm&lt;/a&gt;&amp;nbsp;kann
man kostenlos ein kleines Tool herunterladen, das für alle SQL-Editoren wie z.B. den
Query Analyzer, SQL Server 2005 Managementstudio etc. eine Intelli-Sense Unterstützung
für Tabellen-, Aplaten und Funktionsnamen bietet.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=5a5e2285-f7a5-47e7-b77b-2400da575900" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,5a5e2285-f7a5-47e7-b77b-2400da575900.aspx</comments>
      <category>SQL;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=13eed82d-39dc-48b6-bd16-45a8ff500b54</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,13eed82d-39dc-48b6-bd16-45a8ff500b54.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,13eed82d-39dc-48b6-bd16-45a8ff500b54.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=13eed82d-39dc-48b6-bd16-45a8ff500b54</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mit dem Team Foundation Server Administration Tool können im Team Foundation Server
benutzer und Berechtigungen verwaltet werden.
</p>
        <p>
          <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin">http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=13eed82d-39dc-48b6-bd16-45a8ff500b54" />
      </body>
      <title>Team Foundation Server Administration Tool </title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,13eed82d-39dc-48b6-bd16-45a8ff500b54.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,13eed82d-39dc-48b6-bd16-45a8ff500b54.aspx</link>
      <pubDate>Mon, 24 Jul 2006 05:38:05 GMT</pubDate>
      <description>&lt;p&gt;
Mit dem Team Foundation Server Administration Tool können im Team Foundation Server
benutzer und Berechtigungen verwaltet werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin"&gt;http://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=13eed82d-39dc-48b6-bd16-45a8ff500b54" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,13eed82d-39dc-48b6-bd16-45a8ff500b54.aspx</comments>
      <category>Team System Server;Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=1122ff2b-ea24-4c1f-ba36-52c03df31854</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,1122ff2b-ea24-4c1f-ba36-52c03df31854.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,1122ff2b-ea24-4c1f-ba36-52c03df31854.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=1122ff2b-ea24-4c1f-ba36-52c03df31854</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Der VMWare-Server kann nun kostenlos heruntergeladen werden
</p>
        <p>
          <a href="http://www.vmware.com/download/server/">http://www.vmware.com/download/server/</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1122ff2b-ea24-4c1f-ba36-52c03df31854" />
      </body>
      <title>VMWare-Server nun kostenlos verfügbar</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,1122ff2b-ea24-4c1f-ba36-52c03df31854.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,1122ff2b-ea24-4c1f-ba36-52c03df31854.aspx</link>
      <pubDate>Fri, 14 Jul 2006 05:40:12 GMT</pubDate>
      <description>&lt;p&gt;
Der VMWare-Server kann nun kostenlos heruntergeladen werden
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.vmware.com/download/server/"&gt;http://www.vmware.com/download/server/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=1122ff2b-ea24-4c1f-ba36-52c03df31854" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,1122ff2b-ea24-4c1f-ba36-52c03df31854.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.artiso.com/ProBlog/Trackback.aspx?guid=4a521c87-41ed-42eb-811a-805b4940ab9f</trackback:ping>
      <pingback:server>http://www.artiso.com/ProBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.artiso.com/ProBlog/PermaLink,guid,4a521c87-41ed-42eb-811a-805b4940ab9f.aspx</pingback:target>
      <dc:creator>Thomas Schissler</dc:creator>
      <wfw:comment>http://www.artiso.com/ProBlog/CommentView,guid,4a521c87-41ed-42eb-811a-805b4940ab9f.aspx</wfw:comment>
      <wfw:commentRss>http://www.artiso.com/ProBlog/SyndicationService.asmx/GetEntryCommentsRss?guid=4a521c87-41ed-42eb-811a-805b4940ab9f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jeder kennt das Problem. Man hat einen ellenlangen SQL-String und spätestens nach
der dritten Klammer hat man den Überblick verloren, wenn allles in einer Zeile steht.
Hier hilft ein kleines Tool weiter, das SQL-Strings, auch komplexe, übersichtlich
formatiert. Das Tool gibt es als kostenlose Online-Version und als kostenpflichtige
Offline-Version oder auch als API.
</p>
        <p>
          <a href="http://www.sqlinform.com/">http://www.sqlinform.com/</a>
        </p>
        <img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4a521c87-41ed-42eb-811a-805b4940ab9f" />
      </body>
      <title>SQL-Strings formatieren</title>
      <guid isPermaLink="false">http://www.artiso.com/ProBlog/PermaLink,guid,4a521c87-41ed-42eb-811a-805b4940ab9f.aspx</guid>
      <link>http://www.artiso.com/ProBlog/PermaLink,guid,4a521c87-41ed-42eb-811a-805b4940ab9f.aspx</link>
      <pubDate>Mon, 10 Jul 2006 09:42:16 GMT</pubDate>
      <description>&lt;p&gt;
Jeder kennt das Problem. Man hat einen ellenlangen SQL-String und spätestens nach
der dritten Klammer hat man den Überblick verloren, wenn allles in einer Zeile steht.
Hier hilft ein kleines Tool weiter, das SQL-Strings, auch komplexe, übersichtlich
formatiert. Das Tool gibt es als kostenlose Online-Version und als kostenpflichtige
Offline-Version oder auch als API.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.sqlinform.com/"&gt;http://www.sqlinform.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=4a521c87-41ed-42eb-811a-805b4940ab9f" /&gt;</description>
      <comments>http://www.artiso.com/ProBlog/CommentView,guid,4a521c87-41ed-42eb-811a-805b4940ab9f.aspx</comments>
      <category>SQL;Tools;Tipps und Tricks</category>
    </item>
  </channel>
</rss>