<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>.NET - Software &amp; DotNetNuke (DNN) Blog - .NET 3.0</title>
    <link>http://www.dotnetnukeblog.de/</link>
    <description>.NET-Software-Entwicklung - DotNetNuke - Business-Develoment</description>
    <language>de-DE</language>
    <copyright>Daniel Müller</copyright>
    <lastBuildDate>Tue, 14 Jul 2009 17:09:42 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>mail@dotnetnukeblog.de</managingEditor>
    <webMaster>mail@dotnetnukeblog.de</webMaster>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=cc1becb9-d429-4373-9462-6d9d6144b3c3</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,cc1becb9-d429-4373-9462-6d9d6144b3c3.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Mir fällt sehr oft auf, dass beim Aufbau
einer Anwendung mit mehreren Projekten innerhalb einer Solution, immer wieder eine
direkte Abhängigkeit geschaffen wird, indem man beim Projekt sagt: "Verweis hinzufügen"
-&gt; Projekte -&gt; Das zu referenzierende Projekt.<br /><br />
Gemacht wird so etwas z.B. wenn man die Datenobjekte / -definitionen getrennt von
der Logik, Datenzugriff, etc. in einem eigenen Projekt verwalten möchte (was eigentlich
so wieso immer getan werden sollte). 
<br /><br /><img src="http://www.dotnetnukeblog.de/content/binary/Projektverweis.JPG" border="0" /><br /><br />
Solange man alleine an einem Projekt arbeitet mag das noch okay sein und funktionieren;
arbeitet man aber in größeren Projektteams zusammen, wo nicht immer alle die komplette
Solution inkl. SourceCode Kompilieren sollen / möchten / können, muss man regelmäßig
die Referenzen manuell neu aufbauen. 
<br /><br />
Ich empfehle immer nur die kompilierte Assembly zu referenzieren und alle 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 12" /><meta name="Originator" content="Microsoft Word 12" /><link rel="File-List" href="file:///C:%5CUsers%5Cdmueller%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
  <o:TargetScreenSize>1024x768</o:TargetScreenSize>
 </o:OfficeDocumentSettings>
</xml><![endif]--><link rel="themeData" href="file:///C:%5CUsers%5Cdmueller%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" /><link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cdmueller%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>DE</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:DontVertAlignCellWithSp/>
   <w:DontBreakConstrainedForcedTables/>
   <w:DontVertAlignInTxbx/>
   <w:Word11KerningPairs/>
   <w:CachedColBalance/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--><style><!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
span.E-MailFormatvorlage15
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--></style><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Normale Tabelle";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">genutzten</span> Assemblies
in einem gemeinsamen Ordner abzulegen. Dann ist es nämlich vollkommen egal, ob man
die gesamte Solution, einen Teil oder sogar nur ein Projekt öffnet. 
<br /><br />
Mehr Aufwand bedeutet das für die Konfiguration und Entwicklung auch nicht, da nur
einmal bei der Anlage des Projektes ein Post-Build-Kommando in den Einstellungen des
Projektes hinterlegt werden muss. 
<br />
Hier ein Beispiel dafür:<br /><br /><img src="http://www.dotnetnukeblog.de/content/binary/Postbuildcommand-xcopy-ref.JPG" border="0" /><br /><br />
xcopy /y /d "$(TargetPath)" "$(SolutionDir)SharedAssemblies\"<br /><br />
Der Parameter "/d" sorgt dafür das nur aktueller Versionen kopiert werden und "/y"
unterdrückt die Nachfrage, ob vorhandene Dateien überschrieben werden sollen und macht
dieses einfach automatisch.<br /><br />
By the way... eine schöne Übersicht der XCOPY Parameter gibt es <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true" target="_blank" ref="nofollow">hier
bei Microsoft</a><br /><br /><p></p>
Damit nun die Reihenfolge der Kompilierung richtig ist und auch Veränderungen von
z.B. Basisklassen zuerst neu erzeugt werden, muss man unter den Projektabhängigkeiten
nun die einzelnen Projekte angeben. Das ist kein Verweis (!) veranlasst aber Visual
Studio in der richtigen Reihenfolge die Projekte zu erstellen!<br /><br />
that's it<br /><br /><img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=cc1becb9-d429-4373-9462-6d9d6144b3c3" /></body>
      <title>Organisation von Projektreferenzen innerhalb eines Solution</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,cc1becb9-d429-4373-9462-6d9d6144b3c3.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Organisation+Von+Projektreferenzen+Innerhalb+Eines+Solution.aspx</link>
      <pubDate>Tue, 14 Jul 2009 17:09:42 GMT</pubDate>
      <description>Mir fällt sehr oft auf, dass beim Aufbau einer Anwendung mit mehreren Projekten innerhalb einer Solution, immer wieder eine direkte Abhängigkeit geschaffen wird, indem man beim Projekt sagt: "Verweis hinzufügen" -&amp;gt; Projekte -&amp;gt; Das zu referenzierende Projekt.&lt;br&gt;
&lt;br&gt;
Gemacht wird so etwas z.B. wenn man die Datenobjekte / -definitionen getrennt von
der Logik, Datenzugriff, etc. in einem eigenen Projekt verwalten möchte (was eigentlich
so wieso immer getan werden sollte). 
&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.dotnetnukeblog.de/content/binary/Projektverweis.JPG" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
Solange man alleine an einem Projekt arbeitet mag das noch okay sein und funktionieren;
arbeitet man aber in größeren Projektteams zusammen, wo nicht immer alle die komplette
Solution inkl. SourceCode Kompilieren sollen / möchten / können, muss man regelmäßig
die Referenzen manuell neu aufbauen. 
&lt;br&gt;
&lt;br&gt;
Ich empfehle immer nur die kompilierte Assembly zu referenzieren und alle 
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
&lt;meta name="ProgId" content="Word.Document"&gt;
&lt;meta name="Generator" content="Microsoft Word 12"&gt;
&lt;meta name="Originator" content="Microsoft Word 12"&gt;
&lt;link rel="File-List" href="file:///C:%5CUsers%5Cdmueller%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
  &lt;o:TargetScreenSize&gt;1024x768&lt;/o:TargetScreenSize&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;
