11.13.2009

VS2008 mit TFS 2010 verbinden. Connect VS2008 with TFS 2010.

… in Vorbereitung auf meinen Vortrag bei der dodned UG Franken zum Thema WPF mit MVVM, habe ich mir heute auf meinem TFS 2010 einen kleinen Entwicklungsbereich geschaffen in dem ich meine VS2008-Projekte ablegen werde. Leider stellte sich das Verbinden des VS2008 Team Explorers mit meinem TFS 2010 als nicht ganz so einfach heraus. Um den Team Explorer für VS2008 mit dem TFS 2010 Beta 2 zu verbinden, muss man den vollen Pfad des TFS angeben. Das könnte wie in dem folgenden Beispiel aussehen

http://TFS2010:8080/tfs

Damit dieser Pfad im Team Explorer von Visual Studio 2008 akzeptiert wird, muss man aber erst das SP1 für Visual Studio 2008 und den SP1 Patch KB974558 installieren. Hier die passenden Links zu den Downloads.

Visual Studio 2008 SP1

SP1 Patch KB974558

Gerade jetzt wo es die erste sehr stabile Version des TFS 2010 Basic für alle umsteigewilligen Visual Source Safe 2005 Benutzer gibt, lohnt sich die Installation des VS2008 Team Explorers wenn man weiterhin noch mit VS2008 arbeiten will/muss. Wer bisher noch keinen Team Explorer in Visual Studio 2008 verwendet der kann diesen >Hier< downloaden. Die Beta 2 des TFS 2010 gibt es >Hier< kostenlos zum herunterladen. Wer schon mit Visual Studio 2010 Beta 2 arbeitet, der kann den Team Explorer 2010 Beta 2 >Hier< herunterladen.

HTH

TOM_MUE

Labels: , ,

7.08.2009

Visual Studio 2008 No template information found

Bei meiner Arbeit mit Visual Studio 2010 BETA1, bin ich gestern über einen möglichen Seiteneffekt gestoßen, der mit der Side by Side Installation von Visual Studio 2008 und Visual Studio 2010 zu tun haben könnte.

Ausgangssituation:

In meiner virtuellen Maschine hatte ich bereits Visual Studio 2008 Team Suite inklusive SP1 installiert. Zusätzlich hatte ich nun Visual Studio 2010 BETA1 installiert. Die Installation und die Arbeit mit VS2010 verliefen ohne nennenswerte Probleme. Als ich dann aber VS2008 startete und versuchte ein neues C#-Projekt zu erstellen, bekam ich die folgende Fehlermeldung von VS2008 angezeigt.

“No template information found”

Message

Na toll, dachte ich mir. Jetzt muss ich entweder VS2008 neu installieren oder muss eine separate VM mit VS2010 aufsetzen. Mit dem Klick auf die Schaltfläche OK zeigte sich dann ein sehr leerer Projektvorlagen-Dialog in Visual Studio 2008.

emtyProjectTemplatesDialog

Aber glücklicherweise konnte ich mich im Zusammenhang mit dieser Fehlermeldung an den Parameter /installvstemplates erinnern. Diesen Befehl kann als Parameter über die Konsole für den Start von Visual Studio verwenden. Und genau so stand es dann auch in der Message im Windows-Eventlog, die Visual Studio 2008 dort eingetragen hatte (siehe Text in der MessageBox).

Lösung/Vorgehen:

In Windows öffnet man den Visual Studio 2008 Command Prompt. Dazu einfach über Start | Alle Programme | Microsoft Visual Studio 2008 | Visual Studio Tools | Visual Studio 2008 Command Prompt anklicken.

VS2008CommandPrompt

Jetzt tippt man einfach devenv.exe /installvstemplates ein und bestätigt dann mit Return (Enter).

Nun sind auch alle Projekt-Templates in Visual Studio wieder enthalten.

ProjectTemplatesDialog Wichtig:

Wenn man wie oben beschrieben devenv.exe /installvstemplates über den Visual Studio 2008 Command Prompt aufruft, wird die DIE von Visual Studio nicht aufgerufen/angezeigt. Also keine Panik :-) Einfach Visual Studio danach normal starten.

Fazit:

