This is the archived version of Roland Weigelt's weblog that ran from 2003 to 2023 at weblogs.asp.net

Contents tagged with .NET

  • How to Determine the Localized Name of the Scope for a Key Binding (Dirty Hack)

    Here’s a tip I actually wanted to share some time ago, but kind of forgot about it until I got reminded by a recent post by Thomas Müller who I had nice contact with some months ago.

    In order to assign a keyboard shortcut to a Visual Studio command from code (e.g. in an add-in), one has to specify a binding consisting of the shortcut’s scope (e.g. “Global”, or “Text Editor”) and the actual keys to be pressed (e.g. “ctrl+shift+d”). For example in C#:

     

    DTE2 objApplication;
    ...
    Command cmd=objApplication.Commands.Item("TheNamespace.TheClass.TheCommand", -1);
    cmd.Bindings="Text Editor::Ctrl+Shift+D";

     

    (The example shows how to assign a single shortcut. Multiple shortcuts can be assigned, please see this entry in the MSDN libary for more details)

    When Microsoft released the international versions of Visual Studio 2005, I received a lot of feedback from users of my add-in GhostDoc who ran into problems during setup with the creation of the hotkey for the “Document This” command. Debugging GhostDoc on a German version of Visual Studio 2005 (which by the way was a strange experience as I never had used a developer tool in my native language before), I found out the following:

    • When you read a binding of a command (in C# by casting the Bindings property of a Command instance to object[], and casting an array item to string), you get the localized text (e.g. “Text-Editor::Strg+Umschalt+D” in German Visual Studio 2005)
    • When you define a binding using the localized text, you get an error (hmm…).
    • When you define a binding using the non-localized text, you get an error (huh?).
    • You have to define a binding using the localized scope and the non-localized key names (…mkay).

    But where to get the localized name of the scope from? I couldn’t find anything on the web, and posting a question in the MSDN Extensibility Forum didn’t help either.

    What I did in the end must be considered a dirty hack and should be used with caution:

    • In my case, I needed the localized name for “Text Editor” (“Text-Editor” in German, “Editor de Texto” in Spanish).
    • I chose a command that – at least with a high probability – never would be assigned to an other scope than “Text Editor” (Edit.DeleteBackwards) and read the first entry of its bindings.
    • The sub-string up to the “::” was the desired localized name of the scope.

    Here's the C# code to do that (all error handling stripped):

    Command cmd=objApplication.Commands.Item("Edit.DeleteBackwards", -1);
    object[] arrBindings = (object[]) cmd.Bindings;
    string strBinding = (string)arrBindings[0];
    string strScope = strBinding.Substring(0, strBinding.IndexOf("::"));

     

    By now, every professional developer should have bad feeling about this solution – there are just too many coding catastrophes in the history of computing that started with “it should be safe to do that, nobody will ever…”. So if you have a better solution, please let me know. If you do chose to go that route and need the localized name of an other scope than “Text Editor”, make sure you chose the command veeeery wisely.

  • Nette Kollegen für Bonn gesucht (non-english Post)

    20060625_CommaSoft

    Die Abteilung infonea, in der ich bei Comma Soft (Standort Bonn) arbeite, will sich verstärken und sucht neue Leute:

    • ein Projekt-Consultant / -Leiter (w/m)
    • ein Software-Entwickler (w/m) für das Produkt-Team

    Informationen dazu in der Stellenanzeige in der aktuellen c’t (14/2006, Seite 271), oder etwas detaillierter auf unserer Website, nämlich hier (Consultant) und hier (Entwickler).

    20060625_Infonea

    Besonders am Herzen liegt mir die Ausschreibung für den Software-Entwickler für das Produkt-Team, schließlich geht es um einen zukünftigen direkten Kollegen! Daher dazu noch ein paar weitere Infos:

    Das Produkt-Team ist ein ziemlich fitter Haufen Software-Entwickler (Entwickler, nicht Programmierer!), jeder einzelne in der Lage, auch komplexe Aufgaben eigenständig von der ersten Skizze auf einem Blatt Papier hin zu einem erfolgreichen Ergebnis zu führen. Dabei sind wir keine Ansammlung von egozentrischen Einzelkämpfern; wir legen Wert darauf, gemeinsam zur bestmöglichen Lösung zu kommen. Kommunikation und Know-How-Austausch sind uns wichtig. Gleichzeitig können wir darauf vertrauen, dass die Implementation auch dann in guten Händen ist, wenn nicht ständig jemand drüberschaut (wobei die Arbeit nicht zwangsläufig alleine geschehen muss: bei bestimmten Modulen haben wir auch schon mehrfach erfolgreich Pair Programming eingesetzt – es kommt halt immer auf die jeweilige Situation an).

    Das gegenseitige Vertrauen und die entspannte Zusammenarbeit ohne politische Grabenkämpfe funktionieren deshalb, weil wir die richtigen Leute mit der richtigen Einstellung und den richtigen “Skillz” haben. Um so wichtiger ist es nun, dass wir uns wirklich passend verstärken. Wie heisst es in der Anzeige in der c’t: “Wissensmanagement braucht kluge Köpfe. Wir suchen die Netten davon”. Das trifft es ziemlich genau.

    20060625_KnowledgePeople

    Was wird das Einsatzgebiet des neuen Entwicklers sein? Sagen wir mal so: Die Liste der Dinge, um die wir das Produkt infonea erweitern wollen, ist lang. Wir verwenden so ziemlich jede .NET-Technologie irgendwo in unserem Produkt. Wir arbeiten sowohl mit ASP.Net als auch WinForms. Ob Webservices oder hochinteraktive GUIs, ob Anwendungsprogramm oder Entwicklungstool – es gibt bei uns im Team eine Vielzahl von Themen. An welcher Stelle wir uns verstärken, hängt auch ein wenig davon ab, welche Kenntnisse der neue Entwickler mitbringt, insbesondere in Bezug auf das in der Anzeige gewünschte Experten-Know-How (wobei die Beispiele wirklich nur als Beispiele zu verstehen sind). Gibt es einen Bereich, in dem Du richtig gut bist? Lass es uns wissen!

    Generell gilt: schon fast wichtiger als breite Grundkenntnisse im .NET-Bereich (da kann man viele Dinge auch noch bei Bedarf lernen) ist es, dass der neue Entwickler Erfahrung darin hat, Software zu entwickeln und mit einem hohen Anspruch an Qualität auslieferfähig zu machen (yeah, ship it baby!). Wir lassen es dabei erst einmal offen, ob ein Alter Hase mit langer Produkterfahrung, oder ein Absolvent frisch von der Uni (der z.B. nebenher gearbeitet, im Web eigene Software veröffentlicht, oder an Open Source Projekten mitgearbeitet hat) der Richtige für uns ist. Ich persönlich habe z.B. direkt nach der Uni bei Comma Soft angefangen (vor fast 10 Jahren, wow wie die Zeit vergeht), hatte aber schon während des Studiums sowohl im Nebenjob als auch in der Freizeit erfolgreich entwickelt.

    Noch ein paar Worte zum Umfeld: Comma Soft hat seinen Bonner Standort im Stadtteil Pützchen (östlicher Stadtrand), ca. 5 Minuten von der A59 entfernt. Das Gebäude liegt in der Nähe des Waldes, zu Fuß sind es nur ein paar Minuten zum Freibad Ennert (jetzt im Sommer eine nette Sache in der Mittagspause). In den Büros lässt sich angenehm arbeiten, die Teilnehmer der User-Treffen von Bonn-to-Code.Net zeigen sich regelmäßig angetan von den Räumlichkeiten und der Einrichtung. Bonn selbst ist eine nette Uni-Stadt mit ca. 310000 Einwohnern, und Köln ist auch nur 30 Minuten entfernt.

    Fragen zu technischen Themen oder der täglichen Arbeit beantworte ich gerne, ansonsten sei auf die Kontaktadresse in der Anzeige oder der Website verwiesen.

    Also: Meldet Euch, vielleicht arbeiten wir ja bald zusammen!

  • BASTA Award 2006 (non-english post)

    20060615_BastaAward

    Dieses Jahr wird im Rahmen der Konferenz BASTA! (www.basta.net) erstmalig der BASTA Award verliehen. Zitat aus der Ankündigung:

    Mit dem Award sollen die besten und innovativsten Projekte aus Deutschland, Österreich und der Schweiz im Bereich .NET gefördert und mit nicht weniger als 20.000 Euro gewürdigt werden. Dabei kann es sich um ein Produkt, eine Technologie, ein Forschungsthema, eine Organisation, ein Buch oder einen beliebigen anderen Beitrag handeln. Im Mittelpunkt steht der Wert, den die Innovation für die Welt von .NET darstellt.

    Einsendeschluss ist der 31. Juli 2006, mehr Informationen unter www.basta-award.de.