<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lars Hildebrandt's Blog &#187; .Net</title>
	<atom:link href="http://blog.larshildebrandt.de/category/programmieren/net/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.larshildebrandt.de</link>
	<description>übers Programmieren und mehr...</description>
	<lastBuildDate>Mon, 28 Nov 2011 21:11:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>GameServer 1.2</title>
		<link>http://blog.larshildebrandt.de/gameserver-1-2/230.html</link>
		<comments>http://blog.larshildebrandt.de/gameserver-1-2/230.html#comments</comments>
		<pubDate>Mon, 28 Nov 2011 21:04:46 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[Battlefield 3]]></category>
		<category><![CDATA[Call of Duty Modern Warfare 3]]></category>
		<category><![CDATA[GameServer]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=230</guid>
		<description><![CDATA[Heute hat sich die neue Version von GameServer auf den Weg in den Windows Phone 7 &#8211; Marketplace gemacht. Neu hinzugekommen sind der Support für Battlefield 3 und Call of Duty &#8211; Modern Warfare 3. Weiterhin wurde die Listendarstellung der Spieler in einigen Spielen überarbeitet.]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.larshildebrandt.de/wp-content/uploads/2011/11/20111128_GameServer_BF3-179x300.jpg" alt="" title="GameServer - BF3" width="179" height="300" class="alignleft size-medium wp-image-232" /><img src="http://blog.larshildebrandt.de/wp-content/uploads/2011/11/20111128_GameServer_CODMW3-180x300.jpg" alt="" title="GameServer - CODMW3" width="180" height="300" class="alignleft size-medium wp-image-233" />Heute hat sich die neue Version von GameServer auf den Weg in den Windows Phone 7 &#8211; Marketplace gemacht. Neu hinzugekommen sind der Support für Battlefield 3 und Call of Duty &#8211; Modern Warfare 3.<br />
Weiterhin wurde die Listendarstellung der Spieler in einigen Spielen überarbeitet. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/gameserver-1-2/230.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RCON Support erweitert</title>
		<link>http://blog.larshildebrandt.de/rcon-support-erweitert/223.html</link>
		<comments>http://blog.larshildebrandt.de/rcon-support-erweitert/223.html#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:15:18 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[Alien Swarm]]></category>
		<category><![CDATA[Ban]]></category>
		<category><![CDATA[Call of Duty]]></category>
		<category><![CDATA[Call of Duty - United Offensive]]></category>
		<category><![CDATA[Call of Duty 2]]></category>
		<category><![CDATA[Call of Duty 4]]></category>
		<category><![CDATA[Call of Duty 5: World at War]]></category>
		<category><![CDATA[changelevel]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[Counter Strike]]></category>
		<category><![CDATA[Counter Strike Source]]></category>
		<category><![CDATA[Counter-Strike Condition Zero]]></category>
		<category><![CDATA[Dark Messiah of Might and Magic]]></category>
		<category><![CDATA[Day of Defeat]]></category>
		<category><![CDATA[Day of Defeat Source]]></category>
		<category><![CDATA[GameServer]]></category>
		<category><![CDATA[Half-Life]]></category>
		<category><![CDATA[Half-Life 2]]></category>
		<category><![CDATA[Kick]]></category>
		<category><![CDATA[Left 4 Dead]]></category>
		<category><![CDATA[Left 4 Dead 2]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Natural Selection]]></category>
		<category><![CDATA[Quake 3: Arena]]></category>
		<category><![CDATA[RCON]]></category>
		<category><![CDATA[Team Fortress 2]]></category>
		<category><![CDATA[Urban Terror]]></category>
		<category><![CDATA[Wolfenstein: Enemy Territory]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=223</guid>
		<description><![CDATA[Die Entwicklung von GameServer für Windows Phone 7 geht sehr gut voran. Für folgende Spiele habe ich mittlerweile den RCON-Support implementiert: Alien Swarm Counter-Strike Counter-Strike Condition Zero Counter-Strike: Source Day of Defeat Day of Defeat: Source Half-Life Half-Life 2 Left 4 Dead Left 4 Dead 2 Dark Messiah of Might and Magic Natural Selection Team [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.larshildebrandt.de/wp-content/uploads/2011/09/rcon_console-178x300.png" alt="" title="Rcon Console" width="178" height="300" class="alignright size-medium wp-image-224" />Die Entwicklung von GameServer für Windows Phone 7 geht sehr gut voran. Für folgende Spiele habe ich mittlerweile den RCON-Support implementiert:</p>
<p>Alien Swarm<br />
Counter-Strike<br />
Counter-Strike Condition Zero<br />
Counter-Strike: Source<br />
Day of Defeat<br />
Day of Defeat: Source<br />
Half-Life<br />
Half-Life 2<br />
Left 4 Dead<br />
Left 4 Dead 2<br />
Dark Messiah of Might and Magic<br />
Natural Selection<br />
Team Fortress 2<br />
Call of Duty<br />
Call of Duty &#8211; United Offensive<br />
Call of Duty 2<br />
Call of Duty 4<br />
Call of Duty 5: World at War<br />
Quake 3: Arena<br />
Urban Terror<br />
Wolfenstein: Enemy Territory</p>
<p>Die Version befindet sich derzeit in der Testphase und wird in den nächsten Tagen als Update bereitstehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/rcon-support-erweitert/223.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RCON Support für GameServer</title>
		<link>http://blog.larshildebrandt.de/rcon-support-fur-gameserver/212.html</link>
		<comments>http://blog.larshildebrandt.de/rcon-support-fur-gameserver/212.html#comments</comments>
		<pubDate>Wed, 31 Aug 2011 21:46:32 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[Ban]]></category>
		<category><![CDATA[Call of Duty]]></category>
		<category><![CDATA[Counter Strike]]></category>
		<category><![CDATA[Counter Strike Source]]></category>
		<category><![CDATA[Day of Defeat Source]]></category>
		<category><![CDATA[GameServer]]></category>
		<category><![CDATA[Halflife 2]]></category>
		<category><![CDATA[Kick]]></category>
		<category><![CDATA[Left 4 Dead]]></category>
		<category><![CDATA[Left 4 Dead 2]]></category>
		<category><![CDATA[RCON]]></category>
		<category><![CDATA[Team Fortress 2]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=212</guid>
		<description><![CDATA[Die ersten Gehversuche, um auch Rcon-Support für die Windows Phone 7 Version von GameServer zu realisieren, habe ich erfolgreich abgeschlossen. Meine aktuelle Entwicklungsversion unterstützt Counter Strike: Source, Day of Defeat Source, Halflife 2, Left 4 Dead 1 &#038; 2 und Team Fortress 2. Hierbei die Funktionen um die aktuelle Karte zu wechseln, Spieler zu kicken [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.larshildebrandt.de/wp-content/uploads/2011/08/change_map-180x300.png" alt="" title="change_map" width="180" height="300" class="alignleft size-medium wp-image-213" />Die ersten Gehversuche, um auch Rcon-Support für die Windows Phone 7 Version von GameServer zu realisieren, habe ich erfolgreich abgeschlossen. Meine aktuelle Entwicklungsversion unterstützt Counter Strike: Source, Day of Defeat Source, Halflife 2, Left 4 Dead 1 &#038; 2 und Team Fortress 2. Hierbei die Funktionen um die aktuelle Karte zu wechseln, Spieler zu kicken und Spieler zu bannen. Das Ändern von Cvars steht nun auf der Tagesordnung und sollte innerhalb der nächsten Tage implementiert sein.</p>
<p>Weiterhin sind Counter Strike 1.6 und alle anderen Halflife 1-Spiele sowie die Call of Duty-Reihe in Vorbereitung. </p>
<p>Ihr findet die App im Marketplace unter folgender Adresse: <a href="http://windowsphone.com/s?appid=cbd809f4-9b65-4a4e-9949-4403cedaf046" title="GameServer for Windows Phone 7" target="_blank">GameServer for Windows Phone 7</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/rcon-support-fur-gameserver/212.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GameServer für Windows Phone 7</title>
		<link>http://blog.larshildebrandt.de/gameserver-fur-windows-phone-7/201.html</link>
		<comments>http://blog.larshildebrandt.de/gameserver-fur-windows-phone-7/201.html#comments</comments>
		<pubDate>Thu, 25 Aug 2011 21:10:11 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[GameServer]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=201</guid>
		<description><![CDATA[Nachdem die Version 2.0 von GameServer für Joomla fast fertig gestellt ist, habe ich nun meine erste Windows Phone 7 App programmiert. Ziel der App ist es, Livedaten von GameServern auf dem Phone darzustellen. Die App befindet sich derzeit im Zertifizierungsprozess bei Microsoft und sollte in den nächsten Tagen im Marketplace verfügbar sein. Fürs Erste [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.larshildebrandt.de/wp-content/uploads/2011/08/serverdetail-180x300.png" alt="" title="Serverdetail" width="180" height="300" class="alignleft size-medium wp-image-203" />Nachdem die Version 2.0 von GameServer für Joomla fast fertig gestellt ist, habe ich nun meine erste Windows Phone 7 App programmiert. Ziel der App ist es, Livedaten von GameServern auf dem Phone darzustellen.<br />
Die App befindet sich derzeit im Zertifizierungsprozess bei Microsoft und sollte in den nächsten Tagen im Marketplace verfügbar sein.</p>
<p>Fürs Erste unterstützt die App folgende Spiele:</p>
<p>Alien Swarm<br />
America&#8217;s Army<br />
America&#8217;s Army 3<br />
Armed Assault<br />
Armed Assault 2<br />
Battlefield 1942<br />
Battlefield Vietnam<br />
Battlefield 2<br />
Battlefield 2142<br />
Battlefield Bad Company 2<br />
Brink<br />
Call of Duty<br />
Call of Duty &#8211; United Offensive<br />
Call of Duty 2<br />
Call of Duty 4<br />
Call of Duty 5: World at War<br />
Counter-Strike<br />
Condition Zero<br />
Counter-Strike: Source<br />
Crysis<br />
Crysis Wars<br />
Crysis 2<br />
Day of Defeat<br />
Day of Defeat: Source<br />
Doom 3<br />
Enemy Territory: Quake Wars<br />
F.E.A.R.<br />
Frontline: Fuel of War<br />
Ghost Recon: Advanced Warfighter<br />
Ghost Recon: Advanced Warfighter 2<br />
Half-Life<br />
Half-Life 2<br />
Homefront<br />
Killing Floor<br />
Left 4 Dead<br />
Left 4 Dead 2<br />
Natural Selection<br />
Medal of Honor<br />
Dark Messiah of Might and Magic<br />
OpenTTD<br />
Quake 3: Arena<br />
Quake 4<br />
Orchestra: Ostfront 41-45<br />
Return to Castle Wolfenstein<br />
San Andreas: Multiplayer<br />
Soldier of Fortune 2: Double Helix<br />
Team Fortress 2<br />
Unreal Tournament<br />
Unreal Tournament 2003<br />
Unreal Tournament 2004<br />
Unreal Tournament 3<br />
Urban Terror<br />
Wolfenstein: Enemy Territory</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/gameserver-fur-windows-phone-7/201.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erweiterung der DevExpress-Templates</title>
		<link>http://blog.larshildebrandt.de/erweiterung-der-devexpress-templates/176.html</link>
		<comments>http://blog.larshildebrandt.de/erweiterung-der-devexpress-templates/176.html#comments</comments>
		<pubDate>Tue, 02 Nov 2010 10:23:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=176</guid>
		<description><![CDATA[CodeRush von DevExpress bietet durch seine Shortcuts die Möglichkeit die Schreibarbeit deutlich zu beschleunigen. So gibt es zum Beispiel das Kürzel &#8220;as&#8221; zum Anlegen einer Auto-Property vom Typ String. Das sieht dann so aus: und ergibt: Das Ganze funktioniert analog mit &#8220;ab&#8221; für Booleans, &#8220;ai&#8221; für Integer usw&#8230; Leider gibt es von Haus aus keine [...]]]></description>
			<content:encoded><![CDATA[<p>CodeRush von DevExpress bietet durch seine Shortcuts die Möglichkeit die Schreibarbeit deutlich zu beschleunigen.</p>
<p>So gibt es zum Beispiel das Kürzel &#8220;as&#8221; zum Anlegen einer Auto-Property vom Typ String. Das sieht dann so aus:</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush1.jpg"><img class="alignleft size-full wp-image-177" title="CodeRush1" src="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush1.jpg" alt="" width="296" height="143" /></a></p>
<p>und ergibt:</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush2.jpg"><img class="alignleft size-full wp-image-178" title="CodeRush2" src="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush2.jpg" alt="" width="312" height="53" /></a></p>
<p>Das Ganze funktioniert analog mit &#8220;ab&#8221; für Booleans, &#8220;ai&#8221; für Integer usw&#8230;</p>
<p>Leider gibt es von Haus aus keine Shortcuts für virtuelle Auto-Properties, die für NHibernate benötigt werden.</p>
<p>CodeRush bietet hierfür eine Möglichkeit eigene Shortcuts hinzuzufügen:</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush3.jpg"><img class="alignleft size-full wp-image-179" title="CodeRush3" src="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush3.jpg" alt="" width="312" height="51" /></a></p>
<p>Dieser Shortcut  ermöglicht die Schreibweise &#8220;avs&#8221; für</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush4.jpg"><img class="alignleft size-full wp-image-180" title="CodeRush4" src="http://blog.larshildebrandt.de/wp-content/uploads/2010/11/CodeRush4.jpg" alt="" width="379" height="62" /></a></p>
<p>Auch dieser Shortcut unterstützt automatisch die von CodeRush gebotenen Kürzel für die verschiedenen Datentypen (avb, avi&#8230;).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/erweiterung-der-devexpress-templates/176.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NuPack &#8211; Package Management für .net und Visual Studio 2010</title>
		<link>http://blog.larshildebrandt.de/nupack-package-management-for-net-and-visual-studio-2010/153.html</link>
		<comments>http://blog.larshildebrandt.de/nupack-package-management-for-net-and-visual-studio-2010/153.html#comments</comments>
		<pubDate>Fri, 08 Oct 2010 21:50:30 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=153</guid>
		<description><![CDATA[Seit gestern beschäftige ich mich mit einem neuen AddOn für Visual Studio. Ein AddIn, das die Chance hat, eines der wichtigsten der nächsten Zeit zu werden. Die Rede ist von NuPack. NuPack ist Paket-Manager, der es ermöglicht auf natürliche Art und Weise benötigte externe Assemblies in ein Visual Studio-Projekt aufzunehmen. Kein Erzeugen eines Lib-Ordners mehr. [...]]]></description>
			<content:encoded><![CDATA[<p>Seit gestern beschäftige ich mich mit einem neuen AddOn für Visual Studio. Ein AddIn, das die Chance hat, eines der wichtigsten der nächsten Zeit zu werden. Die Rede ist von NuPack. NuPack ist Paket-Manager, der es ermöglicht auf natürliche Art und Weise benötigte externe Assemblies in ein Visual Studio-Projekt aufzunehmen. Kein Erzeugen eines Lib-Ordners mehr. Kein SVN-Copy oder ähnliches, um die Assemblies in den Lib-Ordner zu kopieren&#8230;</p>
<p>Doch wie funktioniert das Ganze mit NuPack? Eigentlich ganz einfach. Als erstes brauchen wir mal das AddIn. Dieses kann zum einen von <a href="http://nupack.codeplex.com">http://nupack.codeplex.com</a> geladen oder über den Extension Manager hinzugefügt werden.</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_1.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_1.jpg" alt="" title="Die Erweiterung im Extension Manager" width="600" height="338" class="alignleft size-full wp-image-155" /></a></p>
<p>Nach erfolgreicher Installation der Erweiterung erhält man einen neuen Menüpunkt im Solution Explorer, der es einem erlaubt ein Package dem Projekt hinzuzufügen.</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_2.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_2.jpg" alt="" title="Package hinzufügen" width="300" height="182" class="alignleft size-full wp-image-157" /></a></p>
<p>Im folgenden Dialog, der dem des Extension Managers nachempfunden wurde, findet man die bereitgestellten Assemblies bzw. Funktionalitäten. </p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_3.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_3.jpg" alt="" title="Packageauswahl" width="600" height="437" class="alignleft size-full wp-image-165" /></a></p>
<p>Mit einem Klick auf den entsprechenden Install-Button wird das Package geladen. Automatisch wird die geladene Assembly neben der Solution in einen Package-Ordner abgelegt und die Referenz auf die Assembly dem Projekt hinzugefügt wird. </p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_4.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_4.jpg" alt="" title="Referenz hinzugefügt" width="250" height="216" class="alignleft size-full wp-image-166" /></a>  <a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_5.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_5.jpg" alt="" title="Dateistruktur" width="187" height="81" class="alignleft size-full wp-image-167" /></a></p>
<p>Weiterhin besteht die Möglichkeit Config-Einträge automatisch in die entsprechende Config einzutragen. Ein Beispiel hierfür ist Elmah.</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_7.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_7.jpg" alt="" title="Hinzufügen von Config-Einträgen am Beispiel Elmah" width="500" height="187" class="alignleft size-full wp-image-170" /></a></p>
<p>Zusätzlich zu dem Dialog gestützten Installieren, gibt es noch den Weg über die Package Manager Console, die mit PowerShell-Befehlen die Funktionen des Dialogs abdeckt und darüber hinaus noch einige zusätzliche Funktionen bietet.</p>
<p><a href="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_6.jpg"><img src="http://blog.larshildebrandt.de/wp-content/uploads/2010/10/20101008_NuPack_6.jpg" alt="" title="Package Manager Console" width="400" height="114" class="alignleft size-full wp-image-169" /></a></p>
<p>Ein weiterer spannender Aspekt der Erweiterung ist die generelle Funktionsweise. Die Liste der zur Verfügung stehenden Assemblies wird über einen Feed bereitgestellt, der in den Settings von Visual Studio eingestellt bzw. angepasst werden kann. Über diesen Weg und die Tatsache, dass ebenfalls ein Tool zur Erstellung der Packages auf der Code-Plex-Seite bereitgestellt wurde, lassen sich auch im Firmenumfeld deutlich einfachere Szenarien für die Bereitstellung einheitlicher und kompatibler Erweiterungen darstellen. Man braucht ja nur einen eigenen Feed mit den geprüften und erlaubten Assemblies bereitstellen und schon können diese von den Kollegen genutzt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/nupack-package-management-for-net-and-visual-studio-2010/153.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elmah &#8211; Error Logging Modules and Handlers for ASP.NET</title>
		<link>http://blog.larshildebrandt.de/elmah-error-logging-modules-and-handlers-for-aspnet/131.html</link>
		<comments>http://blog.larshildebrandt.de/elmah-error-logging-modules-and-handlers-for-aspnet/131.html#comments</comments>
		<pubDate>Mon, 11 May 2009 21:23:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Exception-Handling]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Logging]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=131</guid>
		<description><![CDATA[Ich arbeite zur Zeit an einem kleinen ASP.net Projekt. Für das globale Exception-Logging bin ich dank meines Kollegen Tobi über Elmah gestolpert. Über Elmah besteht die Möglichkeit sämtliche unbehandelten Exceptions zu speichern. Unterstützt werden derzeit folgende Weg: - Microsoft SQL Server - Oracle - SQLite - Microsoft Access - VistaDB - XML-Dateien - im Speicher [...]]]></description>
			<content:encoded><![CDATA[<p>Ich arbeite zur Zeit an einem kleinen ASP.net Projekt. Für das globale Exception-Logging bin ich dank meines Kollegen Tobi über <a title="Elmah" href="http://code.google.com/p/elmah/" target="_blank">Elmah</a> gestolpert. Über Elmah besteht die Möglichkeit sämtliche unbehandelten Exceptions zu speichern. Unterstützt werden derzeit folgende Weg:</p>
<p>- Microsoft SQL Server<br />
- Oracle<br />
- SQLite<br />
- Microsoft Access<br />
- VistaDB<br />
- XML-Dateien<br />
- im Speicher</p>
<ul></ul>
<p>Weiterhin besteht die Möglichkeit sich Emails schicken zu lassen. Elmah bringt gleich eine webbasierte Übersicht mit, so dass man sich sehr einfach einen Überblick über aufgetretene Exceptions machen kann.</p>
<p>Um Elmah einem Projekt hinzuzufügen, muss kein Sourcecode neu kompliliert werden. Es müssen nur ein paar Anpassungen an der Webconfig vorgenommen werden.</p>
<p>Hier eine ganz einfach Webconfig ohne Mailversandt:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configSections<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sectionGroup</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;elmah&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;section</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;security&quot;</span> <span style="color: #000066;">requirePermission</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Elmah.SecuritySectionHandler, Elmah&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;section</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;errorLog&quot;</span> <span style="color: #000066;">requirePermission</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Elmah.ErrorLogSectionHandler, Elmah&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/sectionGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configSections<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;elmah<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;errorLog</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Elmah.SQLiteErrorLog, Elmah&quot;</span> <span style="color: #000066;">connectionStringName</span>=<span style="color: #ff0000;">&quot;ELMAH.SQLite&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/elmah<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connectionStrings<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;add</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ELMAH.SQLite&quot;</span> <span style="color: #000066;">connectionString</span>=<span style="color: #ff0000;">&quot;Data Source=|DataDirectory|errors.s3db&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connectionStrings<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;system.web<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;compilation</span> <span style="color: #000066;">debug</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">defaultLanguage</span>=<span style="color: #ff0000;">&quot;C#&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;httpModules<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;add</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ErrorLog&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Elmah.ErrorLogModule, Elmah&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;add</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ErrorFilter&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Elmah.ErrorFilterModule, Elmah&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/httpModules<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;httpHandlers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;add</span> <span style="color: #000066;">verb</span>=<span style="color: #ff0000;">&quot;POST,GET,HEAD&quot;</span> <span style="color: #000066;">path</span>=<span style="color: #ff0000;">&quot;elmah.axd&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;Elmah.ErrorLogPageFactory, Elmah&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/httpHandlers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;trace</span> <span style="color: #000066;">enabled</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">requestLimit</span>=<span style="color: #ff0000;">&quot;10&quot;</span> <span style="color: #000066;">pageOutput</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000066;">traceMode</span>=<span style="color: #ff0000;">&quot;SortByTime&quot;</span> <span style="color: #000066;">localOnly</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;globalization</span> <span style="color: #000066;">requestEncoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span> <span style="color: #000066;">responseEncoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span> <span style="color: #000066;">culture</span>=<span style="color: #ff0000;">&quot;en-US&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;trust</span> <span style="color: #000066;">level</span>=<span style="color: #ff0000;">&quot;Full&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/system.web<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Über den Aufruf von &#8220;elmah.axd&#8221; erhält man die Webseite mit allen gespeicherten Exceptions.</p>
<p>Wer also ein kleines, leichtes Framework fürs Exceptionhandling sucht, dem sei Elmah empfohlen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/elmah-error-logging-modules-and-handlers-for-aspnet/131.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fluent NHibernate mit abgeleiteten Klassen</title>
		<link>http://blog.larshildebrandt.de/fluent-nhibernate-inheritance/113.html</link>
		<comments>http://blog.larshildebrandt.de/fluent-nhibernate-inheritance/113.html#comments</comments>
		<pubDate>Thu, 19 Mar 2009 10:17:57 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[FluentNHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=113</guid>
		<description><![CDATA[Gestern Abend habe ich mich mal wieder ein wenig mit Fluent NHibernate beschäftigt. Mein Ziel war es, eine Objektstruktur, die aus einer Basisklasse und zwei abgeleiteten Klassen besteht mittels Fluent NHibernate zu speichern. Nach einigem Fehlversuchen bin ich dann zu folgendem Ergebnis gekommen: public class KontaktMap : ClassMap&#60;Kontakt&#62; &#123; public KontaktMap&#40;&#41; &#123; Id&#40;x =&#62; x.KontaktId&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern Abend habe ich mich mal wieder ein wenig mit Fluent NHibernate beschäftigt. Mein Ziel war es, eine Objektstruktur, die aus einer Basisklasse und zwei abgeleiteten Klassen besteht mittels Fluent NHibernate zu speichern.<br />
<img src="http://blog.larshildebrandt.de/wp-content/uploads/2009/03/20090319_fluentnhibernateinheritance.jpg" alt="" title="Objektmodell" width="430" height="325" class="alignleft size-full wp-image-114" /></p>
<p>Nach einigem Fehlversuchen bin ich dann zu folgendem Ergebnis gekommen:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> KontaktMap <span style="color: #008000;">:</span> ClassMap<span style="color: #008000;">&lt;</span>Kontakt<span style="color: #008000;">&gt;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> KontaktMap<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            Id<span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">KontaktId</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">GeneratedBy</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">GuidComb</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">WithUnsavedValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;00000000-0000-0000-0000-000000000000&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            Map<span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">KontaktPerson</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            JoinedSubClass<span style="color: #008000;">&lt;</span>Brief<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;KontaktId&quot;</span>, MapBrief<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            JoinedSubClass<span style="color: #008000;">&lt;</span>Anruf<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;KontaktId&quot;</span>, MapAnruf<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> MapBrief<span style="color: #008000;">&#40;</span>JoinedSubClassPart<span style="color: #008000;">&lt;</span>Brief<span style="color: #008000;">&gt;</span> part<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            part<span style="color: #008000;">.</span><span style="color: #0000FF;">Map</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Absender</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            part<span style="color: #008000;">.</span><span style="color: #0000FF;">Map</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> MapAnruf<span style="color: #008000;">&#40;</span>JoinedSubClassPart<span style="color: #008000;">&lt;</span>Anruf<span style="color: #008000;">&gt;</span> part<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            part<span style="color: #008000;">.</span><span style="color: #0000FF;">Map</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Telefonnummer</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            part<span style="color: #008000;">.</span><span style="color: #0000FF;">Map</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Bemerkung</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>  
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p>Hier das vollständige Beispiel: <a href='http://blog.larshildebrandt.de/wp-content/uploads/2009/03/20090319_fluentnhibernateinheritance.zip'>Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/fluent-nhibernate-inheritance/113.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fluent NHibernate</title>
		<link>http://blog.larshildebrandt.de/fluent-nhibernate/105.html</link>
		<comments>http://blog.larshildebrandt.de/fluent-nhibernate/105.html#comments</comments>
		<pubDate>Fri, 13 Mar 2009 14:42:23 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[FluentNHibernate]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=105</guid>
		<description><![CDATA[Habt ihr Euch auch schon einmal darüber geärgert, wieder diese unschönen XML-Dateien für das Mapping von NHibernate schreiben zu müssen? Seit kurzem gibt es gegen diese Unschönheit eine Lösung. Fluent NHibernate bietet Euch die Möglichkeit Eure Mappings &#8220;strongly typed&#8221; zu definieren. Anstatt der hbm.xml-Datei gibt es mit Fluent NHibernate eine Mapping-Klasse. Die Klasse Person mit [...]]]></description>
			<content:encoded><![CDATA[<p>Habt ihr Euch auch schon einmal darüber geärgert, wieder diese unschönen XML-Dateien für das Mapping von NHibernate schreiben zu müssen? Seit kurzem gibt es gegen diese Unschönheit eine Lösung. Fluent NHibernate bietet Euch die Möglichkeit Eure Mappings &#8220;strongly typed&#8221; zu definieren. Anstatt der hbm.xml-Datei gibt es mit Fluent NHibernate eine Mapping-Klasse.</p>
<p>Die Klasse Person mit einer Liste von Adressen</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Person
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">virtual</span> Guid PersonId <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">virtual</span> <span style="color: #6666cc; font-weight: bold;">string</span> Vorname <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">virtual</span> <span style="color: #6666cc; font-weight: bold;">string</span> Nachname <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">virtual</span> IList<span style="color: #008000;">&lt;</span>Adresse<span style="color: #008000;">&gt;</span> Adressen <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p>kann dann wie folgt gemappt werden.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> PersonMap <span style="color: #008000;">:</span> ClassMap<span style="color: #008000;">&lt;</span>Person<span style="color: #008000;">&gt;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> PersonMap<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            Id<span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">PersonId</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">GeneratedBy</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">GuidComb</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">WithUnsavedValue</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;00000000-0000-0000-0000-000000000000&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            Map<span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Vorname</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">WithLengthOf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">50</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            Map<span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Nachname</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">WithLengthOf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">50</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            HasMany<span style="color: #008000;">&lt;</span>Adresse<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">=&gt;</span> x<span style="color: #008000;">.</span><span style="color: #0000FF;">Adressen</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">Access</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AsProperty</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">AsBag</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">WithKeyColumn</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;PersonId&quot;</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">.</span><span style="color: #0000FF;">Cascade</span><span style="color: #008000;">.</span><span style="color: #0000FF;">All</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p>Aber welche Vorteile biete die Fluent-Variante?</p>
<p>1. Die XML-Mapping-Dateien können nicht vom Compiler geprüft werden. Fehlkonfigurationen fallen erst zu Laufzeit auf (Exception)<br />
2. Mapping-Klassen werden wie alle anderen Klassen vom Compiler geprüft. Fehler fallen zu Entwurfszeit auf.<br />
3. Beim Umbennen von Feldern in Klassen über die Refactoring-Möglichkeiten von Visual Studio bzw. Erweiterungen werden die Felder in den Mapping-Klassen ebenfalls umbenannt. Bei den XML-Mappings müsste das händisch gemacht werden.<br />
4. Fluent-Mappings sind deutlich kürzer bzw. deutlich besser lesbar.</p>
<p>Auch die Konfiguration von NHibernate kann über eine FluentVariante realisiert werden.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">    ISessionFactory sessionFactory <span style="color: #008000;">=</span> Fluently
        <span style="color: #008000;">.</span><span style="color: #0000FF;">Configure</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">.</span><span style="color: #0000FF;">Database</span><span style="color: #008000;">&#40;</span>SQLiteConfiguration<span style="color: #008000;">.</span><span style="color: #0000FF;">Standard</span><span style="color: #008000;">.</span><span style="color: #0000FF;">UsingFile</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Beispiel.db&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">.</span><span style="color: #0000FF;">Mappings</span><span style="color: #008000;">&#40;</span>m <span style="color: #008000;">=&gt;</span> m<span style="color: #008000;">.</span><span style="color: #0000FF;">FluentMappings</span><span style="color: #008000;">.</span><span style="color: #0000FF;">AddFromAssemblyOf</span><span style="color: #008000;">&lt;</span>Person<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">.</span><span style="color: #0000FF;">BuildSessionFactory</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Unter <a href="http://fluentnhibernate.org/" >http://fluentnhibernate.org/</a> kann man sich die aktuelle Version der NHibernate-Erweitung laden und mit der neuen XML-freien Variante von Mappings anfreunden. </p>
<p>Das komplette Beispiel gibt es <a href='http://blog.larshildebrandt.de/wp-content/uploads/2009/03/20090313_fluentnhibernate.zip'>hier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/fluent-nhibernate/105.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HudsonTray &#8211; A Hudson Tray Application</title>
		<link>http://blog.larshildebrandt.de/hudson_tray/95.html</link>
		<comments>http://blog.larshildebrandt.de/hudson_tray/95.html#comments</comments>
		<pubDate>Mon, 15 Dec 2008 17:51:59 +0000</pubDate>
		<dc:creator>Lars Hildebrandt</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Build-Server]]></category>
		<category><![CDATA[Composite Application Library]]></category>
		<category><![CDATA[Continuous Integretion]]></category>
		<category><![CDATA[Hudson]]></category>

		<guid isPermaLink="false">http://blog.larshildebrandt.de/?p=95</guid>
		<description><![CDATA[Unsere Java-Truppe hat uns vor ein paar Tagen ihren Continuous Integretion Server Hudson gezeigt. Wir waren sehr davon angetan, wie einfach dieses System zu bedienen ist. Als sie uns sagten, das Hudson auch .net-Projekte bauen kann, wurden wir hellhörig. Kurze Zeit später hatten wir auf einer VM ein Testsystem online, welches für erste Vergleichstest herhalten [...]]]></description>
			<content:encoded><![CDATA[<p>Unsere Java-Truppe hat uns vor ein paar Tagen ihren Continuous Integretion Server <a href="https://hudson.dev.java.net/" target="_blank">Hudson</a> gezeigt. Wir waren sehr davon angetan, wie einfach dieses System zu bedienen ist. Als sie uns sagten, das Hudson auch .net-Projekte bauen kann, wurden wir hellhörig.<br />
Kurze Zeit später hatten wir auf einer VM ein Testsystem online, welches für erste Vergleichstest herhalten musste. Der erste Eindruck von der einfachen Bedienung bestätigte sich bei jedem neuen Projekt, das wir im System hinterlegten. Auch das Thema Unit-Test mit NUnit wird durch ein Add-In für Hudson unterstützt. Wer mal etwas tiefer in die Konfiguration von Jobs schauen möchte, kann ja mal <a href="http://redsolo.blogspot.com/2008/04/guide-to-building-net-projects-using.html" target="_blank">hier</a> gucken <img src='http://blog.larshildebrandt.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>Das einzige, was mir persönlich nicht so gut gefiel, war die Tatsache, das es keine brauchbare Tray-Anwendung zur Darstellung des Status gab. Ich persönlich bin kein großer Freund von Mail-Benachrichtigungen.</p>
<p>Nach kurzem Durchsuchen der <a href="https://hudson.dev.java.net" target="_blank">Hudson-Seite</a> wurde ich auf die bereitgestellt API aufmerksam&#8230; und ein paar Abende später, war die erste Version meiner Tray-Anwendung fertig.</p>
<p><img src="http://blog.larshildebrandt.de/wp-content/uploads/2008/12/20081214_hudsontray.jpg" alt="HudsonTray-Jobs" title="HudsonTray"  /></p>
<p>Wer mehr sehen will, kann sich auch auf <a href="http://www.codeplex.com/hudsontray" target="_blank">CodePlex</a> die aktuelle Version oder auch den Source-Code runterladen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.larshildebrandt.de/hudson_tray/95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