Es hat sich einmal mehr bewiesen, dass ein gutes Grundwissen zu den möglichen Parametern für Visual Studio von großem Vorteil sein kann. Außerdem, und das ist sicher das wichtigere Fazit, sollte unbedingt bei der Verwendung von Visual Studio 2010 darauf geachtet werden, dass kein Produktivsystem als Plattform verwendet wird.

 

 

Gruß

TOM_MUE

Labels: , ,

1.28.2008

MSDN Library 2008

Microsoft bietet ab sofort die MSDN Library for Visual Studio 2008, über die folgenden Links in drei Sprachen zum freien Download an:

German

Englisch

Japanisch

HTH
TOM_MUE

Labels: , ,

1.24.2008

Visual Studio Add-ins, die ich gerne verwende

Egal in welcher Rolle wir Code in einem Projekt entwickeln, einen großen Anteil der Zeit verbringen wir bei der Softwareentwicklung im Code-Editor von Visual Studio. Nun bringt Visual Studio von Version zu Version immer mehr neue Features und unterstützende Assistenten mit. Dinge also, die einem das tägliche Codierer-Leben erleichtern. Klar ist aber auch, das Visual Studio nicht allen Ansprüchen gerecht werden kann. Diese zusätzlichen oder anders gesagt benutzerdefinierten Bedürfnisse, können mit Visual Studio Add-ins oder Packages immer mehr und besser befriedigt werden. Diese Add-ins und Packages erweitern Visual Studio um Funktionalitäten und integrieren sich in dessen IDE oder aber agieren fleißig aus dem Hintergrund von Visual Studio. Auch wenn man so wie ich eigene Add-ins entwicklet (oder zumindest dazu in der Lage ist)
freut man sich doch sehr, wenn man vom Fleiß anderer Entwickler partizipieren kann. Ich möchte hier einfach einmal eine Liste mit Freeware-Add-ins online stellen, die ich selbst nutze oder gerne empfehle.

  1. GhostDoc
    XML-Kommentare sind unschätzbar für die Anwendungsdokumentation, da man mit ihnen den Code beschreiben kann. Anschließend können Sie mit einem Tool wie nDoc auf diesen Kommentaren basierende Hilfedateien oder MSDN-ähnliche Webdokumentationen erstellen. Das einzige Problem bei der XML-Dokumentation ist der Zeitaufwand beim Schreiben, bei dem mitunter wieder und wieder recht ähnliche Anweisungen verfasst werden müssen. Das Ziel von GhostDoc ist es, die lästigen Teile des Schreibens von XML-Kommentaren zu automatisieren, indem der Name der Klasse oder Methode sowie sämtliche Parameter betrachtet werden. Anschließend wird basierend auf den empfohlenen Benennungskonventionen eine begründete Vermutung zum Erscheinungsbild der Dokumentation vorgenommen. Dies ersetzt zwar nicht das Schreiben einer gründlichen Dokumentation der Geschäftsregeln und das Bereitstellen von Beispielen, die lästigen Routineteile der Dokumentationserstellung werden jedoch automatisiert.

    Ghostdoc
    Entwicklet wird das Add-in von Roland Weigelt. Mehr Informationen und den Download von GhostDoc findet man auf seiner Webseite zu GhostDock.
  2. CopySourceAsHTML
    Code ist weitaus einfacher lesbar, wenn bestimmte Codeteile durch verschiedene Textfarben vom Rest unterschieden werden. Das Lesen von Code ist in Visual Studio in der Regel bedeutend einfacher als in einem Editor wie z. B. Notepad. Möglicherweise verfügen Sie längst über einen eigenen Blog, oder Sie verbringen einige Zeit mit dem Lesen anderer Blogs. In der Regel verwandelt sich ein toller Codeausschnitt beim Veröffentlichen in Ihrem Blog in gewöhnlichen, schwer lesbaren Text. Hier kommt das CopySourceAsHTML-Add-In ins Spiel. Dieses Add-In ermöglicht das Kopieren von Code als HTML-Text, so dass Sie diesen einfach in Ihrem Blog oder auf Ihrer Website veröffentlichen und dabei die Schriftfarben von Visual Studio beibehalten können. Nach dem Installieren des CopySourceAsHTML-Add-Ins wählen Sie einfach den zu kopierenden Code und anschließend im Kontextmenü den Befehl Copy Source as HTML (Quelle als HTML kopieren) aus.

    Hier das Beispiel für normal kopierten Code in ein Blog:

    private long Add(int d, int d2)
    {
    return (long) d + d2;
    }

    und hier das Ergebnis mit CopySourceAsHTML:

    CopySourceAsHTML
    Mehr Informationen und den Download für das Add-in findet man hier: CopySourceAsHTML.

  3. Clipboard Manager
    Beim Clipboard Manager handelt es sich um ein Add-in, das den Clipboard-Ring von Visual Studio visualisieren kann. Der Shortcut Ctrl+Shift+V sollte jedem geläufig sein. Mit diesem Shortcut kann auf den ClipBoard Ring von Visual Studio standardmäßig zugegriffen werden. Mit dem ClipboardManager wird zusätzlich ein kleines Fenstereingeblendet, das die letzten Einträge in aus dem ClipBoard Ring anzeigt.

    ClipBrdMangr
    Mehr Informationen und den Download zum Add-in kann man auf diesem Blog finden: Clipboard Manager.
  4. BlogMyCode
    BlogMyCode ist ein Plugin für Visual Studio 2005. Es sendet formatierten Code direkt aus Visual Studio an den Live Writer. Für jeden der den LiveWriter schätzt, ein unerlässliches Add-in.

    BlogMyCode blogmycode2

    Mehr Informationen und den Download zum Add-in kann man auf diesem Blog finden: BlogMyCode.

  5. VS Properties Extender
    Dieses Add-in erweiterte den PropertyExplorer in Visual Studio um eine TextBox, in der ähnlich wie bei WPF-Projekten Properties von Controls und anderen Elementen aus dem Designer über deren Namen gefiltert werden können. Danke an dieser Stelle noch einmal an marcell (hat marcell selbst einen Blog?) für den interessanten Hinweis.
    Hawkeye-VSExtender Hawkeye-VSExtender-full-search

    Mehr Informationen und den Download zu diesem Addin kann man auf diesem Blog finden: VS Properties Extender

    Eins ist ganz klar, es gibt sicher noch viel mehr nützliche und gute Add-ins für Visual Studio. Sollte ich ein Add-in noch nicht kennen, kann diese der Leser der es kennt gerne in den Kommentar zu diesem Blog-Eintrag oder direkt per Mail an mich schreiben. Es wird mit Sicherheit dann in diese Liste aufgenommen ;-)

    HTH
    TOM_MUE