&lt;link rel="themeData" href="file:///C:%5CUsers%5Cdmueller%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;
&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cdmueller%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;DE&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
span.E-MailFormatvorlage15
	{mso-style-type:personal;
	mso-style-noshow:yes;
	mso-style-unhide:no;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;
&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Normale Tabelle";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;span style="font-size: 11pt; font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;genutzten&lt;/span&gt; Assemblies
in einem gemeinsamen Ordner abzulegen. Dann ist es nämlich vollkommen egal, ob man
die gesamte Solution, einen Teil oder sogar nur ein Projekt öffnet. 
&lt;br&gt;
&lt;br&gt;
Mehr Aufwand bedeutet das für die Konfiguration und Entwicklung auch nicht, da nur
einmal bei der Anlage des Projektes ein Post-Build-Kommando in den Einstellungen des
Projektes hinterlegt werden muss. 
&lt;br&gt;
Hier ein Beispiel dafür:&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.dotnetnukeblog.de/content/binary/Postbuildcommand-xcopy-ref.JPG" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
xcopy /y /d "$(TargetPath)" "$(SolutionDir)SharedAssemblies\"&lt;br&gt;
&lt;br&gt;
Der Parameter "/d" sorgt dafür das nur aktueller Versionen kopiert werden und "/y"
unterdrückt die Nachfrage, ob vorhandene Dateien überschrieben werden sollen und macht
dieses einfach automatisch.&lt;br&gt;
&lt;br&gt;
By the way... eine schöne Übersicht der XCOPY Parameter gibt es &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true" target="_blank" ref="nofollow"&gt;hier
bei Microsoft&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
Damit nun die Reihenfolge der Kompilierung richtig ist und auch Veränderungen von
z.B. Basisklassen zuerst neu erzeugt werden, muss man unter den Projektabhängigkeiten
nun die einzelnen Projekte angeben. Das ist kein Verweis (!) veranlasst aber Visual
Studio in der richtigen Reihenfolge die Projekte zu erstellen!&lt;br&gt;
&lt;br&gt;
that's it&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=cc1becb9-d429-4373-9462-6d9d6144b3c3" /&gt;</description>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=f68c86f2-5a2b-4cba-8f92-03f37a859aa0</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,f68c86f2-5a2b-4cba-8f92-03f37a859aa0.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Im Netz gibt es zwei Seiten <a href="http://multimedia.katholisch.de">mutlimedia.katholisch.de</a> und <a href="http://www.kirche.tv">www.kirche.tv</a>.
Beiden Seiten wurde mit DotNetNuke umgesetzt und sollen so eine Art YouTube darstellen.
Natürlich sehr stark spezialisiert auf den Bereich der katholischen Kirche.<br /><br /><p></p>
Die Architektur von diesen Videoportalen ist recht interessant, da hier beide Portale
(getrennte Installationen) aus einem gemeinsamen Datenpool bedient werden. Der Lösungsansatz
ist DotNetNuke mit WCF zu verheiraten. Die Module zur Darstellung von Videos, zum
Upload von Videos und natürlich die Administration von Videos greifen dann nicht wie
sonst üblich auf den DataProvider zurück, sonder befragen einfach die laufenden WCF-Services. 
<br />
Die eigentlich "anzeige Module"  - sprich die *.ascx" - greifen aber wie gewohnt
auf Controller-Klassen zu, durch die dann eine Kommunikation mit den WCF-Services
ermöglicht wird. In den Controllern kann man dann z.B. auch Caching und ähnliches
einbauen. 
<br /><br />
Neben der WCF wurde auch die MSMQ (Message Queue) stark genutzt, was gerade im Zusammenspiel
mit der WCF sehr viel freude bereitet und denkbar einfach ist. Der große Vorteil bei
der Verwendung von MSMQ ist natürlich, dass Prozesse asynchron ablaufen können und
der Benutzer nicht warten muss, bis der komplette Workflow-Prozess dahinter abgerabeitet
ist. 
<br />
Ein kurzes Beispiel um das zu verdeutlichen: Ein Anwender macht einen Video - Upload
durch das DNN-Modul; dieses macht eine erste Validierung der Daten und wenn diese
in Ordnung sind, wird eine Nachricht mit allen Informationen in eine transaktionale
Message Queue übertragen. Damit ist der Job für das DNN-Modul zunächst erledigt. Ein
WCF-Service der permanent die Queue "im Auge" hat, holt die Nachricht ab und bearbeitet
diese nun weiter - Daten werden in die Datenbank geschrieben, eine Nachricht zur Konvertierungs
Queue abgesetzt, etc.). Gerade bei der Konvertierung von Videos kommt man um einen
asynchron Verarbeitung nicht herum, da große Dateien längere Zeit in anspruch nehmen,.
Die Konvertierung erfolgt übrigens in das Format Flash. Wenn das Video konvertiert
wurde, wertet ein diesmal ei NT-Dienst das Ergebnis aus und berichtet den Status.
Für die Konvertierung werden externe Programm eingesetzt und deshalb überwacht das
ein NT-Dienst. [Dieser Workflow ist nur sehr grob beschrieben und beinhaltet noch
deutlich mehr Schritte]<br /><br />
Die beiden Portale laufen nun seit gut 6 Monaten sehr zuverlässig, stabil und schnell.
Ein schöner Beweis das man mit DotNetNuke als Basis wirklich so ziemlich alles umsetzen
kann und das man DotNetNuke auch wunderbar mit anderen Technologien nutzen kann.<br /><br />
Wer ausführlichere Informationen dazu haben möchte, kann sehr gerne mit mir Kontakt
aufnehmen...<br /><br /><br /><br /><br /><img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=f68c86f2-5a2b-4cba-8f92-03f37a859aa0" /></body>
      <title>Ein Videoportal auf Basis von DotNetNuke, WCF und MS - Message Queue</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,f68c86f2-5a2b-4cba-8f92-03f37a859aa0.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Ein+Videoportal+Auf+Basis+Von+DotNetNuke+WCF+Und+MS+Message+Queue.aspx</link>
      <pubDate>Tue, 20 May 2008 23:13:09 GMT</pubDate>
      <description>Im Netz gibt es zwei Seiten &lt;a href="http://multimedia.katholisch.de"&gt;mutlimedia.katholisch.de&lt;/a&gt; und &lt;a href="http://www.kirche.tv"&gt;www.kirche.tv&lt;/a&gt;.
