<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Der-Albert.com sein Blog!</title>
        <link>http://der-albert.com/Default.aspx</link>
        <description>Softwareentwicklung, mehr und der ganze Rest!</description>
        <language>de-DE</language>
        <copyright>Albert Weinert</copyright>
        <generator>Subtext Version 2.5.1.19</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license>
        <image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/der-albert-com" /><feedburner:info uri="der-albert-com" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
            <title>Verbesserte Audiotechnik bei mir im Hause</title>
            <category>Screencast</category>
            <category>Tools</category>
            <category>Sonstiges</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/gwDGhvDaRM4/verbesserte-audiotechnik-bei-mir-im-hause.aspx</link>
            <description>&lt;p&gt;Ich habe ja heute meinen ersten offiziellen Screencast aufgenommen, zu Ehren der Erwerbs von diverser Hardware zur Ton-Aufzeichnung. Eine Anschaffung eines &lt;em&gt;richtigen&lt;/em&gt; Mikrofons zur Aufnahme von Ton hatte ich schon lange vor, doch was kauft man, in was investiert man und man möchte vielleicht nicht soviel zum &lt;em&gt;spielen&lt;/em&gt; ausgeben.&lt;/p&gt;  &lt;p&gt;Da kam mir der Blog-Artikel von &lt;a href="http://jameskovacs.com/2010/08/07/improving-your-audio-hardware-edition/" target="_blank"&gt;James Kovacs&lt;/a&gt; gerade recht in dem er beschreibt was er nutzt. Er nutzt das Audio-Technica AT2020. Dies gibt es hier in Deutschland für so um 99€. In Anlehnung seines Blogs mit Qualitätsvergleich mache ich dies nun auch. Von der Technik habe ich keine Ahnung, sie muss funktionieren. Technisches kann man bei James nachlesen.&lt;/p&gt;  &lt;h3&gt;Bestellung&lt;/h3&gt;  &lt;p&gt;Nun habe ich mich am Sonntag dann in den Online &lt;a href="http://www.musicstore.de" target="_blank"&gt;Musikladen&lt;/a&gt; meines Vertrauens gestürzt und ein wenig gestöbert was ich denn für mich so brauchen könnte. Da kam schon was zusammen, natürlich erstmal das Mikrofon. Dies gab es als USB und als &lt;a href="http://de.wikipedia.org/wiki/XLR" target="_blank"&gt;XLR&lt;/a&gt; Ausführung. USB hätte den Vorteil ich kann es direkt am Rechner anschließen, der Nachteil ist ich kann es nur am Rechner anschließen. Dies ist etwas was ich nicht möchte da ich es auch woanders verwenden kann (ich denke da an Podcasts, Interviews, auch mal Unterwegs) und dann vielleicht zu eingeschränkt bin bei möglicher weiterer Hardware (z.B. Mehrspurrekorder). &lt;/p&gt;  &lt;p&gt;Also kommt nur die XLR Ausführung in Frage, die braucht jedoch 48V &lt;a href="http://de.wikipedia.org/wiki/Phantomspeisung" target="_blank"&gt;Phantomspeisung&lt;/a&gt;. Dafür gibt es mehrere Lösungen, Vorverstärker, USB A/B Wandler. Ich habe mich für der Einfachheithalber für ein &lt;a href="http://www.musicstore.de/de_DE/EUR/_SET_-A.technica-AT2020/MicroPort-EX-1x-Mikro-USB-Adapter-Kabel/art-REC117" target="_blank"&gt;Set entschieden&lt;/a&gt; wo so ein Microport XLR/USB Wandler dabei war. Keine Ahnung ob der was taugt, aber ist im Set also wird’s schon passen dachte ich mir.&lt;/p&gt;  &lt;p&gt;Dazu kam dann noch ein Mikrofonhalter, eine Spinne die das Mikro von schlägen auf dem Tisch entkoppelt, ein Tischarm für’s Mikrofon und ein Popp-Schutz.&lt;/p&gt;  &lt;h3&gt;Lieferung&lt;/h3&gt;  &lt;p&gt;Heute brauchte der UPS Mensch das Paket mit allen Inhalten vorbei, bis auf die Spinne funktioniert alles, die habe ich wohl eine Nummer zu eng gekauft, ich bekomme das Mikrofon da nicht rein.&lt;/p&gt;  &lt;h3&gt;Entäuschung&lt;/h3&gt;  &lt;p&gt;Nachdem ich das dann alles in Betrieb genommen hatte habe ich den &lt;a href="http://der-albert.com/archive/2010/08/10/resharper-dateienndasheinchecken-oder-nicht.aspx" target="_blank"&gt;Screencast&lt;/a&gt; aufgenommen. Und es wurde zurecht eine nicht ganz so gute Tonqualität vernommen, als ob ich zu weit wegwäre. Ich war schon was unzufrieden, da ganze Geld und dann sowas. Somit schob ich es auf die Software. Aber die war nicht an allem Schuld.&lt;/p&gt;  &lt;p&gt;Ganz wichtig bei so einem Semi-Pro mit &lt;a href="http://de.wikipedia.org/wiki/Nierencharakteristik" target="_blank"&gt;Nierencharakteristik&lt;/a&gt; ist das man es auch an die richtige Stelle beschallt. Dies habe nich nicht gemacht, ich habe &lt;em&gt;oben&lt;/em&gt; hineingesprochen, was für dieses nicht ganz so gut war. Es gibt welche da funktioniert dies.&lt;/p&gt;  &lt;p&gt;Ok, ich verspreche nun immer seitlich reinzusprechen, aber auch nur von vorne.&lt;/p&gt;  &lt;h3&gt;Alles wieder gut&lt;/h3&gt;  &lt;p&gt;Nachdem mir nun bekannt es von welcher Stelle ich das Mikrofon zu beschallen habe ich nun auch den Qualitätsvergleich gemacht. Mir stehen nun 3 externe Mikrofone zu Verfügung.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.amazon.de/Microsoft-LifeCam-VX-7000-original-Handelsverpackung/dp/B000TSNUN2" target="_blank"&gt;Microsoft WebCam LifeCam VX-7000&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.de/Logitech-Premium-Notebook-Headset-Analog-Headset/dp/B000GUA7K2" target="_blank"&gt;Logitech Premium Notebook Headset USB&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.de/Audio-Technica-AT2020-Mikrofon/dp/B000RE3E8O" target="_blank"&gt;Audio-Technica AT220&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Mit dem Headset war ich so zufrieden, es macht seinen Job war nicht teuer und für LiveMeetings und so hat es gereicht. War das gerade nicht greifbar wurde auf das Mikro der WebCam zurückgriefen (Messenger &amp;amp; Skype). Ich musste mich ja nicht hören.&lt;/p&gt;  &lt;p&gt;Zur Test Aufnahme habe ich also das Headset aufgezogen, und mich so vor das neue Mikro positioniert wie ich auch am Rechner arbeite und in Standard WebCam abstand bin. Dann habe ich die Pegel aller Mikrofone auf einen ähnlichen Stand gebracht um eine gleiche Lautstärke zu haben.&lt;/p&gt;  &lt;p&gt;Mit der Software &lt;a href="http://www.nch.com.au/mixpad/de/index.html" target="_blank"&gt;MixPad&lt;/a&gt; (Mehrspur Aufnahme) habe ich dann in einem Take alle drei Mikrofone im Kasten gehabt. Somit gibt es keine Betonungsunterschiede. &lt;/p&gt;  &lt;p&gt;Hier nun kleine Miniplayer zum abhören. Das Getöse im Hintergrund ist wohl die Dockingstation, kommt mir hier im Betrieb nicht SOO laut vor. Aber heute ist es hier auch was wärmer. Bis auf die Umwandlung in MP3 wurde die Aufnahme nicht nachbearbeitet.&lt;/p&gt;  &lt;h4&gt;Microsoft WebCam LifeCam VX 7000&lt;/h4&gt;  &lt;p&gt;&lt;object type="application/x-shockwave-flash" data="http://flash-mp3-player.net/medias/player_mp3_mini.swf" width="200" height="20"&gt;     &lt;param name="movie" value="http://flash-mp3-player.net/medias/player_mp3_mini.swf" /&gt;     &lt;param name="bgcolor" value="#bfbfbf" /&gt;     &lt;param name="FlashVars" value="mp3=http%3A//der-albert.com/images/der-albert_com/mp3/MSLifeCamVX7000.mp3&amp;amp;bgcolor=bfbfbf&amp;amp;loadingcolor=d3ff7a&amp;amp;buttoncolor=00003d&amp;amp;slidercolor=00002e" /&gt; &lt;/object&gt;&lt;/p&gt;  &lt;h4&gt;Logitech Premium Notebook Headset USB&lt;/h4&gt;  &lt;p&gt;&lt;object type="application/x-shockwave-flash" data="http://flash-mp3-player.net/medias/player_mp3_mini.swf" width="200" height="20"&gt;     &lt;param name="movie" value="http://flash-mp3-player.net/medias/player_mp3_mini.swf" /&gt;     &lt;param name="bgcolor" value="#bfbfbf" /&gt;     &lt;param name="FlashVars" value="mp3=http%3A//der-albert.com/images/der-albert_com/mp3/LogitechPremium.mp3&amp;amp;bgcolor=bfbfbf&amp;amp;loadingcolor=d3ff7a&amp;amp;buttoncolor=00003d&amp;amp;slidercolor=00002e" /&gt; &lt;/object&gt;&lt;/p&gt;  &lt;h4&gt;Audio-Technica AT2020&lt;/h4&gt;  &lt;p&gt;&lt;object type="application/x-shockwave-flash" data="http://flash-mp3-player.net/medias/player_mp3_mini.swf" width="200" height="20"&gt;     &lt;param name="movie" value="http://flash-mp3-player.net/medias/player_mp3_mini.swf" /&gt;     &lt;param name="bgcolor" value="#bfbfbf" /&gt;     &lt;param name="FlashVars" value="mp3=http%3A//der-albert.com/images/der-albert_com/mp3/AT2020.mp3&amp;amp;bgcolor=bfbfbf&amp;amp;loadingcolor=d3ff7a&amp;amp;buttoncolor=00003d&amp;amp;slidercolor=00002e" /&gt; &lt;/object&gt;&lt;/p&gt;  &lt;h4&gt;Und alle drei zusammen&lt;/h4&gt;  &lt;p&gt;&lt;object type="application/x-shockwave-flash" data="http://flash-mp3-player.net/medias/player_mp3_mini.swf" width="200" height="20"&gt;     &lt;param name="movie" value="http://flash-mp3-player.net/medias/player_mp3_mini.swf" /&gt;     &lt;param name="bgcolor" value="#bfbfbf" /&gt;     &lt;param name="FlashVars" value="mp3=http%3A//der-albert.com/images/der-albert_com/mp3/All.mp3&amp;amp;bgcolor=bfbfbf&amp;amp;loadingcolor=d3ff7a&amp;amp;buttoncolor=00003d&amp;amp;slidercolor=00002e" /&gt; &lt;/object&gt;&lt;/p&gt;  &lt;p&gt;Ein Urteil kann sich nun jeder selbst bilden, entäuscht bin ich jedenfalls nicht mehr. Zumal durch die Nierencharakteristik die Hintergrundgeräusche gut gefiltert werden.&lt;/p&gt;  &lt;p&gt;Für den XLR/USB Adapter braucht man keine Treiber (Windows7/Vista), auch bietet er auch noch einen Kopfhörer-Anschluss an den der Rechner die Soundausgabe schicken kann.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c606d5e8-662b-469f-869b-b87f024b3471" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Audio-Technica" rel="tag"&gt;Audio-Technica&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Podcast" rel="tag"&gt;Podcast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Logitech" rel="tag"&gt;Logitech&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Musicstore" rel="tag"&gt;Musicstore&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mikrofon" rel="tag"&gt;Mikrofon&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/226.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=gwDGhvDaRM4:XDOTG9GvHGM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=gwDGhvDaRM4:XDOTG9GvHGM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=gwDGhvDaRM4:XDOTG9GvHGM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=gwDGhvDaRM4:XDOTG9GvHGM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=gwDGhvDaRM4:XDOTG9GvHGM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=gwDGhvDaRM4:XDOTG9GvHGM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=gwDGhvDaRM4:XDOTG9GvHGM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/gwDGhvDaRM4" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/08/10/verbesserte-audiotechnik-bei-mir-im-hause.aspx</guid>
            <pubDate>Tue, 10 Aug 2010 20:55:32 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/08/10/verbesserte-audiotechnik-bei-mir-im-hause.aspx#feedback</comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/226.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/226.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/08/10/verbesserte-audiotechnik-bei-mir-im-hause.aspx</feedburner:origLink></item>
        <item>
            <title>.resharper-Dateien&amp;ndash;einchecken oder nicht?</title>
            <category>.NET</category>
            <category>Community</category>
            <category>Screencast</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/3lbwC7TqHGg/resharper-dateienndasheinchecken-oder-nicht.aspx</link>
            <description>&lt;p&gt;Mir ist aufgefallen das in vielen Open-Source Projekte die .resharper Dateien nicht ins Quelltext-Repository aufgenommen werden. Ich bin der Meinung dies ist nicht gut, und hat auch seinen sinn. Dazu habe ich mal kurz – 3:30m - einen Screencast produziert.&lt;/p&gt;  &lt;p&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wizW0Vaez7U&amp;amp;hl=de_DE&amp;amp;fs=1?color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;hd=1" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/wizW0Vaez7U&amp;amp;hl=de_DE&amp;amp;fs=1?color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385" /&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;Nunja, auch um mal Camtasia und mein neues Mikrofon mal zu testen &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/f6443fb80b3d_D6B8/wlEmoticon-winkingsmile_2.png" /&gt; Es gibt noch Potential zur Verbesserung, wie ich gemerkt habe. Aber es ist ein Anfang.&lt;/p&gt;  &lt;p&gt;Also, *.resharper Dateien mit  ins Repository aufnehmen, aber nicht die *.user (.resharper.user) Dateien, &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:63a63893-edd6-4a25-9726-1f1e1c369dc4" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ReSharper" rel="tag"&gt;ReSharper&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/225.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3lbwC7TqHGg:KrYneDn9Zwg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3lbwC7TqHGg:KrYneDn9Zwg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3lbwC7TqHGg:KrYneDn9Zwg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=3lbwC7TqHGg:KrYneDn9Zwg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3lbwC7TqHGg:KrYneDn9Zwg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3lbwC7TqHGg:KrYneDn9Zwg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=3lbwC7TqHGg:KrYneDn9Zwg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/3lbwC7TqHGg" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/08/10/resharper-dateienndasheinchecken-oder-nicht.aspx</guid>
            <pubDate>Tue, 10 Aug 2010 13:30:09 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/08/10/resharper-dateienndasheinchecken-oder-nicht.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/225.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/225.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/08/10/resharper-dateienndasheinchecken-oder-nicht.aspx</feedburner:origLink></item>
        <item>
            <title>ASP.NET MVC Action und die Database Connection, nun richtig</title>
            <category>.NET</category>
            <category>ASP.NET</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/tJHWNVJrVGA/asp-net-mvc-action-und-die-database-connection-nun-richtig.aspx</link>
            <description>&lt;p&gt;Bei ASP.NET MVC ist es Best Practice wenn man für den Datenbank Zugriff eine Transaction beim Start der Action öffnet und zum Ende wieder schließt.&lt;/p&gt;  &lt;p&gt;Ich habe die eine oder andere “Lösung” dazu gesehen, die sich jedoch meist in den Request-LifeCycle der Application einklinken und somit “irgendwie” außerhalb der MVC Konzeptes sind und somit auch beim Zugriff auf andere Seiten oder gar statischen Resourcen auch Connection/Transactionen öffnen. Auch ich nutzte dies … aber nun nicht mehr.&lt;/p&gt;  &lt;p&gt;Die beste Lösung (jedenfalls aus meiner Sicht) ist ein eigener &lt;strong&gt;IActionInvoker&lt;/strong&gt; der diese Aufgabe übernimm,. damit ist auch exakt den Gültigkeitsbereich der Transaktion definiert.    &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:2b9f6bba-8318-4875-8b5e-8a107134d7d2" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp"&gt;public interface IActionInvoker
{
    bool InvokeAction(ControllerContext controllerContext, string actionName);
}

