Archive for the ‘Visual Studio’ Category
Oktober 8th, 2010
Seit gestern beschäftige ich mich mit einem neuen AddOn für Visual Studio. Ein AddIn, das die Chance hat, eines der wichtigsten der nächsten Zeit zu werden. Die Rede ist von NuPack. NuPack ist Paket-Manager, der es ermöglicht auf natürliche Art und Weise benötigte externe Assemblies in ein Visual Studio-Projekt aufzunehmen. Kein Erzeugen eines Lib-Ordners mehr. Kein SVN-Copy oder ähnliches, um die Assemblies in den Lib-Ordner zu kopieren…
Doch wie funktioniert das Ganze mit NuPack? Eigentlich ganz einfach. Als erstes brauchen wir mal das AddIn. Dieses kann zum einen von http://nupack.codeplex.com geladen oder über den Extension Manager hinzugefügt werden.

Nach erfolgreicher Installation der Erweiterung erhält man einen neuen Menüpunkt im Solution Explorer, der es einem erlaubt ein Package dem Projekt hinzuzufügen.

Im folgenden Dialog, der dem des Extension Managers nachempfunden wurde, findet man die bereitgestellten Assemblies bzw. Funktionalitäten.

Mit einem Klick auf den entsprechenden Install-Button wird das Package geladen. Automatisch wird die geladene Assembly neben der Solution in einen Package-Ordner abgelegt und die Referenz auf die Assembly dem Projekt hinzugefügt wird.

Weiterhin besteht die Möglichkeit Config-Einträge automatisch in die entsprechende Config einzutragen. Ein Beispiel hierfür ist Elmah.

Zusätzlich zu dem Dialog gestützten Installieren, gibt es noch den Weg über die Package Manager Console, die mit PowerShell-Befehlen die Funktionen des Dialogs abdeckt und darüber hinaus noch einige zusätzliche Funktionen bietet.

Ein weiterer spannender Aspekt der Erweiterung ist die generelle Funktionsweise. Die Liste der zur Verfügung stehenden Assemblies wird über einen Feed bereitgestellt, der in den Settings von Visual Studio eingestellt bzw. angepasst werden kann. Über diesen Weg und die Tatsache, dass ebenfalls ein Tool zur Erstellung der Packages auf der Code-Plex-Seite bereitgestellt wurde, lassen sich auch im Firmenumfeld deutlich einfachere Szenarien für die Bereitstellung einheitlicher und kompatibler Erweiterungen darstellen. Man braucht ja nur einen eigenen Feed mit den geprüften und erlaubten Assemblies bereitstellen und schon können diese von den Kollegen genutzt werden.
September 5th, 2008
Ich arbeitet zur Zeit in der Firma an einem Prototypen für eine neue Softwareversion. Eine Anforderung ist die transparente Darstellung von mehreren Werten in einem Balken-Diagramm. Leider gibt es für Wpf noch keine freien Komponenten, die für meine Aufgabe nutzbar wären.
Abends kam mir dann die Idee, das Problem selbst zu lösen. Gesagt getan… nach einigen kleinen oder auch großen Kämpfen mit Wpf und Xaml habe ich heute endlich eine in meinen Augen vorzeigbar Version fertiggestellt.