Labels: , ,

1.21.2008

Werte von Windows Forms Controls über "Command-ToolWindow" abfragen oder setzen

Beim Debuggen einer Windows Forms Anwendung,
kann man über das Command Tool-Window (Befehlsfenster) die Werte einzelner Controls die sich auf der zu debuggenden Form befinden mit einfachen Befehlen abfragen. Wird der Code der Windows Form mit dem Debugger schrittweise (F10) durchlaufen, kann man im „Command Tool-Window“ (CTRL + ALT + A) mit dem Befehl „immed“ die Eigenschaften der Controls, die sich auf der Windows Form befinden, abfragen. In meinem Beispiel gibt es auf der Windows Form ein TextBox-Control mit dem Namen „MyTextBox“. Von dieser TextBox kann man nun beim debuggen im „Command Tool-Window“ mit „this.MyTextBox.Text“ den Text der TextBox abfragen oder mit „this.MyTextBox.Text = „TOM_MUE“ einen neuen Text zur Laufzeit setzen. Da man während des Debuggen nur den Code in Visual Studio und nicht die aktuellen Werte der einzelnen Controls in der gestarteten Form sehen kann (die Form wird beim Debuggen nicht neu gezeichnet), ist diese Möglichkeit die aktuellen Werte über das Command Tool-Window der  einzelnen Controls abzufragen oder neu zu setzen ein sehr großer Vorteil.

CommandToolWindow

HTH
TOM_MUE

Labels: , , ,

Erstellen eines Visual Studio Add-In Projektes für Visual Studio 2005/2008