&lt;/pre&gt;&lt;/div&gt;
In ASP.NET MVC ist es ein ActionInvoker der dafür sorgt dass die &lt;strong&gt;Action&lt;/strong&gt; und das &lt;strong&gt;ActionResult&lt;/strong&gt; so verarbeitet werden wie wir es vom Framework kennen. Die Standardimplementierung ist der &lt;strong&gt;ControllerActionInvoker&lt;/strong&gt;. Der Controller selbst übernimmt die Erstellung  des &lt;strong&gt;IActionInvoker&lt;/strong&gt; und zwar über die Methode &lt;strong&gt;CreateActionInvoker(). &lt;/strong&gt;Diese ist virtuell und kann somit angepasst werden. 

&lt;p&gt;
  &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:0516658e-8896-4364-a4bc-054ea599b06d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp"&gt;    protected virtual IActionInvoker CreateActionInvoker()
    {
      return new ControllerActionInvoker();
    }
&lt;/pre&gt;&lt;/div&gt;
Somit zu meiner Lösung. Ich habe einen IActionInvoker implementiert, der dafür sorge trägt dass der Aufruf der Action in in einer Datenbank-Transaction abläuft. 

&lt;p&gt;
  &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:51e8a58c-9394-4b3f-bef6-ae612a18191b" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp"&gt;public class TransactionalActionInvoker : IActionInvoker
{
    private readonly IDatabaseTransaction transaction;
    private readonly IActionInvoker baseActionInvoker;

    public TransactionalActionInvoker(IDatabaseTransaction transaction,
                                        IActionInvoker baseActionInvoker)
    {
        this.transaction = transaction;
        this.baseActionInvoker = baseActionInvoker;
    }

    public bool InvokeAction(ControllerContext controllerContext, string actionName)
    {
        bool result;
        try
        {
            transaction.BeginTransaction();
            result = baseActionInvoker.InvokeAction(controllerContext, actionName);
        }
        catch (Exception)
        {
            transaction.ExceptionWhileTransaction();
            throw;
        }
        finally
        {
            transaction.EndTransaction();
        }
        return result;
    }
}
&lt;/pre&gt;&lt;/div&gt;
Als Abhängigkeiten drücke ich dem TransactionActionInvoker den eigentlichen &lt;strong&gt;IActionInvoker &lt;/strong&gt;rein sowie eine IDatabaseTransaction zum Management des Transaktion. Ich gehe diesen Weg und leite nicht von &lt;strong&gt;ControllerActionInvoker ab &lt;/strong&gt;damit beliebige Implementierungen von vorhandenen ActionInvokern verwendet werden können. 