Beiden Seiten wurde mit DotNetNuke umgesetzt und sollen so eine Art YouTube darstellen.
Natürlich sehr stark spezialisiert auf den Bereich der katholischen Kirche.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
Die Architektur von diesen Videoportalen ist recht interessant, da hier beide Portale
(getrennte Installationen) aus einem gemeinsamen Datenpool bedient werden. Der Lösungsansatz
ist DotNetNuke mit WCF zu verheiraten. Die Module zur Darstellung von Videos, zum
Upload von Videos und natürlich die Administration von Videos greifen dann nicht wie
sonst üblich auf den DataProvider zurück, sonder befragen einfach die laufenden WCF-Services. 
&lt;br&gt;
Die eigentlich "anzeige Module"&amp;nbsp; - sprich die *.ascx" - greifen aber wie gewohnt
auf Controller-Klassen zu, durch die dann eine Kommunikation mit den WCF-Services
ermöglicht wird. In den Controllern kann man dann z.B. auch Caching und ähnliches
einbauen. 
&lt;br&gt;
&lt;br&gt;
Neben der WCF wurde auch die MSMQ (Message Queue) stark genutzt, was gerade im Zusammenspiel
mit der WCF sehr viel freude bereitet und denkbar einfach ist. Der große Vorteil bei
der Verwendung von MSMQ ist natürlich, dass Prozesse asynchron ablaufen können und
der Benutzer nicht warten muss, bis der komplette Workflow-Prozess dahinter abgerabeitet
ist. 
&lt;br&gt;
Ein kurzes Beispiel um das zu verdeutlichen: Ein Anwender macht einen Video - Upload
durch das DNN-Modul; dieses macht eine erste Validierung der Daten und wenn diese
in Ordnung sind, wird eine Nachricht mit allen Informationen in eine transaktionale
Message Queue übertragen. Damit ist der Job für das DNN-Modul zunächst erledigt. Ein
WCF-Service der permanent die Queue "im Auge" hat, holt die Nachricht ab und bearbeitet
diese nun weiter - Daten werden in die Datenbank geschrieben, eine Nachricht zur Konvertierungs
Queue abgesetzt, etc.). Gerade bei der Konvertierung von Videos kommt man um einen
asynchron Verarbeitung nicht herum, da große Dateien längere Zeit in anspruch nehmen,.
Die Konvertierung erfolgt übrigens in das Format Flash. Wenn das Video konvertiert
wurde, wertet ein diesmal ei NT-Dienst das Ergebnis aus und berichtet den Status.
Für die Konvertierung werden externe Programm eingesetzt und deshalb überwacht das
ein NT-Dienst. [Dieser Workflow ist nur sehr grob beschrieben und beinhaltet noch
deutlich mehr Schritte]&lt;br&gt;
&lt;br&gt;
Die beiden Portale laufen nun seit gut 6 Monaten sehr zuverlässig, stabil und schnell.
Ein schöner Beweis das man mit DotNetNuke als Basis wirklich so ziemlich alles umsetzen
kann und das man DotNetNuke auch wunderbar mit anderen Technologien nutzen kann.&lt;br&gt;
&lt;br&gt;
Wer ausführlichere Informationen dazu haben möchte, kann sehr gerne mit mir Kontakt
aufnehmen...&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=f68c86f2-5a2b-4cba-8f92-03f37a859aa0" /&gt;</description>
      <category>.NET 3.0</category>
      <category>ASP.NET</category>
      <category>DNN - Module</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=75fcb491-0e9e-4fc8-80a2-528ac78a7b45</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,75fcb491-0e9e-4fc8-80a2-528ac78a7b45.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für ein aktuelles Projekt benötige ich von Plätzen / Anschriften die GEO-Koordinaten.
Da zur Visualisierung so wieso Google-Maps später eingesetzt werden soll, liegt natürlichdie
Google-API nahe. Dafür habe ich heute ein C# Klasse entwickelt, mit der man einfach
über einen HTTPRequest das Ergebnis in XML zurück geliefert bekommt. Die Klassen analysiert
das Ergebnis von Google auf Fehler und parst die Werte für <strong>Latitude</strong> und <strong>Longitude</strong>.
</p>
        <p>
Zunächst habe ich mir das Core-Modul von DotNetNuke "MAPS" angeschaut, das ebenfalls
die Google-Maps nutzt. Es funktioniert recht gut - nur war ich von der vorgehensweise
docht etwas erschrocken: Da wird das Ergebnis wirklich noch mit String-Funktionen
(Find, Left, SubString) auseinandergenommen um an die Werte zukommen. Hallo? Wofür
gibt es einen XML-Parser, der für solche Aufgaben entwickelt wurde und auch deutlich
schneller ist, bei der Analyse von XML. 
<br />
Das aber nur als Zwischenbemerkung an dieser Stelle ;-)
</p>
        <p>