Bei meinem letzten Vortrag zur Visual Studio Add-In Entwicklung, habe ich beim Treffen der .NET User Group Franken im Oktober 07, einiges zur allgemeinen Erweiterung und Automatisierung von Visual Studio gezeigt. Neben vielen anderen interessanten Punkten habe ich auch das Erstellen von Project- und Project-Item-Templates gezeigt. Dabei kann man mit Hilfe von Visual Studio 2005 eigene Templates für Projects oder Templates für einzelne Items eines Projects erstellen. Der Benefit für mich als Add-in Entwickler ist die einmalige Erstellung eines auf meine Bedürfnisse angepasstes Add-In Projects, dass ich bei nachfolgenden Add-In Projects immer wieder verwenden kann. Was macht aber ein Project zu einem Visual Studio Add-in Project? Oder besser ausgedrückt:


Was benötigt man zur Erstellung eines Visual Studio Add-ins?

Neun Schritte sind notwendig um ein Add-in für Visual Studio (ab Version 2005) zu erstellen. Dabei wird nicht davon ausgegangen das Controls oder andere UI-Elemente für die Visual Studio IDE erstellt werden sollen. Die dafür notwendigen Schritte, werden in einem Weiteren Blogeintrag erläutert.

  1. Erstellen Sie ein einfaches ClassLibrary Project mit Visual Studio (2005/2008). Speichern Sie dieses Project in einem Verzeichnis Ihrer Wahl ab und legen Sie in den Projekteigenschaften einen aussagekräftigen Namespace für Ihr Add-in fest. Für dieses Beispiel wird der Namespace „CustomVisualStudioAddIns“ angenommen. Ändern Sie auch den automatisch eingefügten Namesspace in der Code Datei Class1.cs. Benennen Sie nun noch die automatisch generierte Klasse „Class1“ in „Connect“ um. Zur besseren Übersicht sollten Sie auch die automatisch generierte Code Datei von Class1.cs in Connect.cs umbenennen. Natürlich könnten Sie die Klasse oder die C# Code Datei benennen wie es Ihnen beliebt. Auch „HansDampf“ wäre möglich. :-)
    Die meisten Beispiele im Netz benutzen aber den Namen Connect für diese Klasse und eine mögliche Suche nach weiteren Beispielen könnte somit einfacher ausfallen.
  2. wechseln Sie nun in die Eigenschaftenseite Ihres Add-in Projects und wechseln Sie (falls nicht schon offen) in den Bereich „Application“. Öffnen Sie hier über den Button „Assembly Information …“ den Assembly Information Dialog. Setzen Sie das Häkchen bei „make Assembly COM-Visible“. Da im Herzen von Visual Studio 2005/2008 immer noch COM schlägt, ist es notwendig Ihre Add-in Assembly COM-Visible zu machen. Mehr Informationen zum Thema COM-Visible finden Sie hier und hier.
  3. Wechseln Sie nun in den Solution Explorer von Visual Studio um hier die notwendigen Referenzen zu setzen. Klicken Sie mit der rechten Maustaste auf Ihr Add-In Project und wählen Sie hier „Add Reference“. Im darauf erscheinenden Dialog wählen Sie in unter der Registerkarte .NET die Referenzen auf die Assemblies „EnvDTE“, „EnvDTE80“ und „Extensibility“.
  4. Damit Visual Studio ab Version 2005 überhaupt von der Existenz Ihres Add-ins etwas erfahren kann, müssen Sie es bei Visual Studio registrieren. Bis zur Visual Studio Version .NET 2003 waren dazu manuelle Einträge in der Windows Registry notwendig. Natürlich konnte man sich diese Arbeit bei der Verteilung vom Installer des Add-ins abnehmen lasse. Trotzdem sind solche Eingriffe in die Windows Registry immer mit einem gewissen Risiko verbunden und gestalten sich ab Windows Vista noch schwieriger oder gar unmöglich. Dieses Vorgehen wurde durch "*.AddIn" Registrierungsdateien abgelöst. Diese "*.AddIn" Dateien sind XML-basierend und benutzen das XML-Schema „xmlns=http://schemas.microsoft.com/AutomationExtensibility“. Mit der Anbindung an dieses Schema erhalten Sie von Visual Studio ein Intellisense und eine Autovervollständigung der AddIn-Tags. In Listing1 sehen Sie den Aufbau einer AddIn Datei, die alle Pflichtelemente enthält. Die Beschreibung der einzelnen Pflicht und optionalen AddIn Tags erhalten Sie hier in der MSDN von Microsoft. Es ist also ausreichend wenn Sie Ihr Visual Studio Add-in Project mit einer neuen XML Datei verknüpfen und deren Endung (Extension) in „.AddIn“ ändern. Der wichtigste Aspekt bei einer AddIn Datei ist der entsprechende Speicherort. Visual Studio schaut in bestimmten vordefinierten Verzeichnissen auf Ihrem PC Ausschau nach diesen *.AddIn Dateien. Wo Visual Studio nach diesen Dateien nachschaut, können Sie unter ToolsOptions im Bereich „Add-In/Macros Security“ nachsehen. Hier haben Sie auch die Möglichkeit neue Pfade hinzuzufügen oder existierende Einträge zu löschen. Natürlich nur dann, wenn Sie auch die nötigen Rechte auf Ihrem PC besitzen. Nun können Sie nicht für jedes Projekt einen neuen Pfad hinzufügen. Legen Sie sich deshalb am einfachsten einen eigenen Pfad, für Ihre eigenen *.AddIn Dateien an. Wählen Sie den Pfad möglichst flach. Das wird Ihnen unnötiges Navigieren in die Tiefen Ihrer Verzeichnisse ersparen. Wenn Sie sich zum Beispiel für den Pfad „C:\MyVSAddInFiles“ entscheiden, dann tragen Sie diesen Pfad auch im oben genannten Dialog der Visual Studio Optionen ein. Besonders wichtig ist das Vorgehen beim Erstellen einer solchen *.AddIn Datei in Ihrem Add-in Project. Wenn Sie über das Kontextmenü Ihres Add-in Projects ein neues Item als XML Datei hinzufügen, wird Ihnen Visual Studio die XML Datei im Verzeichnis Ihres Add-in Projects abspeichern. Das ist natürlich weniger Hilfreich wenn Visual Studio nicht in diesem Verzeichnis nach *.AddIn Dateien sucht. Erstellen Sie also eine neue XML Datei in dem Verzeichnis, in dem auch Visual Studio nach *.AddIn Dateien schaut und ändern sie die Dateiendung (Extension) in „*.AddIn“ um. Öffnen Sie nun das Kontextmenü Ihres Visual Studio Projects im Solution Explorer und wählen Sie den Eintrag „Add Existing Item …“. Wechseln Sie in dem sich geöffneten Dialog in das entsprechende Verzeichnis Ihrer zuvor erstellten „*.AddIn“ Datei und fügen Sie die Datei als Link Ihrem Projekt hinzu. Die Option „Add as Link..“ finden sie unter dem kleinen schwarzen Dreieck, das sich neben dem Button „Add“ befindet. Würden Sie hier nur „Add“ auswählen, würde Ihnen Visual Studio eine Kopie der Datei in das Verzeichnis Ihres Visual Studio Projektes legen und sie würden nie die Datei bearbeiten, auf die Visual Studio schaut.

    AddAsLink
  5. Damit Visual Studio 2005/2008 den Einsprungspunkt in Ihren Add-in findet, müssen sie nun der Klasse „Connect“ das Interface „IDTExtensibility2“ hinzufügen. Damit implementiert Ihre Klasse „Connect“ nun fünf neue Methoden. Einstiegsmethode für Visual Studio ist die Methode „OnConnection“. Hier werden an das Add-in alle nötigen Instanzen übergeben. So auch die Instanz des Visual Studio Erweiterungs-Model. Beginnen Sie in der Methode Connect mit der Initialisierung des DTE2-Objects und dem AddIn-Object.
  6. In der Methode „OnConnection“ sollten sie eine „Switch“ Anweisung verwenden um auf den ConnectMode für Ihr Add-in angepasst reagieren zu können. Es ist sehr wichtig zu wissen in welchem ConnectMode Ihr Add-In geladen wurde. Werden Sie zum Beispiel mit dem ConnectMode „ext_cm_UISetup“ geladen, haben Sie die Möglichkeit alle Ihre Commands und Controls in Visual Studio zu integrieren. Sie sollten dies auch nur unter diesem ConnectMode tun. Versuchen Sie Ihre Commands und dessen Controls in einem anderen ConnectMode immer und immer wieder zu initialisieren, dann wird Sie Visual Studio mit einer nicht abzufangenden COM-Exception aus Visual Studio verabschieden. Visual Studio schreibt sich alle initialisierten Commands und dessen Control in eine eigene Datei weg. Darum müssen und sollten Sie sich nur ein Mal ein Command und dessen Control in Visual Studio integrieren. Mehr zu den Bedeutungen der einzelnen ConnectMode, erfahren Sie hier.
  7. Haben Sie über Ihre zum Add-in gehörende *.Add-in Datei an Visual Studio die Anweisung gegeben, das es Ihr Add-in mit dem Start von Visual Studio laden soll, dann sollten Sie der Methode „OnStartupComplete“ besondere Aufmerksamkeit widmen. Versuchen Sie mit dem Start von Visual Studio im ConnectMode „ext_cm_Startup“ innerhalb der Methode „OnConnection“ auf UI-Elemente von Visual Studio zuzugreifen, dann kann es Ihnen sehr schnell passieren dass Sie von Visual Studio auf direktem Wege mit einer COM-Excepion aus Visual Studio rausschmeißt. Nutzen Sie deshalb im ConnectMode „ext_cm_Startup“ die Methode „OnStartupcomplete“. Ruft Visual Studio diese Methode auf, können Sie sich gewiss sein dass Visual Studio vollständig geladen wurde und Sie können nun auf andere UI-Elemente (zum Beispiel den Solution Explorer) zugreifen.
  8. Ihr Add-in kann auf mindestens drei verschiedene Weisen aus Visual Studio geladen werden.

    a. Über eine nicht händelbare COM-Exception
  9. b. Über den Add-In Manager von Visual Studio
    c. Durch das beenden von Visual Studio selbst

    Sollten Sie in Ihrem Add-in Event Handler mit „+= new“ referenziert haben, dann müssen Sie sich beim Entladen Ihres Add-ins auch wieder von den Handlern mit „-= new“ abnabeln. Tun Sie das nicht, kann Ihnen diese Unachtsamkeit Visual Studio mit einer weiteren COM-Exception danken und sie endgültig aus Visual Studio entladen. Wenn ein Benutzer von Visual Studio Ihr Add-in über den Add-in Manager aus Visual Studio lädt, dann wird Visual Studio in Ihrem Add-in die Methode „OnDisconnection“ aufrufen. Wird Visual Studio komplett beendet, wird ach wenn das Beenden von Visual Studio abgebrochen werden kann, in Ihrem Add-in die Methode OnBeginShutdown aufgerufen und danach die Methode „OnDisconnection“. Beachten Sie also, dass Sie in jedem Falle die Aufräumarbeiten in der Methode „OnDisconnection“ aufrufen. An die Methode „OnDisconnection“ übergibt Visual Studio einen „DisconnectMode“. Stellen Sie über dieses Methode Argument fest, warum Visual Studio Ihr Add-in entladen hat. Sollte Visual Studio diese Methode mit dem DisconnectMode „ext_dm_UISetupComplete“ aufrufen, müssen Sie natürlich keine Eventhandler aufräumen. Ihr Add-i wurde nur zum Initialisieren Ihrer Commands und Command-Controls aufgerufen und wird nun direkt von Visual Studio entladen.

  10. Um Ihr Visual Studio Add-in nun noch debuggen zu können, müssen Sie in den Eigenschaften Ihres Add-in Projects noch zwei kleine Einstellungen vornehmen. Setzen Sie im Bereich „Debug“ die Start Action auf „start external Application“ und tragen sie den Pfad „<Laufwerk>\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe“
    oder für VS2008
    „<Laufwerk>\Program Files\Microsoft Visual Studio 9\Common7\IDE\devenv.exe“
    ein. Damit wird Visual Studio als Ihr Host gestartet. Setzen Sie nun noch den Pfad für das Arbeitsverzeichnis der externen Applikation (Visual Studio) die beim Debuggen gestartet werden soll. Geben Sie dazu unter „Working directory“ den Pfad
    „<Laufwerk>\Program Files\Microsoft Visual Studio 8\Common7\IDE\“
    oder für VS2008
    „<Laufwerk>\Program Files\Microsoft Visual Studio 9\Common7\IDE\“ an.

