{"id":119,"date":"2007-09-18T11:32:56","date_gmt":"2007-09-18T09:32:56","guid":{"rendered":"http:\/\/blog.m-ri.de\/index.php\/2007\/09\/18\/vs-tipps-tricks-der-property-manager-der-unbekannte-helfer\/"},"modified":"2007-11-14T14:35:06","modified_gmt":"2007-11-14T13:35:06","slug":"vs-tipps-tricks-der-property-manager-der-unbekannte-helfer","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2007\/09\/18\/vs-tipps-tricks-der-property-manager-der-unbekannte-helfer\/","title":{"rendered":"VS-Tipps &#038; Tricks: Der Property Manager, der unbekannte Helfer."},"content":{"rendered":"<p>Es gibt oft genug die Problematik, dass man eine bestimmte Environment Variable f\u00fcr ein Projekt setzen will, oder auch dass man f\u00fcr eine Gruppe von Projekten ein bestimmtes Include-Verzeichnis hinzuf\u00fcgen will oder bestimmte andere Projekteinstellungen ben\u00f6tigt.<\/p>\n<p>Der bisherige Weg war meistens Handarbeit wenn es um die Projekteinstellungen ging. Bei Environment Variablen hatte man oft genug wenig Chancen.<\/p>\n<p>Ein Weg ist es, einen Batch File zu schreiben, der die Environment Variablen setzt und dann die IDE mit <em>DEVENV \/useenv <\/em>startet. In diesem Fall werden nur die entsprechenden Environment Variablen f\u00fcr <em>LIB\/INCLUDES <\/em>etc. verwendet. Zus\u00e4tzlich nat\u00fcrlich auch die eigenen spezifizierten.<br \/>\nDas hat aber den Nachteil, dass man nicht vergessen darf die IDE zu verlassen und neu zu starten hat, bevor man ein neues &#8222;normales&#8220; Projekt bearbeiten will.<br \/>\nSumma summarum: Geht, ist aber kein guter Weg.<\/p>\n<p>Es gibt eine weitaus effektivere M\u00f6glichkeit Projekteinstellungen einfach zu manipulieren und auch einfach f\u00fcr andere Projekte zu \u00fcbernehmen: Der <em>Property Manager<\/em>!<\/p>\n<p>Mit dem <em>Property Manager <\/em>kann man Projekteinstellungen erzeugen und zusammenfassen. Diese Projekteinstellungen lassen sich in einer XML Datei abspeichern (vsprops-Dateien) und auf andere Projekte auf einfache Art anwenden indem man nur die entsprechende Datei in das Projekt in den Projekteinstellungen einf\u00fcgt.<\/p>\n<p>Das nette ist, dass der <em>Property Manager <\/em>es auch erlaubt Environment Variablen zu setzen, die dann in den Optionen und auch den Custom-Build-Steps auf einfache Weise \u00fcber <em>$(MyUserMacro) <\/em>nutzen lassen.<\/p>\n<p>Und so geht man vor:<\/p>\n<ul>\n<li>\u00dcber <em>View <\/em>-&gt; <em>Other <\/em>Windows holt man sich den Property Manager auf den Bildschirm. Man kann nun sofort sehen welche aktuellen Properties gesetzt sind. (Zum Beispiel sieht man sofort woher zum Beispiel bei konvertierten Projekten das define <em>_VC80_UPGRADE <\/em>kommt)<\/li>\n<li>Man findet zwei Schalter <em>Add New Project Property Sheet <\/em>um ein neuen Satz Properties anzulegen und <em>Add Existing Property Sheet<\/em> um ein bereits existierendes Property Sheet anzuwenden (dazu sp\u00e4ter).<\/li>\n<li>Nun kann man einfach wie man es gewohnt ist, die gew\u00fcnschten Eigenschaften in diesem Sheet einstellen, die man ben\u00f6tigt. Rechter Mausklick oder Doppelklick\u00a0gen\u00fcgt und man erh\u00e4lt Zugriff auf alle Eigenschaften der Projekte. Ob es nun den Compiler oder Linker betrifft ist egal.<\/li>\n<li>Wichtig ist gleich der zweite Eintrag <em>User Macros<\/em>. Hier kann man nun nach Lust und Laune Environment Variablen und andere defines setzen. Besonders interessant ist hier auch die M\u00f6glichkeit Werte anzuh\u00e4ngen an eine bestehende Environemt Variable. Nett f\u00fcr INCLUDE und LIB!<\/li>\n<\/ul>\n<p>Zuletzt sei erw\u00e4hnt, dass sich eine solche vsprops Datei auch einfach in ein bestehendes Projekt eingef\u00fcgt werden kann. Das geht zum einen \u00fcber den <em>Property Manager<\/em> mit dem schon erw\u00e4hnten Schalter <em>Add Existing Property Sheet<\/em> , oder aber auch direkt \u00fcber die Projekteinstellungen. Dazu einfach die Projekteigenschaften \u00f6ffnen und den Abschnitt <em>General <\/em>ausw\u00e4hlen. Dort findet man den Eintrag <em>Inherited Projekt Property Sheets<\/em> in dem man direkt die entsprechenden <em>vsprops <\/em>Dateien angeben kann.<\/p>\n<p>\u2757 Man sollte aber auch daran denken, diese speziellen vsprops Dateien dem eigenen Source Control System hinzuzuf\u00fcgen und auch eine entsprechende Dokumentation dazu anzulegen.<br \/>\nGut ist es auch ein zentrales Verzeichnis f\u00fcr diese Projekteinstellungen anzulegen um eine einfache Wiederverwendung zu erm\u00f6glichen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt oft genug die Problematik, dass man eine bestimmte Environment Variable f\u00fcr ein Projekt setzen will, oder auch dass man f\u00fcr eine Gruppe von Projekten ein bestimmtes Include-Verzeichnis hinzuf\u00fcgen will oder bestimmte andere Projekteinstellungen ben\u00f6tigt. Der bisherige Weg war meistens Handarbeit wenn es um die Projekteinstellungen ging. Bei Environment Variablen hatte man oft genug &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2007\/09\/18\/vs-tipps-tricks-der-property-manager-der-unbekannte-helfer\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eVS-Tipps &#038; Tricks: Der Property Manager, der unbekannte Helfer.\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[20,3,31],"tags":[361,50,37],"class_list":["post-119","post","type-post","status-publish","format-standard","hentry","category-ide","category-programmieren","category-vs-tipps-tricks","tag-ide","tag-projekte","tag-vs-tippstricks"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=119"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/119\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}