WpfSimpleChart – Source
WpfSimpleChart – Demo
Februar 29th, 2008
Schon seit längerem belächelte ich das Visual Studio von meinem Kollegen Tobi, das in seinem dunklen Gewand vor sich hinarbeitet. Ich konnte dem aber bisher nicht wirklich etwas abgewinnen… Vor ein paar Tagen habe ich dann auf dem Blog von Oliver Scheer mal wieder etwas zur “Dunklen Seite der Macht” gelesen… und habe mir gesagt OK. Schwarz auf Weiß den ganzen Tag ist schon recht anstrengend für die Augen… vielleicht ist das ja doch ganz nett. Gesagt getan… die dunklen Settings installiert und nach dem ersten Schock einfach mal ein wenig programmiert, um die neuen Farben auf mich wirken zu lassen.
Nun nach ein paar Tagen muss ich sagen, das ich mit der neuen Farbauswahl vollkommen zufrieden bin. Es ist bei weitem nicht so grell, wie der alte weiße Hintergrund. Ich habe noch an ein paar Farbwerten und Schriftarten gedreht. Zum Beispiel ist der Hintergrund nun nicht mehr schwarz, sondern in einem angenehmen grau.
Hiermal ein Blick auf mein Visual Studio: 
Bei Interesse – hier ist die Settingsdatei (einfach in “c:\Dokumente und Einstellungen\[Benutzername]\Eigene Dateien\Visual Studio 2008\Settings\” speichern)
Settings
Januar 20th, 2008
Vor ein paar Tagen habe ich mich mal mit der Frage auseinandergesetzt, wie man mit Hilfe der DTE in einen vsPackage Einstellungen ändern kann. Auslöser dafür war der Wunsch meines Kollegen Tobi, die Einstellungen für das Debugging mit Hilfe des SourceServers von Microsoft auf einfache Art und Weise ein und ausschalten zu können. Die Einstellungen jedes Mal über die Tools -> Options anzupassen dauert einfach zu lange.
Einfach ein Visual Studio Integration Package über File->New…->Projects->Extensibility anlegen und in die Methode “MenuItemCallback” folgende Code schreiben bzw. kopieren:
bool? serverSupport = false;
DTE dte = GetService(typeof(DTE)) as DTE;
Properties properties = dte.get_Properties("Debugging", "General");
// suchen der richtigen Einstellungen
foreach (EnvDTE.Property prop in properties)
{
if (prop.Name == "EnableJustMyCode")
{
prop.Value = !Convert.ToBoolean(prop.Value);
serverSupport = !Convert.ToBoolean(prop.Value);
}
if (prop.Name == "EnableSourceServer")
{
if (serverSupport.HasValue)
{
prop.Value = serverSupport.Value;
((MenuCommand)sender).Checked = serverSupport.Value;
}
}
}
Januar 10th, 2008
Beim Versuch mein vsPackage für die Implementierung von Interfaces ein wenig zu erweitern, bin ich auch ein seltsames Problem gestoßen.
Über die vom AddIn erzeugten Getter und Setter wollte ich ein Attribute per Code setzen. Hierfür gibt es eigentlich die Methode “AddAttribute”…Gesagt getan…hier der Code:
CodeFunction getter = prop.Getter;
getter.Attributes("MyAttribute", "myValue", -1);
Der Compiler erzeugt alles ganz brav und startet das vsPackage im Visual Studio Hive. Alles fein…naja vielleicht bis auf, wenn man das AddIn benutzen will.
An besagter Stelle kommt eine sehr aussagekräftige Exception mit der Meldung “Unbekannter Fehler”. Komisch ist nur, das die Methode wohl nur auf den Gettern bzw. Settern(CodeFunction) Probleme macht. Bei “CodeProperty” bzw. “CodeClass” funktioniert alles wunderbar….
Dezember 18th, 2007
Eins meiner ersten Ziele, nach der Installation von Visual Studio 2008, war es, eine Erweiterung für Visual Studio zu schreiben, die alle Details eines Interfaces in einer davon abgeleiteten Klasse implementiert. Ja ich weiß, Visual Studio bring eine solche Funktion mit, aber diese erzeugt weder die benötigten Variablen, noch füllt sie die Getter und Setter mit den tatsächlichen Zuweisungen. Als ich die Erweiterung fertig hatte (mehr dazu in einem anderen Beitrag), wollte ich ein Setup erstellen, um es an meine Kollegen weiterzugeben. Bei Microsoft fand ich ein sehr gutes How to, das mir das Erstellen meines Setups Schritt für Schritt erklärte (How To Deploy a vsPackage Video for Visual Studio 2005). Dieses How to ist zwar für Visual Studio 2005, das ist kein Problem.
In einem der Schritte werden die Registry-Einstellungen festgelegt. Dafür wird das Commandline-Tool RegPkg.exe verwendet. Ihr findet es im Visual Studio SDK-Ordner (Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Tools\Bin\). Mit dem Parameter “/root” wird der Pfad zu Visual Studio festgelegt. An dieser Stelle muß man vorsichtig sein. Wenn man hinter dem letzten Ordnername des Pfades einen Backslash hat (z.B. /root:SOFTWARE\Microsoft\VisualStudio\9.0\), dann generiert RegPkg.exe eine Reg-Datei mit doppeltem und damit falschem Backslash.
Ich mußte recht lange suchen, bis ich diesen recht unschönen Fehler gefunden hatte.