&lt;p&gt;&lt;strong&gt;IDatabaseConnection&lt;/strong&gt; ist ein eigenes Interface, darüber kann man die Transaction öffnen, und wieder schließen sowie mitteilen ob es im Ablauf der Action ein Problem gab.  Da die Implementierung Datenbankabhängig ist gehe ich hier nicht Groß darauf ein, nur der Hinweis das bei &lt;strong&gt;EndTransaction()&lt;/strong&gt; bei einem Problem die Transaction mit einem &lt;strong&gt;Rollback()&lt;/strong&gt; beendet wird sonst mit einem &lt;strong&gt;Commit(). &lt;/strong&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:fe3115cb-fdf5-470c-9c2e-b965dd84ad35" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp"&gt;public interface IDatabaseTransaction 
{
    void BeginTransaction();
    void EndTransaction();
    void ExceptionWhileTransaction();
}
&lt;/pre&gt;&lt;/div&gt;
In meinen Anwendungen habe ich immer einen Basis-Controller von dem ich alle meine Controller ableite. Ich hoffe Du machst dies auch so! Somit ist es sehr enfach die Erzeugung des &lt;strong&gt;IActionInvoker&lt;/strong&gt; auszutauschen und den eigenen zu verwenden. 

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:cdcda54c-0452-4207-8e23-8da40a4c16df" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp"&gt;public abstract class TransactionController : Controller
{
    public IDatabaseTransaction Transaction { get; set; }

    protected override IActionInvoker CreateActionInvoker()
    {
        return new TransactionalActionInvoker(Transaction,base.CreateActionInvoker());
    }

    protected override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
        Transaction.ExceptionWhileTransaction();
    }
}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Nicht viel besonderes, es wird eine Instanz vom &lt;strong&gt;TransactionActionInvoker&lt;/strong&gt; erzeugt und ihr die &lt;strong&gt;IDatabaseTransaction&lt;/strong&gt; sowie der ursprüngliche &lt;strong&gt;IActionInvoker &lt;/strong&gt;übergeben&lt;strong&gt;.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Wichtig ist es &lt;strong&gt;OnException()&lt;/strong&gt; zu überschreiben um der &lt;strong&gt;IDatabaseTransaction&lt;/strong&gt; mitzuteilen das eine Exception innerhalb der Action aufgetreten ist.&lt;/p&gt;