Bei der Entwicklung der Klasse hatte ich zunächst Probleme mit XPath die Werte auszulesen.
Da ich ja diesmal gezielt ein paar Daten aus dem XML-File benötige und nicht
wirklich Node für Node durchgehen muss (wollte), war XPath meine erste Wahl. Mache
das aber nicht so häufig und hatte zuerst schwirigkeiten, weil die Abfrage <strong>SelectSingleNode</strong> immer
einen <em>null</em>-Value zurück lieferte. Nach kurzer Zeit viel mir dann aber auf,
das Google einen Namespace im XML-Dokument stehen hat - so wie es ja eigentlich auch
sein soll. Diesen Namespace muss aber bei einer XPath-Abfrage auf jeden Fall vorher
dem Parser bekannt geben. Dann funktioniert die Abfrage auch ohne Probleme. Das sieht
dann in etwa so aus:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">XmlNamespaceManager
nsManager <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> XmlNamespaceManager(xmlDoc.NameTable);<br />
nsManager.AddNamespace(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"gm"</span>, <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"http://earth.google.com/kml/2.0"</span>);<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///Es
wird versucht den Statuscode zu ermitteln</span><br />
XmlNode nodeStatus <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xmlDoc.SelectSingleNode(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"gm:kml/gm:Response/gm:Status/gm:code"</span>,
nsManager);<br /></span>
        </p>
        <p>
In der Abfrage hier wird der Status-Cide abgefragt, um zu überprüfen ob die Anfrage
erfolgreich war. xmlDoc ist dabei mein XML-Parser ( System.Xml.<font color="#ffc66d">XmlDocument</font>).
</p>
        <p>
Die fertige C# Klasse steht hier zum Download bereit:
</p>
        <a href="http://www.dotnetnukeblog.de/content/binary/C-GoogleMaps-API-GEO-Koordinaten.zip">C#-GoogleMaps-API-GEO-Koordinaten.zip
(2,59 KB)</a>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=75fcb491-0e9e-4fc8-80a2-528ac78a7b45" />
      </body>
      <title>Bei Google MAPS GEO-Koordinaten mit C# abfragen</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,75fcb491-0e9e-4fc8-80a2-528ac78a7b45.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Bei+Google+MAPS+GEOKoordinaten+Mit+C+Abfragen.aspx</link>
      <pubDate>Sat, 17 May 2008 15:37:36 GMT</pubDate>
      <description>&lt;p&gt;