Zum Abschluss wäre noch der Hinweis wichtig, das Sie es nicht verpassen sollten, nach beendigung Ihrer Arbeiten am Visual Studio Add-in auch die entsprechende *.AddIn Datei wieder unscharf zu schalten. Damit meine ich das Ändern der Dateiendung (Extension) auf *-AddIn_. Andernfalls wird beim nächsten Start dieses Add-in von Visual Studio wieder versucht zu laden. Sollte es noch einen kleinen Bug in Ihrem Add-in geben, würde hier nur eine unnötige Fehlermeldung von Visual Studio ausgegeben werden.

<?xml version="1.0" encoding="utf-16" standalone="no"?>
<Extensibility xmlns="http://schemas.microsoft.com/AutomationExtensibility">
<!--Für Visual Studio 2005-->
<HostApplication >
<Name>Microsoft Visual Studio</Name>
<Version >8.0</Version>
</HostApplication>

<!--Für Visual Studio 2008-->
<HostApplication >
<Name>Microsoft Visual Studio</Name>
<Version >9.0</Version>
</HostApplication>
<Addin >
<FullClassName>CustomVisualStudioAddIns.Connect</FullClassName>
<Assembly>..\src\BuildOutput\debug\VisualStudioAddIn.dll</Assembly>
<LoadBehavior>1</LoadBehavior>
</Addin>
</Extensibility>
Listing1