&lt;p&gt;Die IDatabaseTransaction muss natürlich auch irgendwie in den Controller kommen, dies wird in diesem Fall vom IoC-Container gemacht und zwar per Property-Injection. Ich habe hier der Property-Injection gegenüber der Konstruktor Injection den Vorzug gegeben damit ich die die Abhängigkeit nicht bei jedem zu implementierenden Controller “manuell” bedienen muss. Dies kann man jedoch machen wie man möchte, ein Lookup über den Container oder IServiceLocator wäre auch möglich.&lt;/p&gt;

&lt;p&gt;Den Lebenszyklus von &lt;strong&gt;IDatabaseTransaction&lt;/strong&gt; habe ich über den IoC-Container auf pro &lt;strong&gt;HttpRequest&lt;/strong&gt; festgelegt. Dies ist erforderlich, auch ist es erforderlich dass die eigenen Datenbank Session/Connection auf pro HttpRequest festgelegt ist. Es muss sichergestellt werden dass alle Datenbank Aufrufe innerhalb der Action mit derselben Connection bzw. Session aufgerufen werden. &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8d1c2fcf-d8e8-4af1-b478-5a0828865a89" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET+MVC" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Database" rel="tag"&gt;Database&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Transaction" rel="tag"&gt;Transaction&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Action" rel="tag"&gt;Action&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IActionInvoker" rel="tag"&gt;IActionInvoker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ControllerActionInvoker" rel="tag"&gt;ControllerActionInvoker&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Controller" rel="tag"&gt;Controller&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/223.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=tJHWNVJrVGA:lFEz_HjCts8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=tJHWNVJrVGA:lFEz_HjCts8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=tJHWNVJrVGA:lFEz_HjCts8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=tJHWNVJrVGA:lFEz_HjCts8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=tJHWNVJrVGA:lFEz_HjCts8:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=tJHWNVJrVGA:lFEz_HjCts8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=tJHWNVJrVGA:lFEz_HjCts8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/tJHWNVJrVGA" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/08/07/asp-net-mvc-action-und-die-database-connection-nun-richtig.aspx</guid>
            <pubDate>Sat, 07 Aug 2010 12:08:35 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/08/07/asp-net-mvc-action-und-die-database-connection-nun-richtig.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/223.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/223.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/08/07/asp-net-mvc-action-und-die-database-connection-nun-richtig.aspx</feedburner:origLink></item>
        <item>
            <title>Warum Management der Abh&amp;auml;ngigkeiten von Komponenten? NU!</title>
            <category>.NET</category>
            <category>Community</category>
            <category>Tools</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/F9zJ1nRIN9o/warum-management-der-abhaumlngigkeiten-von-komponenten-nu.aspx</link>
            <description>&lt;h3&gt;Seit einiger Zeit nervt mich folgendes. &lt;/h3&gt;  &lt;p&gt;Ich arbeite an verschiedenen Projekten, die meisten nutzen auch Komponenten die nicht von mir stammen. Diese wären z.B. &lt;a href="http://xunit.codeplex.com/" target="_blank"&gt;xUnit.net&lt;/a&gt;, Rhino.Mocks, Automapper, StructureMap usw. usf.&lt;/p&gt;  &lt;p&gt;Des weiteren bin ich ein Freund davon alles was man für das Projekt braucht auch unter der Versionkontrolle zu haben um es nach dem ausschecken&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;in Visual Studio öffnen, &lt;/li&gt;    &lt;li&gt;es kompilieren, &lt;/li&gt;    &lt;li&gt;auf dem Build-Server starten, &lt;/li&gt;    &lt;li&gt;Versionspezifische abhängigkeiten habe, &lt;/li&gt;    &lt;li&gt;usw &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;ohne dass es dabei zu Problemen kommt und man sofort damit arbeiten kann. Und man nicht schauen muss wo nun noch welche Assembly in welcher Version referenziert wird. Wenn mehrere an dem Projekt arbeiten potenzieren sich die Probleme weil jeder seine Assemblies woanders liegen hat. Somit, alles was geht mit in die Versionskontrolle. Dies sollte jeder so handhaben.&lt;/p&gt;  &lt;h3&gt;Wo liegt denn jetzt das Problem?&lt;/h3&gt;  &lt;p&gt;Ist doch alles schön und funktioniert. Nunja, fast, solange die externen komponenten nicht angefasst werden, nicht aktualisiert werden müssen sowie es nur ein Projekt ist. Nun sind auch noch eigenen Komponenten dabei, die zum Teil noch Rege in der Entwicklung sind und öfters aktualisiert werden.&lt;/p&gt;  &lt;p&gt;Die Projekte aktuell zu halten, die Komponenten an den richtigen Platz kopieren ist eine nervige und auch für Fehler anfällige Arbeit.&lt;/p&gt;  &lt;p&gt;Es wäre doch schön wenn man dies schnell, einfach und mehr oder minder automatisiert machen könnte.&lt;/p&gt;  &lt;h3&gt;Wir haben 2010, da muss es doch was geben?&lt;/h3&gt;  &lt;p&gt;Habe mich somit auf den Weg gemacht was zu suchen, was vielleicht eine Art Standard in der .NET Welt ist, Auch soll bei Open Source Projekten der Entwickler der mal kurz reinschnuppern will nicht in weitere Abhänigkeiten gedrängt werden, oder andere Teammitglieder müssen es nicht unbedingt verwenden um das Projekt zu bauen oder daran zu entwickeln.&lt;/p&gt;  &lt;p&gt;Irgendwie nichts gefunden was meine Erwartungen und Bedürfnisse erfüllte. Als Software-Entwickler habe ich dies auf die lange MMMM-Liste gestellte (müsste man mal machen).&lt;/p&gt;  &lt;h3&gt;Ruby hat das Problem schon gelöst&lt;/h3&gt;  &lt;p&gt;Schaut man in die Ruby-Welt so gibt es da schon gar ewig &lt;strong&gt;RubyGems&lt;/strong&gt;. Kleine Komponenten die man sich sehr einfach lokal auf den Rechner kopieren kann und immer aktuell halten kann.&lt;/p&gt;  &lt;p&gt;Dies haben sich Dru Seller, Chris Patterson und ein paar andere auch gedacht und entwickelten &lt;strong&gt;NU&lt;/strong&gt;. Ein kleines Tools welches auf &lt;strong&gt;RubyGems&lt;/strong&gt; aufsetzt und somit auf bewährten. Dies um ein paar Features ergänzt die für “uns” wohl interssant sind. &lt;/p&gt;  &lt;h3&gt;NU betritt die Bühne&lt;/h3&gt;  &lt;p&gt;NU existierst nun schon eine ganze Weile aber seit 2-3 Wochen beginnt das ganze an Fahrt aufzunehmen, Nach der Installation von Ruby, Gems und Nu (ist total einfach) kann man schon loslegen. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:5ebd2d2b-f1fc-4a81-b8b0-44db4509943d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: plain"&gt;nu install nhibernate&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Und kurze später hat man in dem aktuellen Ordner einen LIB Ordner (einstellbar). Indem sich folgendes befindet.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;castle.core &lt;/li&gt;

  &lt;li&gt;castle.dynamicproxy2 &lt;/li&gt;

  &lt;li&gt;log4net &lt;/li&gt;

  &lt;li&gt;nhibernate &lt;/li&gt;

  &lt;li&gt;nlog &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Es wurde NHibernate und dessen Abhängigkeiten installiert. Zuerst in das lokale Gem-Repository und dann in das Projekt. Und von da aus natürlich in die Versionverwaltung.&lt;/p&gt;

