<?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>Martin&#039;s Blog &#187; IDE</title>
	<atom:link href="http://blog.m-ri.de/index.php/category/programmieren/ide/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.m-ri.de</link>
	<description>Gesammeltes aus dem Leben eines &#34;normalen&#34; Programmierers... :-)</description>
	<lastBuildDate>Sat, 04 Feb 2012 12:07:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Für was ist der Makro %(PreprocessorDefinitions) gut ?</title>
		<link>http://blog.m-ri.de/index.php/2011/10/16/fur-was-ist-der-makro-preprocessordefinitions-gut/</link>
		<comments>http://blog.m-ri.de/index.php/2011/10/16/fur-was-ist-der-makro-preprocessordefinitions-gut/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 17:54:35 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[CRT]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS 2008]]></category>
		<category><![CDATA[VS 2010]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[VS-2008]]></category>
		<category><![CDATA[VS-2010]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=903</guid>
		<description><![CDATA[In den C++ Compilereinstellungen finden sich ein vorgegebener Makro %(PreprocessorDefinitions) in den C++ Präprozessor Definitionen. Die Verwendung dieses Makros ist nicht ganz offensichtlich. Dieser Makro sollten in jedem Fall nicht entfernt werden, denn Sie dienen der Übernahme einiger Einstellungen aus der General-Seite für die C++ Projekte. Zum Beispiel werden die Einstellungen für Unicode und MBCS über [...]]]></description>
			<content:encoded><![CDATA[<p>In den C++ Compilereinstellungen finden sich ein vorgegebener Makro <em>%(PreprocessorDefinitions)</em> in den C++ Präprozessor Definitionen. Die Verwendung dieses Makros ist nicht ganz offensichtlich.</p>
<p>Dieser Makro sollten in jedem Fall nicht entfernt werden, denn Sie dienen der Übernahme einiger Einstellungen aus der <em>General</em>-Seite für die C++ Projekte. Zum Beispiel werden die Einstellungen für Unicode und MBCS über den Makro <em>%(PreprocessorDefinitions)</em> in die allgemeinen Compiler-Einstellungen übernommen (die entsprechenden Defines sind <em>_UNICODE; UNICODE; _MBCS </em>).<br />
Erzeugt man eine DLL wird zusätzlich <em>_WINDLL</em> gesetzt.<br />
Setzt man ATL Optionen in der General Seite wird auch über die <em>%(PreprocessorDefinitions) _ATLDLL</em> bzw. <em>_ATL_STATIC_REGISTRY</em> gesetzt oder zurückgesetzt.<br />
Gleiches gilt, wenn die <em>MFC</em> als shared DLL verwendet wird. In diesem Fall wird der Define <em>_AFXDLL</em> zusätzlich gesetzt.</p>
<p>Löscht man also <em>%(PreprocessorDefinitions)</em> dann werden alle diese Einstellungen nicht mehr  korrekt übernommen.</p>
<p>Anmerkung:<br />
Bei dem Linker Makro <em>%(AdditionalDependencies) </em>habe ich eine ähnliche Verwendung vermutet, konnte aber keine direkte Beziehung zur Seite General herstellen.</p>
<p>Obwohl es auch hier Einflüsse auf die Linkereinstellungen gibt bei Änderungen in den <em>General</em>-Einstellungen. Werden allerdings die MFC als zusätzliche Bibliothek ausgewählt werden die Standard-LIBs aus dem SDK komplett entfernt. Hier gibt die MFC Bibliothek selbst vor in welchen zusätzlichen Libs, des SDK gesucht werden soll über #pragma comment(lib,..).</p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2011/10/16/fur-was-ist-der-makro-preprocessordefinitions-gut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSDN Abonnenten können ab Montag den 18.05.2009 Visual Studio 2010 Beta 1 herunterladen</title>
		<link>http://blog.m-ri.de/index.php/2009/05/15/msdn-abonnementen-koennen-ab-montag-den-18052009-visual-studio-2010-beta-1-herunterladen/</link>
		<comments>http://blog.m-ri.de/index.php/2009/05/15/msdn-abonnementen-koennen-ab-montag-den-18052009-visual-studio-2010-beta-1-herunterladen/#comments</comments>
		<pubDate>Fri, 15 May 2009 09:13:33 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS 2010]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[VS-2010]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=464</guid>
		<description><![CDATA[Jihad Dannawi kündigt in seinem Blog die Veröffentlichung von Visual Studio 2010 Beta 1 für MSDN Subscriber an: http://blogs.msdn.com/dannawi/archive/2009/05/15/visual-studio-2010-beta-1-available-for-the-msdn-subscribers-on-monday-may-18th.aspx Dito kann man es auf ZDNet lesen: http://blogs.zdnet.com/microsoft/?p=2769 Ich freue mich schon drauf, ich hoffe es findet sich Zeit mal wirklich damit spielen zu können und um herauszufinden ob der Slogan &#8220;The new 10 is the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.msdn.com/dannawi">Jihad Dannawi</a> kündigt in seinem Blog die Veröffentlichung von Visual Studio 2010 Beta 1 für MSDN Subscriber an:<br />
<a href="http://blogs.msdn.com/dannawi/archive/2009/05/15/visual-studio-2010-beta-1-available-for-the-msdn-subscribers-on-monday-may-18th.aspx">http://blogs.msdn.com/dannawi/archive/2009/05/15/visual-studio-2010-beta-1-available-for-the-msdn-subscribers-on-monday-may-18th.aspx</a></p>
<p>Dito kann man es auf ZDNet lesen:<br />
<a href="http://blogs.zdnet.com/microsoft/?p=2769">http://blogs.zdnet.com/microsoft/?p=2769</a></p>
<p>Ich freue mich schon drauf, ich hoffe es findet sich Zeit mal wirklich damit spielen zu können und um herauszufinden ob der Slogan <em><strong>&#8220;The new 10 is the next 6&#8243;</strong></em> wirklich trägt&#8230; <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2009/05/15/msdn-abonnementen-koennen-ab-montag-den-18052009-visual-studio-2010-beta-1-herunterladen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VS Tipps &amp; Tricks: Export/Import von Einstellungen zwischen VisualStudio 2005 und 2008</title>
		<link>http://blog.m-ri.de/index.php/2009/02/08/vs-tipps-tricks-exportimport-von-einstellungen-zwischen-visualstudio-2005-und-2008/</link>
		<comments>http://blog.m-ri.de/index.php/2009/02/08/vs-tipps-tricks-exportimport-von-einstellungen-zwischen-visualstudio-2005-und-2008/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 17:14:07 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS 2008]]></category>
		<category><![CDATA[VS-Tipps&Tricks]]></category>
		<category><![CDATA[VS-2005]]></category>
		<category><![CDATA[VS-2008]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=422</guid>
		<description><![CDATA[In einem meiner ersten Tipps habe ich das Thema Import und Export von Einstellungen schon behandelt schon behandelt: VS-Tipps &#38; Tricks: Einstellungen für Visual Studio mehreren Arbeitsplätzen gleich halten. Besonders wichtig ist das für mich immer mit den Tastatureinstellungen, die immer anpasse. Was ich aber jetzt mit positivem Erstaunen feststellen konnte ist folgendes: Man kann [...]]]></description>
			<content:encoded><![CDATA[<p>In einem meiner ersten Tipps habe ich das Thema Import und Export von Einstellungen schon behandelt schon behandelt: <a title="Permanent Link: VS-Tipps &amp; Tricks: Einstellungen für Visual Studio mehreren Arbeitsplätzen gleich halten" rel="bookmark" href="http://blog.m-ri.de/index.php/2007/11/19/vs-tipps-tricks-einstellungen-fuer-visual-studio-mehreren-arbeitsplaetzen-gleich-halten/">VS-Tipps &amp; Tricks: Einstellungen für Visual Studio mehreren Arbeitsplätzen gleich halten</a>.</p>
<p>Besonders wichtig ist das für mich immer mit den Tastatureinstellungen, die immer anpasse.</p>
<p>Was ich aber jetzt mit positivem Erstaunen feststellen konnte ist folgendes:<br />
<strong>Man kann Einstellungen auch aus VS-2005 nach VS-2008 übertragen und umgekehrt <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /> </strong></p>
<p>Die XML Struktur des Exportformates ist nicht versioniert. Man kann direkt Einstellungen aus VS-2005 austauschen. Ideal wenn man Legacy Projekte noch behandeln muss und beide Systeme parallel fährt.</p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2009/02/08/vs-tipps-tricks-exportimport-von-einstellungen-zwischen-visualstudio-2005-und-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSVSMON: Visual Studio Remote Debugging Monitor will not be able to debug applications because&#8230;</title>
		<link>http://blog.m-ri.de/index.php/2008/12/04/msvsmon-visual-studio-remote-debugging-monitor-will-not-be-able-to-debug-applications-because/</link>
		<comments>http://blog.m-ri.de/index.php/2008/12/04/msvsmon-visual-studio-remote-debugging-monitor-will-not-be-able-to-debug-applications-because/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 18:37:42 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS 2008]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[VS-2005]]></category>
		<category><![CDATA[VS-2008]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=364</guid>
		<description><![CDATA[Da schreibe ich einen netten Artikel über Remote Debugging und schon geht es doch nicht so einfach wie ich schreibe. Manch ein Entwickler wird von der folgenden Nachricht begrüßt, wenn er MSVSMON.EXE startet: Visual Studio Remote Debugging Monitor will not be able to debug applications because the &#8216;Network access: Sharing and security model for local [...]]]></description>
			<content:encoded><![CDATA[<p>Da schreibe ich einen netten Artikel über Remote Debugging und schon geht es doch nicht so einfach wie ich schreibe.</p>
<p>Manch ein Entwickler wird von der folgenden Nachricht begrüßt, wenn er MSVSMON.EXE startet:</p>
<blockquote><p>Visual Studio Remote Debugging Monitor will not be able to debug applications because the &#8216;Network access: Sharing and security model for local accounts&#8217; local security policy option is set to &#8216;Guest only &#8211; local users authenticate as Guest&#8217;. This can be configured with the &#8216;Local Security Settings&#8217; administration tool.<br />
Do you want to continue?    (Use /noguestonlywarn to suppress this warning)</p></blockquote>
<p>Nun auch keine Tragik. Dann kommen wir aber um einen Neustart nach Änderungen der Lokalen Richtlinien nicht herum. Aber man muss erst mal wissen was mit dieser Meldung gemeint ist, wenn man ein deutsches OS benutzt:</p>
<ol>
<li><em>Systemsteuerung </em>starten.</li>
<li><em>Leistung und Wartung</em> <em>-&gt; Verwaltung -&gt; Lokale Sicherheitsrichtlinie</em></li>
<li>In den Lokalen Sichereinstellungen auf<br />
<em>Lokale Richlinien -&gt; Sicherheitsoptionen</em></li>
<li>Dort dann <em>Netzwerkzugriff: Modell für gemeinsame Nutzung und Sicherheitsmodell für lokale Knoten</em> auswählen.</li>
<li>Umstellen auf: <em>Klassisch &#8211; lokale Benutzer authentifizieren sich als sie selbst</em></li>
<li>Reboot</li>
</ol>
<p>HTH<br />
Siehe auch:<br />
<a href="http://msdn.microsoft.com/en-us/library/bt727f1t.aspx">How to: Set Up Remote Debugging</a><br />
<a href="http://support.microsoft.com/kb/833900/en-us">How to debug on computers that are running Windows XP and that are in the same Workgroup in Visual Studio .NET or in Visual Studio 2005</a></p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/12/04/msvsmon-visual-studio-remote-debugging-monitor-will-not-be-able-to-debug-applications-because/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VS Tipps &amp; Tricks: Wie schließt man ein Tool Window?</title>
		<link>http://blog.m-ri.de/index.php/2008/11/30/vs-tipps-tricks-wie-schliesst-man-ein-tool-window/</link>
		<comments>http://blog.m-ri.de/index.php/2008/11/30/vs-tipps-tricks-wie-schliesst-man-ein-tool-window/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 11:35:04 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS 2008]]></category>
		<category><![CDATA[VS-Tipps&Tricks]]></category>
		<category><![CDATA[VS-2005]]></category>
		<category><![CDATA[VS-2008]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=369</guid>
		<description><![CDATA[Die ganzen netten Tool-Windows (Memory Window , Watch Window, Find Result, Document Outline, Output, Pending Changes, etc.) kann man sich mit einer netten Tastenkombination auf den Monitor holen. Aber wie schließt man sie nun wieder? Indem man mit der Maus rechts oben auf das rote X klickt&#8230;  Nein Es geht auch (zum Glück) über die [...]]]></description>
			<content:encoded><![CDATA[<p>Die ganzen netten Tool-Windows (<em>Memory Window , Watch Window, Find Result, Document Outline, Output, Pending Changes</em>, etc.) kann man sich mit einer netten Tastenkombination auf den Monitor holen. Aber wie schließt man sie nun wieder?</p>
<p>Indem man mit der Maus rechts oben auf das rote X klickt&#8230;  <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_question.gif' alt=':?:' class='wp-smiley' />  <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> </p>
<p>Nein <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' />  Es geht auch (zum Glück) über die Tastatur. Mit <em>Umschalt+Escape</em> kann man jedes Tool Window sofort auf <em>Hide </em>setzen und schließen. Der entsprechende Makro Befehl lautet <em>Window.CloseToolWindow</em>.</p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/11/30/vs-tipps-tricks-wie-schliesst-man-ein-tool-window/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO:Remote Debugging fast and easy</title>
		<link>http://blog.m-ri.de/index.php/2008/11/22/howtoremote-debugging-fast-and-easy/</link>
		<comments>http://blog.m-ri.de/index.php/2008/11/22/howtoremote-debugging-fast-and-easy/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 17:40:29 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS 2008]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[VS-2005]]></category>
		<category><![CDATA[VS-2008]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=363</guid>
		<description><![CDATA[Vor Jahren habe ich dazu bereits mal einen Artikel für VC6 veröffentlicht: Remote Debugging for Dummies! BTW: Es war überhaupt mein erster Artikel! Also Zeit für ein kleines Upgrade. Anmerkung: Mir geht es hier nur um natives Debuggen von C++ (also unmanaged Code), wen wird es wundern ? Für mich das ultimative Mittel der Qualitätssicherung [...]]]></description>
			<content:encoded><![CDATA[<p>Vor Jahren habe ich dazu bereits mal einen Artikel für VC6 veröffentlicht: <a href="http://www.mpdvc.de/artikel/RemoteDebugging.htm">Remote Debugging for Dummies</a>! BTW: Es war überhaupt mein erster Artikel!<br />
Also Zeit für ein kleines Upgrade.<br />
Anmerkung: Mir geht es hier nur um natives Debuggen von C++ (also unmanaged Code), wen wird es wundern ? <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Für mich das ultimative Mittel der Qualitätssicherung und die beste Waffe für die Jagd auf den <em>gemeinen Software-Bug </em>ist und bleibt <em>Remote Debugging</em>.</p>
<p><em>Remote Debugging </em>ist seit es <em>Visual Studio 2002 </em>gibt so einfach geworden wie noch nie. Und seit es <em>Visual Studio 2005 </em>ist es noch einen Tick einfacher geworden. Einziger Wermuthstropfen: Remote Debugging ist erst ab der Professional Version verfügbar.<br />
Um so erstaunlicher wie wenig Entwickler dieses Werkzeug einsetzen.</p>
<p>Nehmen wir einfach mal den Fall, wir haben auf einer Maschine einen Crash, oder wir haben einen Zustand, den wir sofort Debuggen wollen. Geht das On-the-fly?</p>
<p>JA <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /> </p>
<p>Wenn die Rechner in einer Domäne sind, gibt es meistens gar keine Probleme und man kann einfach wie folgt vorgehen. </p>
<ol>
<li>Wir kopieren die Datei MSVSMON.EXE auf den Rechner auf dem wir Debuggen wollen:<br />
<em>&#8220;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe&#8221;<br />
</em>Ja! Erstaunlich, mehr ist nicht notwendig.</li>
<li>Beim ersten Start erhalten wir eine Warnung, dass wir die Firewall von XP SP2 oder Vista noch freischalten müssen. Gesagt getan.</li>
<li>Nun wählen wir einfach die <em>schnelle etwas unsichere </em>Methode:<br />
Menü <em>Tools -&gt; Options</em><br />
In dem entsprechenden Dialog, wählen wir nun einfach:<br />
<em>No Authentication (native only)<br />
Allow any user to Debug<br />
</em>Port 4015 bleibt unverändert.<br />
Am Besten jetzt noch die <em>Maximum idle time (seconds) </em>von 900 auf was Brauchbares hoch setzen, sonst wird die Session einfach beendet nach 15 Minuten.</li>
<li>Ja <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' />  Das wars. Nun einfach im Visual Studio <em>Tools -&gt; Attach to Process</em> wählen (Strg+Alt+P)<br />
<em>Transport: Remote (Native only with no authentication)<br />
Qualifier: &lt;Name des PCs den es zu debuggen gilt, oder IP-Adresse&gt;<br />
Refresh</em></li>
<li>WOW! Und schon sieht man seinen Prozess den man debuggen möchte.</li>
<li>Jetzt nur noch auswählen und <em>Attach</em></li>
</ol>
<p>So einfach geht es.<br />
Wenn man die passenden PDB Dateien in Reichweite hat, kann man sofort Breakpoints setzen und am &#8220;lebenden Patienten&#8221; operieren, als nur &#8220;post-mortem&#8221; mit Crashdumps zu arbeiten.</p>
<p>Wie man gezielt auch die Projekteinstellungen nutzen kann, habe ich mir für einen späteren Artikel vorgemerkt. <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Siehe auch:<br />
<a href="http://msdn.microsoft.com/en-us/library/bt727f1t.aspx">How to: Set Up Remote Debugging</a></p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/11/22/howtoremote-debugging-fast-and-easy/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>VS Tipps &amp; Tricks: Heap Bugs finden (Teil 2)</title>
		<link>http://blog.m-ri.de/index.php/2008/10/31/vs-tipps-tricks-heap-bugs-finden-teil-2/</link>
		<comments>http://blog.m-ri.de/index.php/2008/10/31/vs-tipps-tricks-heap-bugs-finden-teil-2/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 18:42:52 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CRT]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS-Tipps&Tricks]]></category>
		<category><![CDATA[Windows API]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[WinAPI]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=355</guid>
		<description><![CDATA[Einige Hilfsmittel um einen Heap-Fehler zu finden habe ich in meinem letzten Beitrag ja beschrieben. Eigentlich wünscht sich der Entwickler nichts mehr, als dass ein falscher Zugriff auf den Heap, sofort einen Break im Debugger auslöst. Die Methoden, die ich bisher gezeigt habe (AfxCheckMemory, _CrtCheckMemory, _CrtSetDbgFlag) können das nicht direkt , aber zumindest helfen sie den [...]]]></description>
			<content:encoded><![CDATA[<p>Einige Hilfsmittel um einen Heap-Fehler zu finden habe ich in meinem <a href="http://blog.m-ri.de/index.php/2008/10/27/vs-tipps-tricks-heap-bugs-finden-teil-1/">letzten Beitrag</a> ja beschrieben.</p>
<p>Eigentlich wünscht sich der Entwickler nichts mehr, als dass ein falscher Zugriff auf den Heap, sofort einen <em>Break </em>im Debugger auslöst. Die Methoden, die ich bisher gezeigt habe (<em>AfxCheckMemory</em>, <em>_CrtCheckMemory</em>, <em>_CrtSetDbgFlag</em>) können das nicht direkt , aber zumindest helfen sie den Fehler einzukreisen.</p>
<p>Ein unverzichtbarer Helfer, der sofort solch einen <em>Break </em>auslösen kann, ist der <a href="http://msdn.microsoft.com/de-de/library/ms220948(VS.80).aspx">Application Verifier</a>, den ich bereits in einem älteren Artikel als <a href="http://blog.m-ri.de/index.php/2007/03/02/der-application-verifier-mein-neuer-freund/">Freund und Helfer</a> vorgestellt habe.</p>
<p>Seit <em>Visual Studio 2005 </em>kann man direkt Parameter für den <em>Application Verifier </em>im Projekt einstellen und auch direkt den Debug-Prozess mit dem Application Verifier starten (<em>Umschalt+Alt+F5</em>).<br />
An den Standardeinstellungen im Projekt braucht man hier gar nichts zu ändern:<br />
<em>Conserve Memory </em>- No<br />
<em>Protection Location </em>- Je nach Testfall (man sollte mit beiden Einstellungen mal debuggen)<br />
Alle anderen Einstellungen <em>Verification Layers Settings </em>- auf Enable</p>
<p>Mit dem <em>Application Verifier </em>lässt sich der so genannte <em>Paged Heap </em>nutzen, der Guard Pages anlegt hinter oder vor den allokierten Speicherbereichen (siehe auch GFLAGS.EXE). Der Vorteil: Man erhält sofort eine Access Violation, wenn man den Speicherbereich überschreitet.</p>
<p>Mein kleines Demoproramm</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;windows.h&gt;</span>
<span style="color: #339900;">#include &lt;tchar.h&gt;</span>
<span style="color: #339900;">#include &lt;crtdbg.h&gt;</span>
<span style="color: #0000ff;">int</span> _tmain<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, _TCHAR<span style="color: #000040;">*</span> argv<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>pCorrupt <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> <span style="color: #0000ff;">char</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
  ZeroMemory<span style="color: #008000;">&#40;</span>pCorrupt,<span style="color: #0000dd;">106</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// -- This will corrupt the heap</span>
  <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>pOther <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> <span style="color: #0000ff;">char</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
  ZeroMemory<span style="color: #008000;">&#40;</span>pOther,<span style="color: #0000dd;">100</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000dd;">delete</span> <span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> pOther<span style="color: #008080;">;</span>
  <span style="color: #0000dd;">delete</span> <span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> pCorrupt<span style="color: #008080;">;</span>
  <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>crashed mit der Nutzung des <em>Application Verifiers </em>sofort und man kann im Call Stack die Zeile 7 ausmachen.<br />
Genial ist besonders, dass der <em>Application Verifier</em> auch mit der Release Version sofort die Zeile 7 als Ursache identifiziert. Gerade wenn man also nicht auf die <em>Debug-CRT</em> zurückgreifen kann, ist der Application Verifier ein super Hilfsmittel.</p>
<p>Der Nachteil: Die Guard Pages liegen nicht exakt und direkt hinter dem allokierten Bereich, sondern auf der nächsten Page Boundary. Deshalb crashed mein Sample auch nicht wenn man den Speicher um nur 1 Byte überschreitet.</p>
<p>Aber der Application Verifier ist zum Testen ein absolutes Muss, weil auch falsche Handles erkannt werden und auch der Lock Verfification Layer für die Qualitätssicherung einfach nützlich zum entwanzen sind. (siehe auch <a href="http://msdn.microsoft.com/en-us/library/ms220936.aspx">Application Verifier Einstellungen in der MSDN</a>).</p>
<p>Hinweis <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_exclaim.gif' alt=':!:' class='wp-smiley' /> </p>
<p>Auf <em>Windows XP </em>und <em>Windows Server 2003 </em>erhält man ohne administrative Rechte die folgende Fehlermeldung:</p>
<blockquote><p>Access denied. You need administrative credentials to use Application Verifier on image &lt;App_Name.exe&gt; on machine &lt;Machine_Name&gt;. Contact your system administrator for assistance</p></blockquote>
<p>Unter Windows Vista oder Windows Server 2008 erhält man die flogende Fehlermeldung wenn der Application Verifier nicht elevated gestartet wird:</p>
<blockquote><p>Access denied. You need administrative credentials to use Application Verifier on image &lt;App_Name.exe&gt; on machine &lt;Machine_Name&gt; or per user verifier settings should be enabled by the administrator. Please refer to documentation for more information.</p></blockquote>
<p>Durch einen simplen Eintrag in der Registry lässt sich aber auch als normaler Benutzer, ohne administrative Rechte, der<em> Application Verifier </em>nutzen, man erzeugt einen DWORD Eintrag in der Registry mit dem Wert 1<br />
<em>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manger\ImageExecutionOptions<br />
</em>Nach einem Reboot kann man nun einfach den <em>Application Verifier </em>auch non-elevated, als normaler Benutzer nutzen.</p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/10/31/vs-tipps-tricks-heap-bugs-finden-teil-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>VS Tipps &amp; Tricks: WinMerge als DIFF-Tool in Verbindung mit TFS</title>
		<link>http://blog.m-ri.de/index.php/2008/10/08/vs-tipps-tricks-winmerge-als-diff-tool-in-verbindung-mit-tfs/</link>
		<comments>http://blog.m-ri.de/index.php/2008/10/08/vs-tipps-tricks-winmerge-als-diff-tool-in-verbindung-mit-tfs/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 17:20:26 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[VS 2008]]></category>
		<category><![CDATA[VS-Tipps&Tricks]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=344</guid>
		<description><![CDATA[Ich bin ein wirklicher Fan von WinMerge und deshalb nutze ich es auch als Ersatz für das Standard TFS Tool DiffMerge.exe. Wer noch nicht wusste, dass man hier ein eigenes Tool im TFS für Compare und Merge wählen kann, der findet die entsprechenden Einstellungen unter: Tools -&#62; Options -&#62; Source Control -&#62; Visual Studio Team [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin ein wirklicher Fan von <a href="http://winmerge.sourceforge.net/">WinMerge</a> und deshalb nutze ich es auch als Ersatz für das Standard TFS Tool DiffMerge.exe. Wer noch nicht wusste, dass man hier ein eigenes Tool im <em>TFS </em>für <em>Compare </em>und <em>Merge </em>wählen kann, der findet die entsprechenden Einstellungen unter: <em>Tools -&gt; Options -&gt; Source Control -&gt; Visual Studio Team Foundation Server -&gt; Configure User Tools</em></p>
<p>Um <em>WinMerge </em>für den <em><strong>Compare </strong></em>einzusetzen verwende ich die folgenden Parameter:</p>
<blockquote><p>Program: <strong>C:\Programme\WinMerge\WinMergeU.exe</strong><br />
Arguments: <strong>/x /e /wl /ub /dl %6 /dr %7 %1 %2</strong></p></blockquote>
<p>Und folgende Parameter habe ich für den <strong><em>Merge </em></strong>eingestellt:</p>
<blockquote><p>Program: <strong>C:\Programme\WinMerge\WinMergeU.exe</strong><br />
Arguments: <strong>/x /e /wl /ub /dl %6 /dr %7 %1 %2 %4</strong></p></blockquote>
<p>Hier eine Erklärung aus der Onlinehilfe von <em>WinMerge </em>für Befehlszeilenschalter, die ich aktuell verwende:</p>
<ul>
<li>/x closes WinMerge if opened files are identical (after information dialog is shown). This parameter is useful when WinMerge is used as an external compare application. It helps to faster process and/or ignore files which don&#8217;t have any differences. Note that this option does not apply when files become identical when merging/editing them.</li>
<li>/e allows WinMerge to be closed with a single <span>Esc</span> keypress. This is useful when using WinMerge as an external compare application. WinMerge can act like an dialog which is easy and fast to close.</li>
<li>/wl initially opens left side as read-only. Use this when you don&#8217;t want to change left-side items in compare.</li>
<li>/ub tells WinMerge to not add both paths to MRU. External applications should not add paths to Open-dialog&#8217;s MRU lists.</li>
<li>/dl adds a description for left side shown instead of folder / filename. This allows showing version number or label for compared items. Like &#8220;Version 1.0&#8243; or &#8220;Work Copy&#8221;.</li>
<li>/dr adds a description for right side shown instead of folder / filename. This allows showing version number or label for compared items. Like &#8220;Version 1.0&#8243; or &#8220;Work Copy&#8221;.</li>
</ul>
<p>Die entsprechenden % Platzhalter sind so durch <em>Visual Studio </em>vorbelegt:</p>
<ul>
<li>%1 = Original file</li>
<li>%2 = Modified file</li>
<li>%3 = Base file</li>
<li>%4 = Merged file</li>
<li>%5 = Diff options</li>
<li>%6 = Original file label (label for %1 file)</li>
<li>%7 = Modified file label (label for %2 file)</li>
<li>%8 = Base file label (label for %3 file)</li>
<li>%9 = Merged file label (label for %4 file)</li>
</ul>
<p>Leider muss man für jeden Datentyp sowohl Compare als auch Merge einzeln einstellen. Eine Default-Einstellung habe ich nicht gefunden.</p>
<p>Es gibt einen schönen Blogeintrag von James Manning, der auch noch andere Diff-Tools behandelt:<br />
<a href="http://blogs.msdn.com/jmanning/articles/535573.aspx">http://blogs.msdn.com/jmanning/articles/535573.aspx</a><br />
Wie man sieht habe ich die WinMerge Parameter jedoch angepasst.</p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/10/08/vs-tipps-tricks-winmerge-als-diff-tool-in-verbindung-mit-tfs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dr. Watson starb unter Vista&#8230;</title>
		<link>http://blog.m-ri.de/index.php/2008/08/31/dr-watson-starb-unter-vista/</link>
		<comments>http://blog.m-ri.de/index.php/2008/08/31/dr-watson-starb-unter-vista/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 20:42:07 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Vista / Windows 7]]></category>
		<category><![CDATA[Crashdump]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=307</guid>
		<description><![CDATA[&#8230; und es war nicht etwa wieder Prof. Dr. Moriarty Wenn man unter Vista einen Crashdump benötigt dann sucht man DRWTSN32.EXE unter Vista vergeblich. Für die Qualitätssicherung sind mir Minidumps immer extrem wichtig. Es stellt sich die nette Frage: Wie kommt man von einem Kunden dann an einen informativen Minidump, wenn man keinen WER-Account hat, [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; und es war nicht etwa wieder Prof. Dr. Moriarty <img src='http://blog.m-ri.de/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </p>
<p>Wenn man unter Vista einen Crashdump benötigt dann sucht man DRWTSN32.EXE unter Vista vergeblich. Für die Qualitätssicherung sind mir Minidumps immer extrem wichtig.</p>
<p>Es stellt sich die nette Frage: Wie kommt man von einem Kunden dann an einen informativen Minidump, wenn man keinen <a href="http://www.microsoft.com/whdc/maintain/StartWER.mspx">WER-Account</a> hat, oder das Programm nicht signiert war, oder gar der WER Server diese Dumps nicht anfordert?</p>
<p>Unter Vista ist alles noch einfacher und schwieriger geworden. Vista speichert leider nicht grundsätzlich Minidumps, aber es legt für Crashs unter <em>Problemberichte und Lösungen</em> einen eigenen Eintrag an. Zu Crashs von WER registrierten Programme werden hier evtl. direkt Lösungen oder Updates angeboten. Und auch Crashdumps werden hier mit abgelegt, <strong><em>wenn </em></strong>sie erzeugt werden..</p>
<p>So ist es unter Vista aus:</p>
<ol>
<li>Das <em>WER </em>System in <em>Vista </em>erzeugt normalerweise nur Minidumps für signierte Programme bzw. wenn der WER Server einen Crash abruft.</li>
<li>Um immer einen Minidump zu erhalten muss in der Registry der folgende Wert gesetzt werden:<br />
<em>HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\ (DWORD)  </em>mit Namen <em>ForceQueue  </em>erzeugen und auf <em>1 </em>setzen.</li>
<li>Dumps werden im Benutzerverzeichnis unter <em>C:\Users\TheUserName\AppData\Local\Temp</em> und hier <em>C:\ProgramData\Microsoft\Windows\WER\ReportQueue</em> abgelegt und sind meistens gepackt. Sie erhalten die Endung *.mdmp.</li>
<li>Der Zugriff kann ganz einfach erfolgen mit <em>Systemsteuerung -&gt; System und Wartung -&gt; Problemberichte und Lösungen -&gt; Probleme anzeigen und überprüfen</em></li>
<li>Dort findet man das entsprechende Programm und die dazugehörigen entsprechenden Crashs.</li>
<li>Weitere Infos einfach über <em>Details anzeigen </em>lassen.</li>
<li>Wenn es einen Dump gibt, dann findet man hier wieder einen Eintrag <em>Temporäre Kopie dieser Dateien anzeigen</em></li>
<li>Damit lässt sich der Explorer öffnen und man erhält Zugriff auf die gespeicherten Daten.</li>
<li>Diese kann man sich nun als Entwickler zusenden lassen.</li>
</ol>
<p>Siehe auch:</p>
<ul>
<li>Andere Möglichkeiten werden auch in diesem KB-Artikel beschrieben: <a href="http://support.microsoft.com/kb/931673/en-us">http://support.microsoft.com/kb/931673/en-us</a>.</li>
<li>Alle Einstellungen des <em>Vista</em> <em>WER </em>Systems sind hier beschrieben:<br />
<a href="http://msdn.microsoft.com/en-us/library/bb513638(VS.85).aspx">http://msdn.microsoft.com/en-us/library/bb513638(VS.85).aspx</a></li>
</ul>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/08/31/dr-watson-starb-unter-vista/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tipps &amp; Tricks:Entzerren komplexer Pre- und Post-Build-Steps durch eigene Utility Projekte</title>
		<link>http://blog.m-ri.de/index.php/2008/08/17/tipps-tricksentzerren-komplexer-pre-und-post-build-steps-durch-eigene-utility-projekte/</link>
		<comments>http://blog.m-ri.de/index.php/2008/08/17/tipps-tricksentzerren-komplexer-pre-und-post-build-steps-durch-eigene-utility-projekte/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 17:15:25 +0000</pubDate>
		<dc:creator>Martin Richter</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[VS-Tipps&Tricks]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Tipps&Tricks]]></category>

		<guid isPermaLink="false">http://blog.m-ri.de/?p=253</guid>
		<description><![CDATA[Ich habe einige komplexe Projekte in die auch andere Tools eingebunden sind. Diese Tools erzeugen Dateien und Ressourcen erzeugen, die mit in den kompletten Build eines Projektes einfließen. Zum Teil sind es Daten, die auf einen speziellen Weg kompiliert werden oder auch Ressourcen, die durch ein sekundären anderen Compiler erst mit verarbeitet werden müssen. Teilweise [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe einige komplexe Projekte in die auch andere Tools eingebunden sind. Diese Tools erzeugen Dateien und Ressourcen erzeugen, die mit in den kompletten Build eines Projektes einfließen. Zum Teil sind es Daten, die auf einen speziellen Weg kompiliert werden oder auch Ressourcen, die durch ein sekundären anderen Compiler erst mit verarbeitet werden müssen.</p>
<p>Teilweise hatte ich diese Prozesse in einen <em>Pre</em>- und <em>Postbuild Step</em> eingebaut. Leider verhält sich Visual Studio oft genug eigentümlich, es merkt nicht das abhängige Dateien während des Build Prozesses verändert werden.</p>
<p>Bei einer Umstellung meiner Projekte stellte ich fest, dass es weitaus einfacher ist für solche speziellen Vorgänge eigene kleine Projekte zu erzeugen vom Typ &#8220;<em>Utility</em>&#8220;.</p>
<p>In diesen Projekten kann man einfach Ein- und Ausgabedateien definieren und den Befehl, der dazu notwendig ist die Daten eben zu bearbeiten.<br />
Das Ganze wird dann in eine Master Solution kombiniert mit den entsprechenden Abhängigkeiten. Das hat vor allem auch den großen Vorteil, das auch die Projekte parallel im Build durchlaufen werden können.</p>
<p>Utility Projekte sind für manche Aufgaben weitaus besser geeignet als <em>Pre</em>- und <em>Postbuild</em> Steps. Vor allem werden durch die Verwendung von <em>Utility </em>Projekten die einzelnen Vorgänge entzerrt und verständlicher.</p>
<hr /><small>Copyright &copy; 2010 Martin Richter<br />Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.<br />(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)</small>]]></content:encoded>
			<wfw:commentRss>http://blog.m-ri.de/index.php/2008/08/17/tipps-tricksentzerren-komplexer-pre-und-post-build-steps-durch-eigene-utility-projekte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