HTH

TOM_MUE


Labels: , ,

1.20.2008

Visual Studio-AddIn Tricks: Custom ToolWindow Tab Picture VS2005 / VS2008

Mit dem Automatisierungs-Objektmodell von Visual Studio,
ist es auf relativ einfache Weise möglich, benutzerdefinierte (custom) ToolWindows vom Typ EnvDTE.Window / EnvDTE80.Window2 zu erstellen. Außerdem kann für ein solches benutzerdefiniertes (custom) ToolWindow ein benutzerdefiniertes (custom) Tab Picture angegeben werden. Die Methode EnvDTE80.Window2.SetTabPicture erwartet ein IPictureDisp-COM-Type, ein Bitmap-Handle oder einen Pfad zu einer Bitmapdatei. In Visual Studio 2005 funktionieren alle drei Möglichkeiten wunderbar. Leider ist das unter Visual Studio 2008 nicht mehr so. Beonders der Versuch mit einem Bitmap-Handle (Image.GetHbitmap()) war in Visual Studio sehr einfach, doch lässt diese Variante Visual Studio 2008 ziemlich kalt. Den Weg über einen Pfad zu einem Bitmap, scheint Visual Studio 2008 auch nicht wirklich zu interessieren. Bleibt also nur der Weg über ein IPictureDisp-COM-Typ. Wenn man keine Erfahrung mit alten COM-Typen, den guten alten C /C++ Zeiten hat, dann wird man sich sicher die Frage stellen wie man nun an so ein IPictureDisp-COM-Typ kommt. Hier hilft ganz unvoreingenommen die VB-Welt. Legen Sie sich in Ihrem Projekt eine Referenz auf die DLL "Microsoft.VisualBasic.Compatibility.dll" an, die Sie in der Registerkarte .NET des Referenz-Dialoges von Visual Studio finden. In dieser DLL finden Sie eine Klasse mit dem Namen "Support" und in dieser Klasse die statische (static) Methode "ImageToIPicture(...)". Diese Methode erwartet ein Image-Object, das dann zum Beispiel aus Ihren Assembly-Ressourcen kommen kann. Hier ein Beispiel-Code in C# zum ermitteln des korrekten IPictureDisp Objects, entsprechend der Visual Studio Version:

private void InitializeCustomToolWindow()
{
//.. initialize custom ToolWindow-code

Image customToolWindowTabImage = GetCustoToolWindowTabImag(EnvDTE80.DTE2.Version);

EnvDTE80.Window2.SetTabPicture(Support.ImageToIPicture(customToolWindowTabImage));
}

private Image GetCustoToolWindowTabImage(string visualStudioVersion)
{
Image returnValue = null;

if (visualStudioVersion.Equals("8.0"))
returnValue = Properties.Resources.VS2005CustomToolWindowI;

else if (visualStudioVersion.Equals("9.0"))
{
returnValue = Properties.Resources.VS2008CustomToolWindowI;
}

return returnValue;
}

Hier noch die Farb-Codes für den jeweiligen Transparenzwert, den die unterschiedlichen Visual Studio Versionen erwarten:

VS2005 = RGB 254,0,254
VS2008 = RGB 0,254,0

(Ironie: Toll das die Transparenzwerte von MS immer wieder geändert werden!)

HTH
TOM_MUE

Labels: , ,

Visual Studio Tricks: Bookmark Text in FindResults / Text im Output Window

Wie es der Zufall es so will, findet man oft die kleinen feinen Tricks per Zufall. So auch mein heutiger Trick.

Mit der Zeit wächst der Textumfang (Code-Text) jedes Projektes. Beim Finden von Text oder auch Textsegmenten unterstützt die Suche von Visual Studio erheblich.Immer wieder kommt es aber vor, dass man Das was man sucht, nicht genau spezifizieren kann so das viele Textzeilen im "Find Results-ToolWindow" angezeigt werden können. Dabei kann immer öfter der Überblick bei den Suchergebnissen verloren gehen. Durch Zufall habe ich herausgefunden das man ähnlich wie im Code-Editor auch imFind Results-ToolWindow oder aber auch im Output-ToolWindow Bookmarks setzen kann. Um diese Bookmarks im "Find Results-ToolWindow" oder im "Output-ToolWindow"zu setzen, kann man wie folgt vorgehen:

  1. Öffnen Sie mit der Tastenkombination Strg + Shift + F die Suche in der kompletten aktuell geladenen Solution. Geben Sie das zu suchende Wort ein. In meinem Fall suche ich nach EnvDTE.


    Visual Studio zeigt Ihnen nun im "Find Results-ToolWindow" die Codezeilen an, in denen das Wort EnvDTE gefunden wurde. Da ich (natürlich für dieses Beispiel mit Absicht)im Such-Dialog nicht explizit angegeben habe das NUR nach dem ganzen Wort EnvDTE gesucht werden soll, wird mir auch das Ergebnis für EnvDTE80 angezeigt.


  2. Mein erster Versuch war alle Ergebnisse von Hand zu markieren, die meinen nachfolgenden Suchkriterien entsprechen. Ich wollte mir alle Zeilen markieren in denen die Worte "using EnvDTE" und "using EnvDTE80" vorkommen. So wie im Code-Editor kann ich aber keinen Multiselect auf unterschiedliche Ergebniszeilen im "Find Results-ToolWindow" ausführen.

  3. Setzen Sie nun den Fokus mit der Maus in das von Visual Studio angezeigte "Find Results-ToolWindow" und rufen Sie den Find-Dialog mit der Tastenkombination Strg + F auf.geben Sie hier nun genau an was sie im "Find Results-ToolWindow" finden wollen.


    Ich habe zur Suche der beiden Wörter EnvDTE und EnvDTE80 in Verbindung mit dem Wörtchen using die Regular Expressions verwendet.Nun könnte ich einfach Stück für Stück mit "Find Next" jede einzelne Stelle selektieren die meine gesuchten Wortkombinationen enthält.Als ich aber gesehen habe, das der Button "Bookmark All" anwählbar ist, bekam ich von Visual Studio mit einem Klick auf den Button dasfolgende Ergebnis im "Find Results ToolWindow" angezeigt:

    Wie ich finde (ich möchte hier nicht zu meiner Farbwahl überreden ) ist das Ergebnis doch viel besser überschaubarer. Es ist auch möglich die Bookmarks wieder zu entfehrnen. Man muss nur das "Bookmarks-ToolWindow" öffnen. Dann findet man auch die Bookmarks wieder. Zwar ohne Text aber man kann sie entfernen und muss für eine erneute Markierund die Suche über die Solution nicht noch einmal anstoßen. Dieser Trick gilt übrigens für Visual Studio 2005 und 2008.


    HTH
    TOM_MUE

Labels: , ,