&lt;p&gt;Auf Tekpub befindet sich ein kostenloses Video dazu, dies zeigt in knapp 3 Minuten was NU ist und kann.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://tekpub.com/view/dotnet-oss/nu"&gt;http://tekpub.com/view/dotnet-oss/nu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eigene Gems zu erstellen ist auch sehr einfach&lt;/p&gt;

&lt;p&gt;Dazu einfach ein gemspec erstellen und über gem bauen&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:a6ce1289-993f-4e07-b911-bebcbd817d06" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: plain"&gt;version = File.read(File.expand_path("../VERSION",__FILE__)).strip  

Gem::Specification.new do |spec|
  spec.name        = 'fluentmetadata'
  spec.version     = version
  
  spec.has_rdoc = false
  spec.files = Dir["lib/FluentMetadata.*.dll", "lib/Readme.txt"]
  spec.files.reject! { |fn| fn.include? "Specs.dll"  }
  spec.description = 'FluentMetadata is describing Object-Metadata on one place, and using it from ASP.NET MVC 2 &amp;amp; 3, FluentNHibernate and EntityFramework 4 CodeFirst with EF Feature CTP 4'
  spec.summary     = 'FluentMetadata - Metadata on one place for .NET'
  
  spec.author			 = 'Albert Weinert'
  spec.email             = 'info@der-albert.com'
  spec.homepage          = 'http://wiki.github.com/DerAlbertCom/FluentMetadata/'
end&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Das bauen eines Gems ist sehr einfach &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:655beba9-0182-430e-9d28-d4f39d502090" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: csharp"&gt;gem build fluentmetada
gem install fluentmetada&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Dies natürlich am besten direkt im Build-Skript machen und man braucht sich nicht mehr zu kümmern. &lt;/p&gt;

&lt;p&gt;Und schon hat man das Gem im lokalen Repository und fertig. Mit “nu install” kann man dies nun in andere Projekte übernehmen und aktualisieren (am besten wieder über ein Skript oder Batch). Und braucht sich nicht mehr darum zu kümmen wo der kram nun herkommt.&lt;/p&gt;

&lt;p&gt;Aktuell kann man die dann noch per “gem push” auf Rubygems.org pushen und dort sieht es dann so aus.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://rubygems.org/gems/fluentmetadata"&gt;http://rubygems.org/gems/fluentmetadata&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ein Buildscript (mit psake) welches das Gem immer wieder erzeugt kann so aussehen&lt;/p&gt;

&lt;p&gt;&lt;a href="http://github.com/DerAlbertCom/FluentMetadata/blob/master/default.ps1"&gt;http://github.com/DerAlbertCom/FluentMetadata/blob/master/default.ps1&lt;/a&gt;&lt;/p&gt;

&lt;h3 /&gt;

&lt;h3&gt;Zukunft&lt;/h3&gt;

&lt;p&gt;Natürlich bringt so ein System nur was wenn es viele, wenn nicht gar alle verwenden. Dann hat man ein schönes Eco-System und viel weniger Probleme und arbeit. Also nutzt es.&lt;/p&gt;

&lt;p&gt;Natürlich ist Rubygems.org auf Dauer keine Lösung für uns, und ein eigener Platz für .net gems wäre fein, da wird schon dran gearbeitet und wird nicht mehr so lange auf sich warten lassen.&lt;/p&gt;

&lt;p&gt;Aktuell findet man unter &lt;a href="http://nu.wikispot.org/"&gt;http://nu.wikispot.org/&lt;/a&gt; alle wichtigen Informationen und Links.&lt;/p&gt;

