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

<channel>
	<title>Andreas Awenius' blog</title>
	<atom:link href="http://www.awenius.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.awenius.de/blog</link>
	<description>Infos zu .NET und Modellierung</description>
	<lastBuildDate>Mon, 20 Jun 2011 21:15:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Visual Studio 2010 SP1 enthält bereits die Silverlight Tools</title>
		<link>http://www.awenius.de/blog/2011/06/08/visual-studio-2010-sp1-enthalt-bereits-die-silverlight-tools/</link>
		<comments>http://www.awenius.de/blog/2011/06/08/visual-studio-2010-sp1-enthalt-bereits-die-silverlight-tools/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 09:21:49 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=180</guid>
		<description><![CDATA[Hallo,
kürzlich wollte ich die SilverLight Tools installieren, um mich mit dieser Technologie etwas vertraut zu machen.
Obwohl der Rechner alle Voraussetzungen erfüllte, bekam ich bei der Installation der SilverLight Tools die Meldung:
Es muss eine Version von Visual Studio 2010, Visual Web Developer Express 2010 oder Visual Phone Developer Express 2010 installiert sein, die der Sprachversion von [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>kürzlich wollte ich die SilverLight Tools installieren, um mich mit dieser Technologie etwas vertraut zu machen.</p>
<p>Obwohl der Rechner alle Voraussetzungen erfüllte, bekam ich bei der Installation der SilverLight Tools die Meldung:</p>
<p><em>Es muss eine Version von Visual Studio 2010, Visual Web Developer Express 2010 oder Visual Phone Developer Express 2010 installiert sein, die der Sprachversion von Silverlight Tools 4 entspricht, bevor die Installation von Silverlight Tools fortgesetzt werden kann. Andere Sprachversionen von Silverlight Tools sind unter folgender URL verfügbar: <a href="http://go.microsoft.com/fwlink/?LinkId=177432">http://go.microsoft.com/fwlink/?LinkId=177432</a>.</em><br />
<img class="aligncenter size-full wp-image-181" title="SilverlightToolsVoraussetzungen" src="http://www.awenius.de/blog/wp-content/uploads/2011/06/SilverlightToolsVoraussetzungen.png" alt="SilverlightToolsVoraussetzungen" width="546" height="472" /></p>
<p>Eine kurze Recherche brachte dann die <a href="http://social.msdn.microsoft.com/Forums/hu-HU/vssetup/thread/326e7368-d071-4588-bba8-8591be3c9e39">Lösung</a>: die Silverlight Tools sind in Visual Studio SP 1 bereits enthalten, siehe folgendes Zitat aus den <a href="http://support.microsoft.com/kb/983509">release notes des SP1</a>:</p>
<p><strong>Silverlight-4-Unterstützung</strong><br />
Microsoft Silverlight 4 Tools für Visual Studio 2010 ist in Visual Studio 2010 SP1 enthalten.</p>
<p>Schade, dass Microsoft den Installer für die Silverlight Tools nicht an das SP1 für Visual Studio angepasst hat.</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Silverlight" rel="tag">Silverlight</a>, <a href="http://technorati.com/tag/Silverlight+Tools" rel="tag"> Silverlight Tools</a>, <a href="http://technorati.com/tag/Visual+Studio+2010" rel="tag"> Visual Studio 2010</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/06/08/visual-studio-2010-sp1-enthalt-bereits-die-silverlight-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tipps zur Arbeit mit mehrsprachigen SilverStripe-Websites</title>
		<link>http://www.awenius.de/blog/2011/06/05/tipps-zur-arbeit-mit-mehrsprachigen-silverstrip-websites/</link>
		<comments>http://www.awenius.de/blog/2011/06/05/tipps-zur-arbeit-mit-mehrsprachigen-silverstrip-websites/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 09:47:49 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Sonstiges]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=173</guid>
		<description><![CDATA[Hallo,
ich benutze für eine Website, die ich betreue, das Content Management System SilverStripe. Im Großen und Ganzen bin ich damit zufrieden, aber die Dokumentation hat durchaus noch Verbesserungspotential. Kürzlich habe ich begonnen, für die erwähnte Website Unterstützung für mehrere Sprachen hinzuzufügen.
Dabei muss der Support für Übersetzungen auch für sog. &#8220;custom attributes&#8221; &#8211; quasi selbst definierte [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>ich benutze für eine Website, die ich betreue, das Content Management System <a href="http://www.silverstripe.org/">SilverStripe</a>. Im Großen und Ganzen bin ich damit zufrieden, aber die Dokumentation hat durchaus noch Verbesserungspotential. Kürzlich habe ich begonnen, für die erwähnte Website Unterstützung für mehrere Sprachen hinzuzufügen.</p>
<p>Dabei muss der Support für Übersetzungen auch für sog. &#8220;custom attributes&#8221; &#8211; quasi selbst definierte Felder zur Eingabe von strukturierter Information für Seiten eines bestimmten Typs &#8211; explizit hinzugefügt werden. Weder in der <a href="http://doc.silverstripe.org/sapphire/en/2.4/">offiziellen Dokumentation</a> noch im <a href="http://www.silverstripe-buch.de/">SilverStripe-Buch</a> war dieses Vorgehen beschrieben.</p>
<p>Nach längere Internet-Recherche bin ich schließlich auf die sehr hilfreiche Seite <a href="http://www.balbus.tk/translatable/">http://www.balbus.tk/translatable/</a> gestoßen.</p>
<p>Dort findet man nicht nur einen <a href="https://github.com/silverstripe/silverstripe-translatable/blob/master/docs/en/index.md">Link auf die fehlende Dokumentation</a>, sondern auch eine direkte Beschreibung der Lösung, im Abschnitt &#8216;Translatable fields &#8211; hints&#8217;.</p>
<p>Ganz generell enthält die Seite eine Menge nützlicher Informationen zum Arbeiten mit mehrsprachigen SilverStripe-Websites.</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/SilverStripe" rel="tag">SilverStripe</a>, <a href="http://technorati.com/tag/mehrsprachig" rel="tag">mehrsprachig</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/06/05/tipps-zur-arbeit-mit-mehrsprachigen-silverstrip-websites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interfaces in C#</title>
		<link>http://www.awenius.de/blog/2011/05/02/interfaces-in-c/</link>
		<comments>http://www.awenius.de/blog/2011/05/02/interfaces-in-c/#comments</comments>
		<pubDate>Mon, 02 May 2011 08:39:16 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=164</guid>
		<description><![CDATA[Hallo,
kürzlich habe ich zur Auffrischung meines C#-Wissens die neue Auflage von &#8220;Effective C#&#8220;  bestellt und begonnen, die einzelnen Items durchzuschauen. Das Item 23 &#8220;Understand How Interfaces differ from Virtual Methods&#8221; hat mich dann doch einigermaßen beeindruckt, gibt es doch einen Eindruck von der Fülle an Konzepten die zum Thema &#8220;Interfaces&#8221; in C# relevant sind. Beim [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>kürzlich habe ich zur Auffrischung meines C#-Wissens die neue Auflage von &#8220;<a href="http://www.amazon.de/Effective-covers-4-0-Specific-Development/dp/0321658701/ref=sr_1_1?ie=UTF8&amp;qid=1303830103&amp;sr=8-1">Effective C#</a>&#8220;  bestellt und begonnen, die einzelnen Items durchzuschauen. Das Item 23 &#8220;Understand How Interfaces differ from Virtual Methods&#8221; hat mich dann doch einigermaßen beeindruckt, gibt es doch einen Eindruck von der Fülle an Konzepten die zum Thema &#8220;Interfaces&#8221; in C# relevant sind. Beim Versuch eine Webpage oder Blog-posting zu finden, in dem ein mehr oder weniger vollständiger Überblick über dieses Thema gegeben wird, habe ich aber nichts brauchbares gefunden. Die meisten Fundstellen waren Einführungen in das Thema Interfaces im allgemeinen und begnügten sich damit, das Konzept vorzustellen und zu motivieren.</p>
<p>In diesem Posting versuche ich einen eher Referenz-artigen aber hoffentlich vollständigen Überblick über die Eigenheiten und Möglichkeiten von Interfaces in C# zu geben. Das Konzept an sich und die übliche Verwendung werde ich nicht weiter Erläutern.</p>
<p><strong>Methoden in Interfaces sind per default nicht virtuell</strong></p>
<p>Per default sind Methoden in Interfaces nicht virtuell. D.h. wenn eine Objektreferenz den Typ des Interfaces hat, wird immer die Methode der obersten Klasse in der Vererbungshierarchie gerufen, die die Methode implementiert. Die erneute Implementierung einer Interfaces-Methode in einer abgeleiteten Klasse ist überhaupt nur unter Verwendung des Schlüsselwortes <em>new </em>möglich,  was bereits auf das beschriebene Verhalten hinweist.</p>
<p><strong>Interfaces können in verschiedenen Ebenen der Vererbungshierarchie implementiert werden</strong></p>
<p>Wenn man von einer vorhandenen Klasse ableitet und mit deren Implementierung eines Interfaces nicht zufrieden ist, besteht die Möglichkeit, das Interface in der abgeleiteten Klasse erneut zu implementieren. Dazu erklärt man auch in der abgeleiteten Klasse, dass man das Interface definiert. In diesem Fall wird bei Verwendung einer Objektreferenz vom Typ des Interfaces die &#8220;tiefstmögliche&#8221; (bezogen auf die Vererbungshierarchie) Implementierung gerufen.</p>
<p>Dieses Vorgehen ist aber auch nicht ganz unproblematisch:</p>
<ul>
<li>Die Verwendung des Schlüsselwortes <em>new</em> ist immer noch nötig</li>
<li>Es müssen alle Methoden des Interfaces implementiert werden, auch wenn man nur eine Teilmenge ersetzen will</li>
<li>Wenn man eine Referenz mit dem Typ einer direkten oder indirekten Superklasse zum Aufruf einer Methode verwendet, die Teil des Interfaces ist, wird die Implementierung des Klasse, die dem Typ der Referenz entspricht, gerufen. Dieses Verhalten ist bei virtuellen Methoden gerade nicht so.</li>
</ul>
<p><strong>Methoden in Interfaces können <em>abstract</em> definiert werden</strong></p>
<p>Wenn eine Klasse als <em>abstract</em> definiert ist, dürfen auch Methoden aus Interfaces (die in einer Klasse, die ein Interface implementiert, eigentlich auch implementiert sein müssen) als <em>abstract</em> definiert sein. In diesem Fall müssen diese Methoden in der Basisklasse nicht implementiert werden. Die abgeleiteten Klassen müssen die Methode dann implementieren. Damit könnte man z.B. in einer gemeinsamen Basisklasse sinnvolle Default-Implementierungen einer Teilmenge der Interface-Member implementieren während man von den abgeleiteten Klassen erwartet, dass sie die restlichen Member des Interfaces selbst implementieren.</p>
<p><strong>Methoden in Interfaces können virtuell sein</strong></p>
<p>Wie bei normalen Methoden (die kein Bestandteil eines Interfaces sind) kann eine Methode als <em>virtual </em>deklariert werden und verhält sich dann entsprechend. D.h. es wird immer die Implementierung in der tiefsten Ebene der Vererbungshierarchie gerufen, egal welchen Typ die Referenz hat, über die man die Methode aufruft.<br />
Dazu muss die Methode in der Interface-Definition nicht <em>virtual</em> sein.</p>
<p><strong>Es ist möglich, mehrere Interfaces zu implementieren, die die gleichen Member haben</strong></p>
<p>Grundsätzlich kann eine Klasse einen gegebenen Member nur einmal implementieren. Nun ist es nicht unrealistisch, dass man in einer Klasse mehrere Interfaces implementiert und die Gefahr identischer Member in zwei oder mehr Interfaces ist durchaus real. Dieses Problem lässt sich einfach lösen, indem vor jeder Implementierung eines Members der Interfaces-Name vorangestellt wird. Diese explizite Qualifizierung  muss dann auch beim Aufruf der Methode verwendet werden, sofern nicht eine Referenz vom Typ eines der Interfaces verwendet wird (sondern eine Referenz auf die konkrete Klasse).</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/C%23" rel="tag">C#</a>, <a href="http://technorati.com/tag/Interface" rel="tag">Interface</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/05/02/interfaces-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Der neue HelpViewer in Visual Studio 2010 Service Pack (SP) 1</title>
		<link>http://www.awenius.de/blog/2011/04/25/der-neue-helpviewer-in-visual-studio-2010-service-pack-sp-1/</link>
		<comments>http://www.awenius.de/blog/2011/04/25/der-neue-helpviewer-in-visual-studio-2010-service-pack-sp-1/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 17:57:46 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=147</guid>
		<description><![CDATA[Hallo,
wie in meinem letzten Posting beschrieben, hat Microsoft mit dem Service Pack 1 endlich wieder einen &#8220;richtigen&#8221; HelpViewer bereitgestellt.
Das war dann auch der einzige Grund, warum ich das Service Package installiert habe.
Leider scheint mir der neue HelpViewer noch nicht optiomal in Visual Studio eingebunden, weshalb ich hier die Schritte zu einer sinnvollen Konfiguration dokumentieren möchte.
Zunächst [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>wie in meinem <a href="http://www.awenius.de/blog/2011/02/20/neues-hilfesystem-fur-visual-studio-2010-mit-service-pack-1/">letzten Posting</a> beschrieben, hat Microsoft mit dem Service Pack 1 endlich wieder einen &#8220;richtigen&#8221; HelpViewer bereitgestellt.</p>
<p>Das war dann auch der einzige Grund, warum ich das Service Package installiert habe.</p>
<p>Leider scheint mir der neue HelpViewer noch nicht optiomal in Visual Studio eingebunden, weshalb ich hier die Schritte zu einer sinnvollen Konfiguration dokumentieren möchte.</p>
<p>Zunächst muss die Hilfe so konfiguriert werden, dass die &#8220;lokale Hilfe&#8221; verwendet wird. Bleibt man bei der &#8220;Onlinehilfe&#8221;, ändert sich am Verhalten nichts, d.h. wenn Hilfe angefordert wird, wird der Browser gestartet und lädt eine mehr oder weniger passende Seite von der<a href="http://msdn.microsoft.com"> msdn-Website</a>.</p>
<p>Um die lokale Hilfe auszuwählen, muss man den &#8220;Hilfebibliotheks-Manager&#8221; starten, z.B. über den Eintrag &#8220;Hilfeeinstellungen verwalten&#8221; im Menü Hilfe.</p>
<p>Dann klickt man auf &#8220;Onlinehilfe oder lokale Hilfe auswählen&#8221; und wählt anschließend &#8220;Ich möchte die lokale Hilfe verwenden&#8221;.</p>
<div id="attachment_148" class="wp-caption aligncenter" style="width: 581px"><img class="size-full wp-image-148" title="LokaleHilfeAuswaehlen" src="http://www.awenius.de/blog/wp-content/uploads/2011/04/LokaleHilfeAuswaehlen.png" alt="Lokale Hilfe auswählen" width="571" height="388" /><p class="wp-caption-text">Lokale Hilfe auswählen</p></div>
<p>Danach ist man aber noch nicht viel weiter, da (zumindest bei meiner  Installation) noch keine lokalen Inhalte für die Hilfe vorliegen. Diese  müssen nun durch Klick auf &#8220;Inhalt von Online-Speicherort installieren&#8221;  lokal installiert werden.<br />
Der Hilfebibliotheksmanager lädt dann eine Liste mit abrufbaren Inhalten  und zeigt diese in einer baumartigen Sicht an. Dort klickt man nun für  jedes gewünschte Paket auf den Link &#8216;Hinzufügen&#8217;.</p>
<p>In folgendem Beispiel wurde als letztes die Hilfe für &#8220;Visual C#&#8221; ausgewählt:</p>
<div id="attachment_151" class="wp-caption aligncenter" style="width: 581px"><img class="size-full wp-image-151" title="HilfeDateienAuswaehlen" src="http://www.awenius.de/blog/wp-content/uploads/2011/04/HilfeDateienAuswaehlen.png" alt="Auswahl einzelner Hilfepakete" width="571" height="388" /><p class="wp-caption-text">Auswahl einzelner Hilfepakete</p></div>
<p>Die Aktualisierung der geschätzten Downloadgröße nach der Aus- oder Abwahl eines Paketes dauert einen Moment. Nach einem Klick auf &#8220;Aktualisieren&#8221; werden die Hilfeinhalten dann geladen und lokal installiert.</p>
<p>Nach dem der äußerst langsamen Download (ca. 200 KBit/s) wollte ich dann ein Gefühl für die Qualität der Suche bekommen.</p>
<p>Die Eingabe des Suchbegriffes std::vector brachte als Ergebnisse &#8220;Implementing an STL based collection&#8221;, &#8220;checked_array_iterator Class&#8221; usw. Kein einziger der zwanzig Treffer hatte etwas mit der gewünschten Klasse, welche eine essentielle Klasse der C++ Standardbibliothek ist, zu tun. Wenig überraschend wurde das Ergebnis nicht besser, wenn man den Namensraum std:: wegläßt. Das ist ein sehr schwaches Ergebnis und disqualifiziert den HelpViewer als direktes Frontend für Suchen in der Hilfe.</p>
<p>Eine weitere wichtige Frage besteht darin, ob der HelpViewer effizient Hilfe für Begriffe aus einem Quelltext anzeigt. Immerhin kennt die IDE den genauen Typ jedes Tokens und hat damit alle Informationen, die benötigt werden, um eine eindeutige und korrekte Hilfe anzuzeigen.<br />
Leider wird diese Hoffnung nicht erfüllt, wie man an diesem kleinen Beispiel sieht:</p>
<p><em>if (getElements().size() != rhs-&gt;getElements().size())</em></p>
<p>getElements() liefert eine Instantiierung von std::map zurück. Die IDE &#8220;weiß&#8221; das auch, wie man an dem tooltip für das token &#8217;size&#8217; sieht oder auch den Möglichkeiten, die die &#8220;member completion&#8221; anbietet.</p>
<p>Der HelpViewer zeigt allerdings die Seite für hash_set::size() an, was nicht korrekt ist. Die Hilfe für Schlüsselwörter, die eindeutig sind (z.B. <em>auto_ptr</em>) wird korrekt angezeigt, was aber auch keine große Leistung ist.</p>
<p>Insgesamt bleibt ein enttäuschender Eindruck. Zumindest für C++-Entwickler die viel mit der C++ Standard-Bibliothek arbeiten, stellt der HelpViewer keine Verbesserung dar.</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Visual+Studio+2010" rel="tag">Visual Studio 2010</a>, <a href="http://technorati.com/tag/SP1" rel="tag">SP1</a>, <a href="http://technorati.com/tag/HelpViewer" rel="tag">HelpViewer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/04/25/der-neue-helpviewer-in-visual-studio-2010-service-pack-sp-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neues Hilfesystem für Visual Studio 2010 mit Service Pack 1</title>
		<link>http://www.awenius.de/blog/2011/02/20/neues-hilfesystem-fur-visual-studio-2010-mit-service-pack-1/</link>
		<comments>http://www.awenius.de/blog/2011/02/20/neues-hilfesystem-fur-visual-studio-2010-mit-service-pack-1/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 10:34:53 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=141</guid>
		<description><![CDATA[Hallo,
in einem früheren Posting habe ich mein Unverständnis ausgedrückt, dass Microsoft die Hilfe-Funktion in Visual Studio 2010 quasi abgeschafft hat. Auch in Zeiten des Internet und der Suchmaschinen ist eine gute Hilfe-Funktion wichtig.
Nachdem diese Klage ja sehr verbreitet  war, scheint Microsoft ein Einsehen zu haben, und bringt mit dem Service Pack (SP) 1 für Visual [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>in einem <a href="http://www.awenius.de/blog/2010/06/20/visual-c-2010-kann-nur-fur-das-net-framework-4-0-code-erzeugen/">früheren Posting</a> habe ich mein Unverständnis ausgedrückt, dass Microsoft die Hilfe-Funktion in Visual Studio 2010 quasi abgeschafft hat. Auch in Zeiten des Internet und der Suchmaschinen ist eine gute Hilfe-Funktion wichtig.</p>
<p>Nachdem diese Klage ja sehr verbreitet  war, scheint Microsoft ein Einsehen zu haben, und <a href="http://thirdblogfromthesun.com/2010/10/the-story-of-help-in-visual-studio-2010-part-3/">bringt mit dem Service Pack (SP) 1 für Visual Studio 2010 wieder eine richtige Hilfe-Funktion</a>.<br />
Ich bin sicher, dass der lokale Help-Viewer eine Verbesserung gegenüber der aktuellen Situation darstellt.</p>
<p>An der fehlenden Intellisense-Funktion für managed C++/CLI (managed C++), die ja auch viele Benutzer vermissen, <a href="https://connect.microsoft.com/VisualStudio/feedback/details/626825/intellisense-not-working-with-vs2010-c-cli-projects">scheint sich nichts getan zu haben</a>. Microsoft scheint hier auch einen der Nachteile einer &#8216;buy&#8217;-Lösung zu erfahren: die fehlende Möglichkeit der individuellen Anpassung. Vermutlich lässt sich der hinzugekaufte Compiler der Edison Design Group, der ja <a href="http://blogs.msdn.com/b/vcblog/archive/2009/05/27/rebuilding-intellisense.aspx">in Visual Studio 2010 für die Bereitstellung der Intellisense-Fetaures in C++ verwendet wird</a>, nicht ohne weiteres so erweitern, dass er mit den Spracherweiterungen von C++/CLI vernünftig umgeht.</p>
<p>Auf der anderen Seite muss man sagen, dass der Intellisense-Support für Standard C++ in Visual Studio 2010 viel besser ist als in älteren Versionen von Visual Studio und die Produktivität spürbar steigert. Insbesondere, dass Fehler direkt beim Tippen angezeigt werden, ist eine große Hilfe (man könnte auch sagen, dass dieses Feature langsam überfällig war).</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Visual+Studio+2010" rel="tag">Visual Studio 2010</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/02/20/neues-hilfesystem-fur-visual-studio-2010-mit-service-pack-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bessere Suchergebnisse mit dem &#8220;Google-Code&#8221;</title>
		<link>http://www.awenius.de/blog/2011/01/16/bessere-suchergebnisse-mit-dem-google-code/</link>
		<comments>http://www.awenius.de/blog/2011/01/16/bessere-suchergebnisse-mit-dem-google-code/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 16:06:17 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Sonstiges]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=133</guid>
		<description><![CDATA[Hallo,
kürzlich bin ich beim Stöbern in der Buchhandlung auf das kleine Büchlein &#8220;Der Google-Code&#8221; (Untertitel: Das Geheimnis der besten Suchergebnisse)  von Henk van Ess gestoßen.
Da ein effiziente Nutzung von Suchmaschinen für Wissensarbeiter aller Art &#8211; und insbesondere für Softwareentwickler &#8211; eine erhebliche Effizienz-Verbesserung bedeutet, habe ich es mir angeschaut und spontan gekauft. Das Buch ist [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>kürzlich bin ich beim Stöbern in der Buchhandlung auf das kleine Büchlein &#8220;<a href="http://www.amazon.de/Google-Code-Das-Geheimnis-besten-Suchergebnisse/dp/382733036X/ref=sr_1_1?ie=UTF8&amp;qid=1295193744&amp;sr=8-1">Der Google-Code</a>&#8221; (Untertitel: Das Geheimnis der besten Suchergebnisse)  von<a href="http://www.searchbistro.com/"> Henk van Ess</a> gestoßen.</p>
<p>Da ein effiziente Nutzung von Suchmaschinen für Wissensarbeiter aller Art &#8211; und insbesondere für Softwareentwickler &#8211; eine erhebliche Effizienz-Verbesserung bedeutet, habe ich es mir angeschaut und spontan gekauft. Das Buch ist sehr kompakt, flüssig zu lesen und gibt einige nützliche Tipps zum Umgang mit Google.</p>
<p>Die Kernpunkte sind:</p>
<ul>
<li>Google ist nicht perfekt</li>
<li>Es gibt auch noch andere Suchmaschinen als Google</li>
<li>Die nützlichsten Operatoren für die Suche (site:, inurl: bestimmte Begriffe erfordern oder vermeiden mit &#8216;+&#8217; und &#8216;-&#8217;, die Möglichkeit Intervalle für Zahlen oder Datumswerte einzugeben, Einschränkung auf bestimmte Dateitypen)</li>
<li>Bei der Formulierung der Anfrage Teile der Antwort vor wegnehmen</li>
<li>Wie kann man die Zuverlässigkeit von Suchergebnissen überprüfen</li>
</ul>
<p>Insgesamt ein sehr empfehlenswertes Buch, das weder viel Geld noch viel Zeit kostet.</p>
<p>Viele Grüße,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/01/16/bessere-suchergebnisse-mit-dem-google-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSDN-Tourbus</title>
		<link>http://www.awenius.de/blog/2011/01/10/msdn-tourbus/</link>
		<comments>http://www.awenius.de/blog/2011/01/10/msdn-tourbus/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 13:42:25 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Sonstiges]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=127</guid>
		<description><![CDATA[Hallo zusammen,
Microsoft probiert eine witzige Idee, um seine Produkte besser zu promoten: ein Spezialbus fährt durch Deutschland und hält an vordefinierten Orten, kann aber auch individuell bestellt werden.
Im Bus gibt es die Möglichkeit bis zu zwei Vorträge gleichzeitig anzubieten und Software auszuprobieren. Der Bus ist ab 26.01.2011 unterwegs und startet in München. Es gibt auch [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo zusammen,</p>
<p>Microsoft probiert eine witzige Idee, um seine Produkte besser zu promoten: ein <a href="http://www.msdn-on-tour.de/">Spezialbus fährt durch Deutschland</a> und hält an vordefinierten Orten, kann aber auch individuell bestellt werden.</p>
<p>Im Bus gibt es die Möglichkeit bis zu zwei Vorträge gleichzeitig anzubieten und Software auszuprobieren. Der Bus ist ab 26.01.2011 unterwegs und startet in München. Es gibt auch ein <a href="http://www.msdn-on-tour.de/blog/default.aspx">Blog</a> dazu.</p>
<p>Ein wenig schade ist nur, dass bisher kein Tagesplan bekannt ist. Man kann der Website zwar entnehmen, an welchen Tagen und zu welchen Zeiten der Bus an einem bestimmten Ort ist, aber (noch)  nicht, welche Vorträge bzw. andere Veranstaltungen zu welchen Zeiten geplant sind.</p>
<p>Viele Grüße,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2011/01/10/msdn-tourbus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More C++ Idioms</title>
		<link>http://www.awenius.de/blog/2010/08/02/more-c-idioms/</link>
		<comments>http://www.awenius.de/blog/2010/08/02/more-c-idioms/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 07:45:49 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=120</guid>
		<description><![CDATA[Hallo,
wer sich für C++ interessiert und seinen Horizont erweitern will sollte mal auf die Seite &#8220;More C++ Idioms&#8221; auf wikibooks.org anschauen.
Dabei kann man nicht nur bekannte C++ Pattern wie Empty Base Class Optimization oder Copy-and-swap wiederholen sondern sich auch interessante neue Ideen aneignen, wie z.B. Safe bool.
Aber Achtung: im Gegensatz zu der Angabe auf der [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>wer sich für C++ interessiert und seinen Horizont erweitern will sollte mal auf die Seite <a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms">&#8220;More C++ Idioms&#8221;</a> auf <a href="http://en.wikibooks.org/wiki/Main_Page">wikibooks.org</a> anschauen.</p>
<p>Dabei kann man nicht nur bekannte C++ Pattern wie <a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Empty_Base_Optimization">Empty Base Class Optimization</a> oder <a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-and-swap">Copy-and-swap</a> wiederholen sondern sich auch interessante neue Ideen aneignen, wie z.B. <a href="http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Safe_bool">Safe bool</a>.</p>
<p>Aber Achtung: im Gegensatz zu der Angabe auf der Seite würde ich die Anforderungen an die Leser nicht als &#8220;intermediate&#8221; sondern als &#8220;advanced&#8221; einstufen.</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/C%2B%2B" rel="tag">C++</a>, <a href="http://technorati.com/tag/Pattern" rel="tag"> Pattern</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2010/08/02/more-c-idioms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einschränkungen beim Debuggen mit mixed moded Anwendungen im 64-Bit Modus</title>
		<link>http://www.awenius.de/blog/2010/06/27/einschrankungen-beim-debuggen-mit-mixed-moded-anwendungen-im-64-bit-modus/</link>
		<comments>http://www.awenius.de/blog/2010/06/27/einschrankungen-beim-debuggen-mit-mixed-moded-anwendungen-im-64-bit-modus/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 19:57:04 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=103</guid>
		<description><![CDATA[Hallo,
kürzlich bekam ich vom Visual Studio 2010 Debugger beim Starten einer Anwendung folgende Fehlermeldung:
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
Microsoft Visual Studio
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
Fehler beim Ausführen des Projekts: Das Programm &#8220;&#8230;\unittest\bin\Debug\unittest.exe&#8221; kann nicht gestartet werden.
Das Debuggen im gemischten Modus für x64-Prozesse wird nur bei Verwendung von Microsoft .NET Framework vor Version 4 unterstützt.
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
OK   Hilfe
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
Die Konstellation war dabei folgende:

Ein reines C#-Programm referenziert eine Assembly, [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>kürzlich bekam ich vom Visual Studio 2010 Debugger beim Starten einer Anwendung folgende Fehlermeldung:</p>
<blockquote><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Microsoft Visual Studio<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Fehler beim Ausführen des Projekts: Das Programm &#8220;&#8230;\unittest\bin\Debug\unittest.exe&#8221; kann nicht gestartet werden.</p>
<p>Das Debuggen im gemischten Modus für x64-Prozesse wird nur bei Verwendung von Microsoft .NET Framework vor Version 4 unterstützt.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
OK   Hilfe<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p></blockquote>
<p>Die Konstellation war dabei folgende:</p>
<ul>
<li>Ein reines C#-Programm referenziert eine Assembly, die mit managed C++ erstellt war. Diese Assembly bindet auch native code ein (mixed mode).</li>
<li>Als Compiler wurde der vc90 verwendet.</li>
<li>Als Targetversion für das .NET-Framework wurde für alle Komponenten 2.0 verwendet.</li>
<li>Alle Anwendungen waren als 32-Bit-Anwendungen in Visual Studio 2008 erstellt und wurden von Visual Studio 2010 zur Version 2010 konvertiert.</li>
</ul>
<p>Für die in C# erstellte (reine .NET) Anwendung war in den Einstellungen als Zielplattform &#8220;Any CPU&#8221; eingetragen, wie bereits in der Vorgängerversion:</p>
<p><img class="alignleft size-full wp-image-107" title="AnyCPU" src="http://www.awenius.de/blog/wp-content/uploads/2010/06/AnyCPU2.png" alt="AnyCPU" width="387" height="36" /></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">Nach der Umstellung auf X86 konnte die Anwendung erfolgreich im Debugger gestartet werden.</p>
<p><img class="alignleft size-full wp-image-105" title="X86" src="http://www.awenius.de/blog/wp-content/uploads/2010/06/X86.png" alt="X86" width="383" height="34" /></p>
<p>Die Fehlermeldung ist grundsätzlich ziemlich irreführend. Alle beteiligten Komponenten waren ja explizit für .NET 2.0 konfiguriert.</p>
<p>Oder ist sie gar falsch?</p>
<p>Auf <a href="http://msdn.microsoft.com/de-de/library/ms184681.aspx">dieser Seite</a> findet man folgendes Zitat:</p>
<blockquote><p><span id="xn29_db15abbc0f57576bc6cfd4a341858a19">Debugging  im gemischten Modus (Aufrufe von systemeigenem Code bis zu verwalteten  Codes, oder umgekehrt) wird für x64-Prozesse unterstützt, wenn der  verwaltete Code Microsoft .NET Framework, Version 4 oder höher,  verwendet.</span></p>
<p><span id="xn30_02695e6e38b9f206b8b6137aa93f0c7b">Debugging im gemischten Modus wird nicht für  IA64-Prozesse oder x64-Prozesse unterstützt, die frühere .NET  Framework-Versionen als 4 verwenden.</span></p></blockquote>
<p><span>was ja ein klarer Gegensatz zur oben zitieren Fehlermeldung ist.</span></p>
<p><span>Grundsätzlich ist es schon etwas unschön, wenn man für die reine .NET-Komponent nicht mehr &#8220;Any CPU&#8221; wählen kann, nur weil sie eine mixed mode Assembly nutzt, die im 32-Bit Modus erstellt wurde.</span></p>
<p><span>Eine Rolle könnte auch spielen, dass ich inzwischen Windows 7 x64 benutze, während ich zuvor Windows XP X86 verwendet habe.<br />
</span></p>
<p><span>Viele Grüße,<br />
Andreas<br />
</span></p>
<p><span><p>Technorati Tags: <a href="http://technorati.com/tag/Visual+Studio" rel="tag">Visual Studio</a>, <a href="http://technorati.com/tag/mixed+mode" rel="tag">mixed mode</a>, <a href="http://technorati.com/tag/debugging" rel="tag">debugging</a></p><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2010/06/27/einschrankungen-beim-debuggen-mit-mixed-moded-anwendungen-im-64-bit-modus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual C++ 2010 kann nur für das .NET Framework 4.0 Code erzeugen</title>
		<link>http://www.awenius.de/blog/2010/06/20/visual-c-2010-kann-nur-fur-das-net-framework-4-0-code-erzeugen/</link>
		<comments>http://www.awenius.de/blog/2010/06/20/visual-c-2010-kann-nur-fur-das-net-framework-4-0-code-erzeugen/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 15:58:24 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=92</guid>
		<description><![CDATA[Erfahrungen mit Visual C++ 2010]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>vor einiger Zeit bin ich zu dem Schluss gekommen, meine Entwicklungsumgebung auf Basis von Windows 7 und Visual Studio 2010 neu aufzusetzen. Nach der Konvertierung der C++ Projekte wurde in einer Solution mit C# und C++ Projekten folgende Warnung ausgegeben:</p>
<blockquote><p>Warnung    2    Auf das Projekt &#8220;xxx&#8221; kann nicht verwiesen werden.  Das Projekt, auf das verwiesen wird, hat eine höhere Frameworkversion (&#8221;4.0&#8243;) als Ziel.</p></blockquote>
<p>In der ursprünglichen Solution war für alle Projekt das .NET Framework 2.0 als Targetversion eingetragen. Das war aus gutem Grund so, da die erstellte Anwendung für den Download über das Internet bereit gestellt wird und auf möglichst vielen Computern ohne weitere Vorbereitungen eingesetzt werden soll.</p>
<p>Eine Erklärung für die implizite Erhöhung der Targetversion für Managed C++ Projekte finden sich in <a href="http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx">diesem Blog-Eintrag</a> mit einem &#8220;Visual Studio 2010 C++ Project Upgrade Guide&#8221;:</p>
<blockquote><p>After conversion, managed C++ projects will target the 4.0 Framework by default.  The reason behind this design is that the VS2010 compiler cannot target Framework 2.0, 3.0 or 3.5. The VS2008 compiler must be used to target 2.0, 3.0 or 3.5. To make the converted C++ application build out of box, we decided to move the TargetFrameWorkVersion to 4.0 by default for C++ applications.</p></blockquote>
<p>Oops! Mit Visual Studio 2010 können keine Managed C++ Anwendungen für .NET Framework Versionen &lt; 4.0 erstellt werden!</p>
<p>Dagegen hilft nur eines:</p>
<blockquote><p>The VS2008 compiler must be used to target 2.0, 3.0 or 3.5.</p></blockquote>
<p>D.h. man ist gezwungen, Visual C++ 2008 zusätzlich zu installieren, wenn man Managed C++ Komponenten erstellen will, die .NET Frameworks &lt; 4.0 als Target haben. Die Änderung der Zielversion geht noch nicht mal in der IDE sondern nur durch <a href="http://msdn.microsoft.com/en-us/library/47w1hdab.aspx">Änderung der Projektdateien in einem Editor</a>.</p>
<p>Ich betrachte das als erhebliche Einschränkung, da man in diesem Fall Visual Studio 2008 zusätzlich installieren (und ggf. kaufen) muss, sondern dann auch die <a href="http://msdn.microsoft.com/en-us/library/dd465215.aspx">schönen neuen C++ Features</a> des Compilers nicht mehr nutzen kann.</p>
<p>Generell habe ich den Eindruck, dass Microsoft sich mit Visual Studio 2010 etwas übernommen hat, und irgendwann einfach die Produktfreigabe beschlossen hat, obwohl es noch viele Probleme und Einschränkungen gab (z.B. wie im obigen Blog-Eintrag beschrieben, oder das <a href="https://connect.microsoft.com/VisualStudio/feedback/details/501921/c-cli-intellisense">Fehlen von Intellisense für Managed C++ </a>oder die <a href="http://stackoverflow.com/questions/2659700/visual-studio-2010-blurry-font">unscharfe Erscheinung der Default-Fonts auf manchen Betriebsystemen </a>oder der erhöhte Speicherbedarf  oder das aus nicht nachvollziehbaren Gründen umgestellte Hilfesystem, das jetzt eigentlich <a href="http://www.itwriting.com/blog/2247-visual-studio-2010-testers-unhappy-with-help.html">unbrauchbar ist</a>.).</p>
<p>Auf der Haben-Seite steht für mich ganz klar der neu implementierte Support für Intellisense (bei native C++ Projekten). Das funktioniert jetzt viel besser als mit Visual C++ und verbessert die Produktivität spürbar.</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Visual+C%2B%2B" rel="tag">Visual C++</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2010/06/20/visual-c-2010-kann-nur-fur-das-net-framework-4-0-code-erzeugen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