Für ein aktuelles Projekt benötige ich von Plätzen / Anschriften die GEO-Koordinaten.
Da zur Visualisierung so wieso Google-Maps später eingesetzt werden soll, liegt natürlichdie
Google-API nahe. Dafür habe ich heute ein C# Klasse entwickelt, mit der man einfach
über einen HTTPRequest das Ergebnis in XML zurück geliefert bekommt. Die Klassen analysiert
das Ergebnis von Google auf Fehler und parst die Werte für &lt;strong&gt;Latitude&lt;/strong&gt; und &lt;strong&gt;Longitude&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Zunächst habe ich mir das Core-Modul von DotNetNuke "MAPS" angeschaut, das ebenfalls
die Google-Maps nutzt. Es funktioniert recht gut - nur war ich von der vorgehensweise
docht etwas erschrocken: Da wird das Ergebnis wirklich noch mit String-Funktionen
(Find, Left, SubString) auseinandergenommen um an die Werte zukommen. Hallo? Wofür
gibt es einen XML-Parser, der für solche Aufgaben entwickelt wurde und auch deutlich
schneller ist, bei der Analyse von XML. 
&lt;br&gt;
Das aber nur als Zwischenbemerkung an&amp;nbsp;dieser Stelle ;-)
&lt;/p&gt;
&lt;p&gt;
Bei der Entwicklung der Klasse hatte ich zunächst Probleme mit XPath die Werte auszulesen.
Da ich ja diesmal gezielt ein paar Daten&amp;nbsp;aus dem XML-File benötige und nicht
wirklich Node für Node durchgehen muss (wollte), war XPath meine erste Wahl. Mache
das aber nicht so häufig und hatte zuerst schwirigkeiten, weil die Abfrage &lt;strong&gt;SelectSingleNode&lt;/strong&gt; immer
einen &lt;em&gt;null&lt;/em&gt;-Value zurück lieferte. Nach kurzer Zeit viel mir dann aber auf,
das Google einen Namespace im XML-Dokument stehen hat - so wie es ja eigentlich auch
sein soll. Diesen Namespace muss aber bei einer XPath-Abfrage auf jeden Fall vorher
dem Parser bekannt geben. Dann funktioniert die Abfrage auch ohne Probleme. Das sieht
dann in etwa so aus:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;XmlNamespaceManager
nsManager &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; XmlNamespaceManager(xmlDoc.NameTable);&lt;br&gt;
nsManager.AddNamespace(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"gm"&lt;/span&gt;, &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"http://earth.google.com/kml/2.0"&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///Es
wird versucht den Statuscode zu ermitteln&lt;/span&gt;
&lt;br&gt;
XmlNode nodeStatus &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xmlDoc.SelectSingleNode(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"gm:kml/gm:Response/gm:Status/gm:code"&lt;/span&gt;,
nsManager);&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
In der Abfrage hier wird der Status-Cide abgefragt, um zu überprüfen ob die Anfrage
erfolgreich war. xmlDoc ist dabei mein&amp;nbsp;XML-Parser (&amp;nbsp;System.Xml.&lt;font color=#ffc66d&gt;XmlDocument&lt;/font&gt;).
&lt;/p&gt;
&lt;p&gt;
Die fertige C# Klasse steht hier zum Download bereit:
&lt;/p&gt;
&lt;a href="http://www.dotnetnukeblog.de/content/binary/C-GoogleMaps-API-GEO-Koordinaten.zip"&gt;C#-GoogleMaps-API-GEO-Koordinaten.zip
(2,59 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=75fcb491-0e9e-4fc8-80a2-528ac78a7b45" /&gt;</description>
      <category>.NET 3.0</category>
      <category>ASP.NET</category>
      <category>Opensource</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=c0e00415-8dc6-4f9e-a546-8c955c248329</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,c0e00415-8dc6-4f9e-a546-8c955c248329.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wenn man eine Anwendung nur einmal durch den Anwender starten lassen möchte, dann
ist das mit der Hilfe von einem erzeugten Mutex sehr einfach zu realisieren.
</p>
        <p>
Nur ein paar Zeilen Quellcode sind dafür in der Main() Methode notwendig. Wie immer
ist der Beispiel-Code in .NET C#.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">bool</span> createdNew;<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///Einen
neuen Mutex erzeugen, damit die Anwendung nur einmal gestartet werden kann.</span><br />
System.Threading.Mutex appMutex <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> System.Threading.Mutex(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>,
Application.ProductName, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">out</span> createdNew);<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///Wenn
die Erzeugung erfolgreich war</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (createdNew)<br />
{<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///...
dann kann die Anwendung ausgeführt werden</span><br />
LogIn frmLogIn <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> LogIn();<br />
Application.Run(frmLogIn);<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (frmLogIn.DialogResult
== DialogResult.OK)<br />
Application.Run(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> MainForm());<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
den Mutex wieder frei geben</span><br />
appMutex.ReleaseMutex();<br />
}<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">else</span><br />
{<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///Wenn
die Anwendung schon ausgeführt wird -&gt; Hinweis-Dialog</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> msg <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> String.Format(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Das
Programm \"{0}\" wurde bereits gestartet!"</span>, Application.ProductName);<br />
MessageBox.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);<br />
}</span>
        </p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=c0e00415-8dc6-4f9e-a546-8c955c248329" />
      </body>
      <title>Eine .NET WinForms Anwendung nur einmal starten / arbeiten mit einem mutex</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,c0e00415-8dc6-4f9e-a546-8c955c248329.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Eine+NET+WinForms+Anwendung+Nur+Einmal+Starten+Arbeiten+Mit+Einem+Mutex.aspx</link>
      <pubDate>Wed, 29 Aug 2007 18:36:23 GMT</pubDate>
      <description>&lt;p&gt;
Wenn man eine Anwendung nur einmal durch den Anwender starten lassen möchte, dann
ist das mit der Hilfe von einem erzeugten Mutex sehr einfach zu realisieren.
&lt;/p&gt;
&lt;p&gt;
Nur ein paar Zeilen Quellcode sind dafür in der Main() Methode notwendig. Wie immer
ist der Beispiel-Code in .NET&amp;nbsp;C#.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt; createdNew;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///Einen
neuen Mutex erzeugen, damit die Anwendung nur einmal gestartet werden kann.&lt;/span&gt;
&lt;br&gt;
System.Threading.Mutex appMutex &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; System.Threading.Mutex(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;,
Application.ProductName, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;out&lt;/span&gt; createdNew);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///Wenn
die Erzeugung erfolgreich war&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (createdNew)&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///...
dann kann die Anwendung ausgeführt werden&lt;/span&gt;
&lt;br&gt;
LogIn frmLogIn &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; LogIn();&lt;br&gt;
Application.Run(frmLogIn);&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (frmLogIn.DialogResult
== DialogResult.OK)&lt;br&gt;
Application.Run(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; MainForm());&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
den Mutex wieder frei geben&lt;/span&gt;
&lt;br&gt;
appMutex.ReleaseMutex();&lt;br&gt;
}&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///Wenn
die Anwendung schon ausgeführt wird -&amp;gt; Hinweis-Dialog&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; msg &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; String.Format(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Das
Programm \"{0}\" wurde bereits gestartet!"&lt;/span&gt;, Application.ProductName);&lt;br&gt;
MessageBox.Show(msg, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=c0e00415-8dc6-4f9e-a546-8c955c248329" /&gt;</description>
      <category>.NET</category>
      <category>.NET 2.0</category>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
      <category>Winform</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=0c19fd77-40a4-42fd-9996-3b4c6eddcd79</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,0c19fd77-40a4-42fd-9996-3b4c6eddcd79.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Gerade habe ich ein kostenloses <strong>eBook</strong> zum Thema <strong>Coding Guidlines</strong> für
C# und VB.NET gefunden und möchte darauf aufmerksam machen. 
</p>
        <p>
Den Download gibt es direkt unter <a href="http://submain.com/?nav=products.guidelines" target="_blank">submain.com</a></p>
        <p>
Das eBook hat folgende Themen:
</p>
        <ul>
          <li>
Naming Guidelines 
</li>
          <li>
Class Member Usage Guidelines 
</li>
          <li>
Guidelines for Exposing Functionality to COM 
</li>
          <li>
Error Raising &amp; Handling Guidelines 
</li>
          <li>
Array Usage Guidelines 
</li>
          <li>
Operator Overloading Usage Guidelines 
</li>
          <li>
Guidelines for Casting Types 
</li>
          <li>
Common Design Patterns 
</li>
          <li>
Callback Function Usage 
</li>
          <li>
Time-Out Usage 
</li>
          <li>
Security in Class Libraries 
</li>
          <li>
Threading Design Guidelines 
</li>
          <li>
Formatting Standards 
</li>
          <li>
Commenting Code 
</li>
          <li>
Code Reviews 
</li>
          <li>
Additional Notes for VB .NET Developers 
</li>
        </ul>
        <p>
Ebenso recht nützlich ist das Tool <strong>SmartOutline </strong>for <strong>VS2005</strong>,
welches als kostenlose Version auf der Seite zur Verfügung gestellt wird. Damit wird
das Handling von <strong>#region</strong>'s - welche ich sehr gerne benutze - noch
etwas verbessert.
</p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=0c19fd77-40a4-42fd-9996-3b4c6eddcd79" />
      </body>
      <title>C#/VB .NET Coding Guidelines</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,0c19fd77-40a4-42fd-9996-3b4c6eddcd79.aspx</guid>
      <link>http://www.dotnetnukeblog.de/CVB+NET+Coding+Guidelines.aspx</link>
      <pubDate>Wed, 25 Jul 2007 15:00:41 GMT</pubDate>
      <description>&lt;p&gt;
Gerade habe ich ein kostenloses &lt;strong&gt;eBook&lt;/strong&gt; zum Thema &lt;strong&gt;Coding Guidlines&lt;/strong&gt; für
C# und VB.NET gefunden und möchte darauf aufmerksam machen. 
&lt;/p&gt;
&lt;p&gt;
Den Download gibt es direkt unter &lt;a href="http://submain.com/?nav=products.guidelines" target=_blank&gt;submain.com&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Das eBook hat folgende Themen:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Naming Guidelines 
&lt;li&gt;
Class Member Usage Guidelines 
&lt;li&gt;
Guidelines for Exposing Functionality to COM 
&lt;li&gt;
Error Raising &amp;amp; Handling Guidelines 
&lt;li&gt;
Array Usage Guidelines 
&lt;li&gt;
Operator Overloading Usage Guidelines 
&lt;li&gt;
Guidelines for Casting Types 
&lt;li&gt;
Common Design Patterns 
&lt;li&gt;
Callback Function Usage 
&lt;li&gt;
Time-Out Usage 
&lt;li&gt;
Security in Class Libraries 
&lt;li&gt;
Threading Design Guidelines 
&lt;li&gt;
Formatting Standards 
&lt;li&gt;
Commenting Code 
&lt;li&gt;
Code Reviews 
&lt;li&gt;
Additional Notes for VB .NET Developers 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Ebenso recht nützlich ist das Tool &lt;strong&gt;SmartOutline &lt;/strong&gt;for &lt;strong&gt;VS2005&lt;/strong&gt;,
welches als kostenlose Version auf der Seite zur Verfügung gestellt wird. Damit wird
das Handling von &lt;strong&gt;#region&lt;/strong&gt;'s - welche ich sehr gerne benutze - noch
etwas verbessert.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=0c19fd77-40a4-42fd-9996-3b4c6eddcd79" /&gt;</description>
      <category>.NET</category>
      <category>.NET 2.0</category>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=0ed3c6f6-1149-4617-8b24-3041f249b2a0</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,0ed3c6f6-1149-4617-8b24-3041f249b2a0.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Suchmaschinen wie <a href="http://www.google.de" target="_blank">www.google.de</a> oder <a href="http://www.live.de" target="_blank">www.live.de</a> sind
für alle Entwickler - ob .NET, PHP, Delphi, etc. - ein wertvolles Werkzeug um
schnell Antworten und Lösungen bei Problemem zu finden.
</p>
        <p>
Das größte Problem dabei ist aber meist, dass man nicht nur Suchergebnisse bekommt
dich sich auch wirklich mit .NET befassen und somit wird die Recherche unnötig erschwert.
Dieses gehört aber der Vergangenheit an, denn Dan Appleman hat folgende Website erstellt:
</p>
        <p>
          <a href="http://www.searchdotnet.com/" target="_blank">http://www.searchdotnet.com/</a>
        </p>
        <p>
Diese Suchmaschine basiert auf Google, allerdings werden wirklich nur .NET relevante
Ergebnisse angezeigt.
</p>
        <p>
Die ersten Erfahrungen mit dieer Suchmaschine waren sehr positiv!
</p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=0ed3c6f6-1149-4617-8b24-3041f249b2a0" />
      </body>
      <title>Eine DotNet Technologie Suchmaschine</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,0ed3c6f6-1149-4617-8b24-3041f249b2a0.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Eine+DotNet+Technologie+Suchmaschine.aspx</link>
      <pubDate>Fri, 04 May 2007 13:15:04 GMT</pubDate>
      <description>&lt;p&gt;
Suchmaschinen wie &lt;a href="http://www.google.de" target="_blank"&gt;www.google.de&lt;/a&gt; oder &lt;a href="http://www.live.de" target="_blank"&gt;www.live.de&lt;/a&gt; sind
für alle Entwickler - ob .NET, PHP, Delphi, etc.&amp;nbsp;- ein wertvolles Werkzeug um
schnell Antworten und Lösungen bei Problemem zu finden.
&lt;/p&gt;
&lt;p&gt;
Das größte Problem dabei ist aber meist, dass man nicht nur Suchergebnisse bekommt
dich sich auch wirklich mit .NET befassen und somit wird die Recherche unnötig erschwert.
Dieses gehört aber der Vergangenheit an, denn Dan Appleman hat folgende Website erstellt:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.searchdotnet.com/" target=_blank&gt;http://www.searchdotnet.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Diese Suchmaschine basiert auf Google, allerdings werden wirklich nur .NET relevante
Ergebnisse angezeigt.
&lt;/p&gt;
&lt;p&gt;
Die ersten Erfahrungen mit dieer Suchmaschine waren sehr positiv!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=0ed3c6f6-1149-4617-8b24-3041f249b2a0" /&gt;</description>
      <category>.NET</category>
      <category>.NET 2.0</category>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=80737cee-91ae-4db4-9a96-5439f23ec2de</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,80737cee-91ae-4db4-9a96-5439f23ec2de.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die von mir gern benutze und geschätzte Enterprise Library steht nun endlich in der
Version 3.0 als Download zur Verfügung. Folgende Application Blocks sind in dem Download-File
enthalten:
</p>
        <ul>
          <li>
Caching Application Block 
</li>
          <li>
Cryptography Application Block 
</li>
          <li>
Data Access Application Block 
</li>
          <li>
Exception Handling Application Block 
</li>
          <li>
Logging Application Block 
</li>
          <li>
Policy Injection Application Block 
</li>
          <li>
Security Application Block 
</li>
          <li>
Validation Application Block</li>
        </ul>
        <p>
          <br />
Ebenso wurde die Integration der Windows Communication Foundation (WCF) vorgenommen.
Leider ist meine Zeit im Augenblick etwas knapp aber ich hoffe mir die Finale der
Library bald genauer anschauen zu können.
</p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=62ef5f79-daf2-43af-9897-d926f03b9e60&amp;displaylang=en">Download
Enterprise Library 3.0</a>
        </p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=80737cee-91ae-4db4-9a96-5439f23ec2de" />
      </body>
      <title>Enterprise Library 3.0 steht zum Download bereit</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,80737cee-91ae-4db4-9a96-5439f23ec2de.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Enterprise+Library+30+Steht+Zum+Download+Bereit.aspx</link>
      <pubDate>Wed, 11 Apr 2007 21:54:03 GMT</pubDate>
      <description>&lt;p&gt;
Die von mir gern benutze und geschätzte Enterprise Library steht nun endlich in der
Version 3.0 als Download zur Verfügung. Folgende Application Blocks sind in dem Download-File
enthalten:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Caching Application Block 
&lt;li&gt;
Cryptography Application Block 
&lt;li&gt;
Data Access Application Block 
&lt;li&gt;
Exception Handling Application Block 
&lt;li&gt;
Logging Application Block 
&lt;li&gt;
Policy Injection Application Block 
&lt;li&gt;
Security Application Block 
&lt;li&gt;
Validation Application Block&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;br&gt;
Ebenso wurde die Integration der Windows Communication Foundation (WCF) vorgenommen.
Leider ist meine Zeit im Augenblick etwas knapp aber ich hoffe mir die Finale der
Library bald genauer anschauen zu können.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=62ef5f79-daf2-43af-9897-d926f03b9e60&amp;amp;displaylang=en"&gt;Download
Enterprise Library 3.0&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=80737cee-91ae-4db4-9a96-5439f23ec2de" /&gt;</description>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=9434b972-79e2-4d58-91f0-54270101dfb4</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,9434b972-79e2-4d58-91f0-54270101dfb4.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie ich schon in meinem Beitrag über den NRW Sumit 06 geschrieben haben, hat Newtelligence
eine Beispielanwendung für die WCF geschrieben. Diese Anwendung wurde im Auftrag des
BSI (Bundesamt für Sicherheit in der Informationstechnik) entwickelt und sollte nicht
nur ein praxisorientierte Beispielanwendung sondern viel mehr die sichere Nutzung
der WCF-Sicherheitsfunktionen zeigen.<br />
Die Empfehlungen umfassen neben den Hinweisen zu WCF-spezifischen Architekturen, zur
sicheren Installation, Authentisierung und zur Anbindung von Datenbanken oder der
Fehlerbehandlung in verteilten Systemen auch auch den Quellcode der beispielhaften
WCF-Anwendung.
</p>
        <p>
Die entwickelten Handlungsempfehlungen sowie die Beispielanwendung kann per E-Mail
(<a href="mailto:security@bsi.bund.de">security (at) bsi.bund.de</a>) angefordert
werden.
</p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=9434b972-79e2-4d58-91f0-54270101dfb4" />
      </body>
      <title>Sicherheitsanalyse von WCF (Windows Communication Foundation) durch das BSI und newtelligence</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,9434b972-79e2-4d58-91f0-54270101dfb4.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Sicherheitsanalyse+Von+WCF+Windows+Communication+Foundation+Durch+Das+BSI+Und+Newtelligence.aspx</link>
      <pubDate>Fri, 29 Dec 2006 10:40:41 GMT</pubDate>
      <description>&lt;p&gt;
Wie ich schon in meinem Beitrag über den NRW Sumit 06 geschrieben haben, hat Newtelligence
eine Beispielanwendung für die WCF geschrieben. Diese Anwendung wurde im Auftrag des
BSI (Bundesamt für Sicherheit in der Informationstechnik) entwickelt und sollte nicht
nur ein praxisorientierte Beispielanwendung&amp;nbsp;sondern viel mehr die sichere Nutzung
der WCF-Sicherheitsfunktionen zeigen.&lt;br&gt;
Die Empfehlungen umfassen neben den Hinweisen zu WCF-spezifischen Architekturen, zur
sicheren Installation, Authentisierung und zur Anbindung von Datenbanken oder der
Fehlerbehandlung in verteilten Systemen auch auch den Quellcode der beispielhaften
WCF-Anwendung.
&lt;/p&gt;
&lt;p&gt;
Die entwickelten Handlungsempfehlungen sowie die Beispielanwendung kann per E-Mail
(&lt;a href="mailto:security@bsi.bund.de"&gt;security (at) bsi.bund.de&lt;/a&gt;) angefordert
werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=9434b972-79e2-4d58-91f0-54270101dfb4" /&gt;</description>
      <category>.NET</category>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
      <category>Opensource</category>
      <category>Software</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=894df70e-dcb6-410d-8e91-69711d0e801c</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,894df70e-dcb6-410d-8e91-69711d0e801c.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Vermutlich ist es kein großes Geheimnis mehr aber trotzdem verbreite ich die Neuigkeit
auch mal: 
<br />
Microsoft hat den Internet Explorer 7.0 zum Download frei gegeben.
</p>
        <p>
Der neue IE ist nicht nur ein Featureupdate sondern laut Aussage von Microsoft ein
von Grund auf komplettes Redesign.  Besonders die Punkte Bedienbarkeit und Sicherheit
standen im Vordergrund der Entwicklung. 
</p>
        <p>
Hier gibt es den neuen Browser:<a href="http://www.microsoft.com/germany/windows/ie/ie7/default.mspx" target="_blank">Download</a></p>
        <p>
 
</p>
        <p>
Endlich ist es da: Das .NET Framework 3.0 inkl. der passenden SDK's und den passenden
Erweiterungen für das Visualstudio 2005. 
</p>
        <p>
Ein paar Informationen zum .NET Framework und der Installation gibt es <a href="http://msdn.microsoft.com/windowsvista/support/relnotes/netfx3/default.aspx">hier</a>.
</p>
        <p>
Hier die Downloadlinks für die einzelnen Downloads:
</p>
        <p>
net 3.0 runtime -&gt; <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC" target="_blank"><font color="#355ea0"><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC
</a></font></a><font color="#355ea0">340B-F857-4A14-83F5-25634C3BF043&amp;displaylang=en</font></p>
        <p>
sdk -&gt; <a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74726"><font color="#355ea0">http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74726</font></a></p>
        <p>
visual studio extensions for WF -&gt; <a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=4&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74727"><font color="#355ea0">http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=4&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74727</font></a></p>
        <p>
visual studio extensions for WCF, WPF (noch CTP !1) -&gt; <a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=2&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74725"><font color="#355ea0">http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=2&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74725</font></a></p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=894df70e-dcb6-410d-8e91-69711d0e801c" />
      </body>
      <title>Endlich neuer IE / .NET Framework 3.0 ready to download</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,894df70e-dcb6-410d-8e91-69711d0e801c.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Endlich+Neuer+IE+NET+Framework+30+Ready+To+Download.aspx</link>
      <pubDate>Wed, 08 Nov 2006 09:20:36 GMT</pubDate>
      <description>&lt;p&gt;
Vermutlich ist es kein großes Geheimnis mehr aber trotzdem verbreite ich die Neuigkeit
auch mal: 
&lt;br&gt;
Microsoft hat den Internet Explorer 7.0 zum Download frei gegeben.
&lt;/p&gt;
&lt;p&gt;
Der neue IE ist nicht nur ein Featureupdate sondern laut Aussage von Microsoft ein
von Grund auf komplettes Redesign.&amp;nbsp; Besonders die Punkte Bedienbarkeit und Sicherheit
standen im Vordergrund der Entwicklung. 
&lt;/p&gt;
&lt;p&gt;
Hier gibt es den neuen Browser:&lt;a href="http://www.microsoft.com/germany/windows/ie/ie7/default.mspx" target=_blank&gt;Download&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Endlich ist es da: Das .NET Framework 3.0 inkl. der passenden SDK's und den passenden
Erweiterungen für das Visualstudio 2005. 
&lt;/p&gt;
&lt;p&gt;
Ein paar Informationen zum .NET Framework und der Installation&amp;nbsp;gibt es &lt;a href="http://msdn.microsoft.com/windowsvista/support/relnotes/netfx3/default.aspx"&gt;hier&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Hier die Downloadlinks für die einzelnen Downloads:
&lt;/p&gt;
&lt;p&gt;
net 3.0 runtime -&amp;gt; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC" target=_blank&gt;&lt;font color=#355ea0&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC
&lt;/font&gt;&lt;/a&gt;&lt;font color=#355ea0&gt;340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
sdk -&amp;gt; &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74726"&gt;&lt;font color=#355ea0&gt;http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74726&lt;/font&gt;&lt;/a&gt; 
&lt;p&gt;
visual studio extensions for WF -&amp;gt; &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=4&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74727"&gt;&lt;font color=#355ea0&gt;http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=4&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74727&lt;/font&gt;&lt;/a&gt; 
&lt;p&gt;
visual studio extensions for WCF, WPF (noch CTP !1) -&amp;gt; &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74725"&gt;&lt;font color=#355ea0&gt;http://www.microsoft.com/downloads/info.aspx?na=40&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;u=http%3a%2f%2fgo.microsoft.com%2ffwlink%2f%3fLinkId%3d74725&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=894df70e-dcb6-410d-8e91-69711d0e801c" /&gt;</description>
      <category>.NET</category>
      <category>.NET 3.0</category>
      <category>Allgemein</category>
      <category>Software</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.dotnetnukeblog.de/Trackback.aspx?guid=5e0f841d-6835-4234-bc0d-cbc3aa5ff246</trackback:ping>
      <pingback:server>http://www.dotnetnukeblog.de/pingback.aspx</pingback:server>
      <pingback:target>http://www.dotnetnukeblog.de/PermaLink,guid,5e0f841d-6835-4234-bc0d-cbc3aa5ff246.aspx</pingback:target>
      <dc:creator>Daniel M</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Gestern abend war ich mal wieder auf einem Techtalk zum Thema: 
</p>
        <p>
"Teile und herrsche: Verteilte Lösungen mit der Windows Communication Foundation"
</p>
        <p>
Hier bot Christian Weyer eine echt klasse "Show" und vermittelte eine sehr gute Einführung
in das Thema SO (ohne "a") und WCF. Dabei wurden den Zuhöreren aber keine Slides
um die Köpfe geschmießen, sondern Christian arbeitet mit Flipcharts und vielen Code-Beispielen.
Man konnte das erzählte meist direkt in der Praxis sehen und somit vielfach deutlich
schneller verstehen.
</p>
        <p>
Ende des Jahres gibt es eine weiter Beispielanwendung TecTv, das viele Bereiche des
neuen .NET Frameworks 3.0 zeig... also WCF, WPF, WWF. Darauf darf man gespannt sein.
</p>
        <img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=5e0f841d-6835-4234-bc0d-cbc3aa5ff246" />
      </body>
      <title>Techtalk Indigo / WCF mit Christian Weyer</title>
      <guid isPermaLink="false">http://www.dotnetnukeblog.de/PermaLink,guid,5e0f841d-6835-4234-bc0d-cbc3aa5ff246.aspx</guid>
      <link>http://www.dotnetnukeblog.de/Techtalk+Indigo+WCF+Mit+Christian+Weyer.aspx</link>
      <pubDate>Wed, 06 Sep 2006 09:37:17 GMT</pubDate>
      <description>&lt;p&gt;
Gestern abend war ich mal wieder auf einem Techtalk zum Thema: 
&lt;/p&gt;
&lt;p&gt;
"Teile und herrsche: Verteilte Lösungen mit der Windows Communication Foundation"
&lt;/p&gt;
&lt;p&gt;
Hier bot Christian Weyer eine echt klasse "Show" und vermittelte eine sehr gute Einführung
in das Thema SO (ohne "a")&amp;nbsp;und WCF. Dabei wurden den Zuhöreren aber keine Slides
um die Köpfe geschmießen, sondern Christian arbeitet mit Flipcharts und vielen Code-Beispielen.
Man konnte das erzählte meist direkt in der Praxis sehen und somit vielfach deutlich
schneller verstehen.
&lt;/p&gt;
&lt;p&gt;
Ende des Jahres gibt es eine weiter Beispielanwendung TecTv, das viele Bereiche des
neuen .NET Frameworks 3.0 zeig... also WCF, WPF, WWF. Darauf darf man gespannt sein.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dotnetnukeblog.de/aggbug.ashx?id=5e0f841d-6835-4234-bc0d-cbc3aa5ff246" /&gt;</description>
      <category>.NET 3.0</category>
      <category>WCF</category>
    </item>
  </channel>
</rss>