&lt;p&gt;NU selbst ist weiterhin in Entwicklung in der Mailingliste diskutiert man gerade um es um weitere .net Specifika zu erweitern, mir reicht erstmal die jetzige Funktionalität es fehlen nur weitere Gems für .NET. Also macht mit. 
  &lt;br /&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c38c264d-c2e1-4939-a3bb-6b9277d377ac" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Rubygems" rel="tag"&gt;Rubygems&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nu" rel="tag"&gt;Nu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Package" rel="tag"&gt;Package&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Managment" rel="tag"&gt;Managment&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/221.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=F9zJ1nRIN9o:4blVjV3wiEY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=F9zJ1nRIN9o:4blVjV3wiEY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=F9zJ1nRIN9o:4blVjV3wiEY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=F9zJ1nRIN9o:4blVjV3wiEY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=F9zJ1nRIN9o:4blVjV3wiEY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=F9zJ1nRIN9o:4blVjV3wiEY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=F9zJ1nRIN9o:4blVjV3wiEY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/F9zJ1nRIN9o" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/08/04/warum-management-der-abhaumlngigkeiten-von-komponenten-nu.aspx</guid>
            <pubDate>Wed, 04 Aug 2010 13:31:54 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/08/04/warum-management-der-abhaumlngigkeiten-von-komponenten-nu.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/221.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/221.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/08/04/warum-management-der-abhaumlngigkeiten-von-komponenten-nu.aspx</feedburner:origLink></item>
        <item>
            <title>Ein SubText Blog mit dotnet-kicks.de Button</title>
            <category>.NET</category>
            <category>ASP.NET</category>
            <category>Community</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/Xo8ZD-O1Jnw/ein-subtext-blog-mit-dotnet-kicks-de-button.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://dotnet-kicks.de/" target="_blank"&gt;dotnet-kicks.de&lt;/a&gt; erfreut sich in deutschen .NET Welt ja doch einiger Beliebtheit, also bietet es sich an dies auch im eigenen Blog zu unterstützen. Ich habe nun ein Control gebaut mit dem es ganz einfach geht.&lt;/p&gt;  &lt;p&gt;Als erstes erstellt man in dem &lt;strong&gt;Controls&lt;/strong&gt;-Ordner seines &lt;strong&gt;Skins&lt;/strong&gt; die Datei &lt;strong&gt;KickIt.ascx&lt;/strong&gt;, und füllt diese mit folgendem Inhalt.    &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:b940631c-8fac-4f3e-8357-56a3bcaaf61d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: xml"&gt;&amp;lt;%@ Control Language="C#" ClassName="KickItDeControl"  
    Inherits="Subtext.Web.UI.Controls.CurrentEntryControl"%&amp;gt;
&amp;lt;% 
	string urlUrl = UrlEncode(Entry.FullyQualifiedUrl );
	string urlTitle = UrlEncode(HttpUtility.HtmlDecode(Entry.Title));
%&amp;gt;
&amp;lt;a href="http://dotnet-kicks.de/kick/?url=&amp;lt;%=urlUrl%&amp;gt;&amp;amp;amp;title=&amp;lt;%=urlTitle%&amp;gt;"&amp;gt;
&amp;lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=&amp;lt;%=urlUrl%&amp;gt;" 
     border="0" alt="kick it on dotnet-kicks.de" /&amp;gt;&amp;lt;/a&amp;gt;&lt;/pre&gt;&lt;/div&gt;

  &lt;br /&gt;Dies ist ein einfaches Control welches den dotnet-kicks.de-Code erzeugt. Nun muss man das Control noch dort eintragen wo man es Anzeigen lassen (üblicherweise &lt;strong&gt;Day.ascx&lt;/strong&gt; und&lt;strong&gt;ViewPost.ascx&lt;/strong&gt;). Zuerst muss das UserControll wie in ASP.NET WebForms üblich registriert werden, dann kann es verwendet werden.

  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:a55f6233-4003-46fd-8d76-31aede64d70c" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: xml"&gt;&amp;lt;%@ Register TagPrefix="awn" TagName="KickItDe" Src="KickItDe.ascx" %&amp;gt;

&amp;lt;!-- und nun an die Stelle wo es angezeigt werden soll --&amp;gt;

&amp;lt;awn:KickItDe runat="server"/&amp;gt;&lt;/pre&gt;&lt;/div&gt;




&lt;p&gt;Von nun wird auf jeder geänderten Seite der dotnet-Kicks.de Button angezeigt.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a7103388-e6d5-443a-be0c-b53b20792d7c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SubText" rel="tag"&gt;SubText&lt;/a&gt;,&lt;a href="http://technorati.com/tags/dotnet-kicks" rel="tag"&gt;dotnet-kicks&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/219.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=Xo8ZD-O1Jnw:wN1ZwtUjbKM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=Xo8ZD-O1Jnw:wN1ZwtUjbKM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=Xo8ZD-O1Jnw:wN1ZwtUjbKM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=Xo8ZD-O1Jnw:wN1ZwtUjbKM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=Xo8ZD-O1Jnw:wN1ZwtUjbKM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=Xo8ZD-O1Jnw:wN1ZwtUjbKM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=Xo8ZD-O1Jnw:wN1ZwtUjbKM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/Xo8ZD-O1Jnw" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/08/03/ein-subtext-blog-mit-dotnet-kicks-de-button.aspx</guid>
            <pubDate>Tue, 03 Aug 2010 05:00:00 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/08/03/ein-subtext-blog-mit-dotnet-kicks-de-button.aspx#feedback</comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/219.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/219.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/08/03/ein-subtext-blog-mit-dotnet-kicks-de-button.aspx</feedburner:origLink></item>
        <item>
            <title>Ein SubText Blog mit Flattr-Button</title>
            <category>.NET</category>
            <category>ASP.NET</category>
            <category>Tools</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/8e5XuId9k5o/ein-subtext-blog-mit-flattr-button.aspx</link>
            <description>&lt;p&gt;Nutzt man &lt;a href="http://subtextproject.com/" target="_blank"&gt;SubText&lt;/a&gt; für das eigenen Blog und möchte man &lt;a href="https://flattr.com/" target="_blank"&gt;Flattr&lt;/a&gt; damit verwenden, so kann man dies auf verschiedenen Weise machen. Hier nun wie ich es gemacht habe.&lt;/p&gt;  &lt;p&gt;Als erstes erstellt man in dem &lt;strong&gt;Controls&lt;/strong&gt;-Ordner seines &lt;strong&gt;Skins&lt;/strong&gt; die Datei &lt;strong&gt;Flattr.ascx&lt;/strong&gt;, und füllt diese mit folgendem Inhalt &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:8be78612-de30-4197-ae79-3db595734baa" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: xml"&gt;&amp;lt;%@ Control Language="C#" ClassName="FlattrControl" 
    Inherits="Subtext.Web.UI.Controls.CurrentEntryControl"%&amp;gt;
&amp;lt;script runat="server"&amp;gt;
	public string FlattrId {get;set;}	
&amp;lt;/script&amp;gt;
&amp;lt;%
	string htmlTitle = HttpUtility.HtmlDecode(Entry.Title).Replace("'","\"");
%&amp;gt;
&amp;lt;script type="text/javascript"&amp;gt;
var flattr_btn = 'compact';
var flattr_uid = '&amp;lt;%=FlattrId%&amp;gt;';
var flattr_tle = '&amp;lt;%=htmlTitle%&amp;gt;';
var flattr_dsc = '&amp;lt;%=htmlTitle%&amp;gt;';
var flattr_cat = 'text';
var flattr_lng = 'de_DE';
var flattr_url = '&amp;lt;%=Entry.FullyQualifiedUrl%&amp;gt;';
&amp;lt;/script&amp;gt;
&amp;lt;script src="http://api.flattr.com/button/load.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Dies ist ein einfaches Control welches den Flattr-Code erzeugt. Nun muss man das Control noch dort eintragen wo man es Anzeigen lassen (üblicherweise &lt;strong&gt;Day.ascx&lt;/strong&gt; und &lt;strong&gt;ViewPost.ascx&lt;/strong&gt;). Zuerst muss das UserControll wie in ASP.NET WebForms üblich registriert werden, dann kann es verwendet werden. &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:b9d7505e-dbfd-41e5-96ae-30bb7e768902" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: xml"&gt;&amp;lt;%@ Register TagPrefix="awn" TagName="Flattr" Src="Flattr.ascx" %&amp;gt;

&amp;lt;!-- und dann dort wie man es anzeigen lassen will, als FlattrID muss man die 
 eigene Nummer eintragen --&amp;gt;

&amp;lt;awn:Flattr FlattrId="YourID" runat="server"/&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Von nun wird auf jeder geänderten Seite ein Flattr-Button erstellt.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ea9a7bb5-5082-4602-90a8-3af34e284734" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Flattr" rel="tag"&gt;Flattr&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SubText" rel="tag"&gt;SubText&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/218.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=8e5XuId9k5o:CNy710G52fo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=8e5XuId9k5o:CNy710G52fo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=8e5XuId9k5o:CNy710G52fo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=8e5XuId9k5o:CNy710G52fo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=8e5XuId9k5o:CNy710G52fo:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=8e5XuId9k5o:CNy710G52fo:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=8e5XuId9k5o:CNy710G52fo:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/8e5XuId9k5o" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/08/02/ein-subtext-blog-mit-flattr-button.aspx</guid>
            <pubDate>Mon, 02 Aug 2010 17:08:33 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/08/02/ein-subtext-blog-mit-flattr-button.aspx#feedback</comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/218.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/218.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/08/02/ein-subtext-blog-mit-flattr-button.aspx</feedburner:origLink></item>
        <item>
            <title>Globale Namespaces f&amp;uuml;r die Razor-Syntax und den ASP.NET WebPages</title>
            <category>ASP.NET</category>
            <category>Tools</category>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/3nnQqOPZ5C0/globale-namespaces-fuer-die-razor-syntax-und-den-asp-net-webpages.aspx</link>
            <description>&lt;p&gt;Wenn man bei WebForms nicht auf jeder Page oder jedem UserControl die notwendigen Namespace importieren möchte. So hat man diese in der Web.config hinterlegt.&lt;/p&gt;  &lt;p&gt;Dies funktioniert wunderbar bei WebForms und der WebForm-ViewEngine unter ASP.NET MVC.&lt;/p&gt;  &lt;p&gt;Mit den neuen WebPages (.cshtml) und der Razor-Syntax kann man mit&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:17cc020f-3e84-4d4d-9e63-defa1267402f" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: c#"&gt;
@using Regularly.Models
@using Regulary.Areas.Administration.Models
&lt;/pre&gt;&lt;/div&gt;

&lt;br /&gt;

&lt;p&gt;auch entsprechende Namespaces der Template bekannt machen, Jedoch funktioniert der Weg über die web.config nicht (ob sich dies ändert steht wohl nicht nicht fest).&lt;/p&gt;

&lt;p&gt;Aber man einen anderen Weg gehen, dazu muss man beim Application-Start über die Klasse &lt;strong&gt;CodeGeneratorSettings &lt;/strong&gt;die Namespaces hinzufügen.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:CEFBC1C6-8147-4644-B481-B7F7D67D6AA5:8272208c-7ea1-42c2-a369-dc41a56cf51d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: c#"&gt;CodeGeneratorSettings.AddGlobalImport("Regularly.Models");
CodeGeneratorSettings.AddGlobalImport("Regularly.Extensions");

&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Diese Klasse befindet sich im Namespace &lt;strong&gt;Microsoft.WebPages.Compilation&lt;/strong&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7985d0a9-cdb0-4661-a9f3-911b66cf524b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET+MVC" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MVC3" rel="tag"&gt;MVC3&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Razor" rel="tag"&gt;Razor&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CSHTML" rel="tag"&gt;CSHTML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WebForms" rel="tag"&gt;WebForms&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/215.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3nnQqOPZ5C0:L6bi6M22iHE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3nnQqOPZ5C0:L6bi6M22iHE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3nnQqOPZ5C0:L6bi6M22iHE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=3nnQqOPZ5C0:L6bi6M22iHE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3nnQqOPZ5C0:L6bi6M22iHE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=3nnQqOPZ5C0:L6bi6M22iHE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=3nnQqOPZ5C0:L6bi6M22iHE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/3nnQqOPZ5C0" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/07/28/globale-namespaces-fuer-die-razor-syntax-und-den-asp-net-webpages.aspx</guid>
            <pubDate>Wed, 28 Jul 2010 00:33:29 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/07/28/globale-namespaces-fuer-die-razor-syntax-und-den-asp-net-webpages.aspx#feedback</comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/215.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/215.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/07/28/globale-namespaces-fuer-die-razor-syntax-und-den-asp-net-webpages.aspx</feedburner:origLink></item>
        <item>
            <title>Neue Informationen hier im Blog</title>
            <category>.NET</category>
            <category>Community</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/H8CM931jT0k/neue-informationen-hier-im-blog.aspx</link>
            <description>&lt;p&gt;Da ich hier und da Anfragen nach Vorträgen bekomme habe ich hier im Blog nun angefangen die Vorträge die ich halte zu hinterlegen. Diese Liste wird mit der Zeit erweitert.&lt;/p&gt;  &lt;p&gt;Firmen und User Groups können bei mir für einen Vortrag vor Ort anfragen.&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a href="http://der-albert.com/archive/2010/07/20/vortraege.aspx" target="_blank"&gt;Meine Vorträge&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://der-albert.com/archive/2010/07/21/termine.aspx" target="_blank"&gt;Meine Termine&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b4f9c78a-f362-49be-8956-54b9dc93d4d6" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Votr%c3%a4ge" rel="tag"&gt;Voträge&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Talks" rel="tag"&gt;Talks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Usergroup" rel="tag"&gt;Usergroup&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Firmen" rel="tag"&gt;Firmen&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/213.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=H8CM931jT0k:jcR0XnWdzgY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=H8CM931jT0k:jcR0XnWdzgY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=H8CM931jT0k:jcR0XnWdzgY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=H8CM931jT0k:jcR0XnWdzgY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=H8CM931jT0k:jcR0XnWdzgY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=H8CM931jT0k:jcR0XnWdzgY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=H8CM931jT0k:jcR0XnWdzgY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/H8CM931jT0k" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/07/21/neue-informationen-hier-im-blog.aspx</guid>
            <pubDate>Tue, 20 Jul 2010 22:36:07 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/07/21/neue-informationen-hier-im-blog.aspx#feedback</comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/213.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/213.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/07/21/neue-informationen-hier-im-blog.aspx</feedburner:origLink></item>
        <item>
            <title>Eigene Namensregeln in ReSharper f&amp;uuml;r xUnit.NET basierte Tests</title>
            <category>Unit Test</category>
            <category>.NET</category>
            <category>Community</category>
            <category>Tools</category>
            <link>http://feedproxy.google.com/~r/der-albert-com/~3/735wYMr33S4/eigene-namensregeln-in-resharper-fur-xunit-net-basierte-tests.aspx</link>
            <description>&lt;p&gt;Ich habe heute ein &lt;a href="http://github.com/DerAlbertCom/xUnit.ReSharper.Naming" target="_blank"&gt;PlugIn für ReSharper veröffentlicht&lt;/a&gt;, mit dem möglich ist spezielle Naming-Styles in ReSharper für &lt;a href="http://xunit.codeplex.com/" target="_blank"&gt;xUnit.NET&lt;/a&gt; und xUnitBDDExtensions basierte Unit Test festzulegen. &lt;/p&gt;  &lt;p&gt;Im &lt;em&gt;readme.txt&lt;/em&gt; ist erklärt wie man es installiert. Hier ein paar Screenshots zur Verwendung im ReSharper.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/EigeneNamensregelninReS.NETbasierteTests_C9D4/ReSharper-Options-NamingStyle_1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="ReSharper-Options-NamingStyle" border="0" alt="ReSharper-Options-NamingStyle" src="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/EigeneNamensregelninReS.NETbasierteTests_C9D4/ReSharper-Options-NamingStyle_thumb_1.png" width="480" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dort nun Advanced Settings anklicken.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/EigeneNamensregelninReS.NETbasierteTests_C9D4/ReSharper-Options-Advande-Naming-Settings_1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="ReSharper-Options-Advande-Naming-Settings" border="0" alt="ReSharper-Options-Advande-Naming-Settings" src="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/EigeneNamensregelninReS.NETbasierteTests_C9D4/ReSharper-Options-Advande-Naming-Settings_thumb_1.png" width="472" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nun eine eigene Naming Rule hinzufügen. z.B. BDD Style und folgendes &lt;/p&gt;  &lt;p&gt;auswählen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/EigeneNamensregelninReS.NETbasierteTests_C9D4/ReSharper-Options-NamingStyle-BDD_1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="ReSharper-Options-NamingStyle-BDD" border="0" alt="ReSharper-Options-NamingStyle-BDD" src="http://der-albert.com/images/der-albert_com/WindowsLiveWriter/EigeneNamensregelninReS.NETbasierteTests_C9D4/ReSharper-Options-NamingStyle-BDD_thumb_1.png" width="480" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;Das war’s dann schon. Viel Spaß.&lt;/p&gt;  &lt;p&gt;Hier geht’s zur &lt;a href="http://github.com/DerAlbertCom/xUnit.ReSharper.Naming" target="_blank"&gt;Projekt Seite auf GitHub&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8435cba2-b3c8-4575-a49b-49a80e3efb37" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/xUnit" rel="tag"&gt;xUnit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/xUnitBDDExtensions" rel="tag"&gt;xUnitBDDExtensions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ReSharper" rel="tag"&gt;ReSharper&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BDD" rel="tag"&gt;BDD&lt;/a&gt;&lt;/div&gt;&lt;img src="http://der-albert.com/aggbug/208.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=735wYMr33S4:JyQOCYwjFcE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=735wYMr33S4:JyQOCYwjFcE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=735wYMr33S4:JyQOCYwjFcE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=735wYMr33S4:JyQOCYwjFcE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=735wYMr33S4:JyQOCYwjFcE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/der-albert-com?a=735wYMr33S4:JyQOCYwjFcE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/der-albert-com?i=735wYMr33S4:JyQOCYwjFcE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/der-albert-com/~4/735wYMr33S4" height="1" width="1"/&gt;</description>
            <dc:creator>Albert Weinert</dc:creator>
            <guid isPermaLink="false">http://der-albert.com/archive/2010/07/06/eigene-namensregeln-in-resharper-fur-xunit-net-basierte-tests.aspx</guid>
            <pubDate>Tue, 06 Jul 2010 12:27:15 GMT</pubDate>
            <comments>http://der-albert.com/archive/2010/07/06/eigene-namensregeln-in-resharper-fur-xunit-net-basierte-tests.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://der-albert.com/comments/commentRss/208.aspx</wfw:commentRss>
            <trackback:ping>http://der-albert.com/services/trackbacks/208.aspx</trackback:ping>
        <feedburner:origLink>http://der-albert.com/archive/2010/07/06/eigene-namensregeln-in-resharper-fur-xunit-net-basierte-tests.aspx</feedburner:origLink></item>
    </channel>
</rss>
