Laden...

Forenbeiträge von TOM_MUE Ingesamt 200 Beiträge

14.01.2008 - 14:41 Uhr

Hallo David_pd,

nun das würde zur Folge haben das midestens der Hintergrund ganz in Schwarz abgespeichert werden würde.

Aber danke für Deine Hilfe!

Gruß
TOM_MUE

14.01.2008 - 13:42 Uhr

Hallo @all,

ich versuche gerade für eine Übersicht von Images, die in Visual Studio ( 2005/2008 ) für CommandControls verwendet werden können eine Übersicht zu erstellen. Für diese Übersicht initialisiere ich mit ein Picture vom Typ "stdole.StdPicture" und versuche es dann mit transparenten hintergrund abzuspeichern. Mein Code dazu sieht so aus (ist nur ein Ausschnitt):


...
CommandBarButton commandBarButton = tempCommand.AddControl(commandBar, 1) as CommandBarButton;

            stdole.StdPicture picture = commandBarButton.Picture;

            using (Image image = Support.IPictureDispToImage(picture))
            {
                using (Bitmap myBitmap = new Bitmap(image,16,16))
                {
                    myBitmap.MakeTransparent();

                    myBitmap.Save(@"C:\imageII.png", ImageFormat.Png);
                }
            }

Leider ist das Ergebins alles andere als befriedigend. Wie man an dem folgenden Bild sehen kann, ist das Smiley ziemlich ausgefranzt dargestellt.

Der Hintergrund wird nur teilweise transparent gezeichnet. Bei manchen Images werden aber durch die Transparenz schwarze Schrift-Teile im Image transparent gezeichnet. Was zur Folge hat, das man die Schrift nicht mehr als Schrift sondern nur noch als Klumpen erkennt.
Nun muss ich noch dazu erwähnen, das es in dem Object commandBarButton noch eine eigenschaft mit dem Namen Mask gibt. Diese Maske ist praktisch der Deckel für das Image, der Visual Studio anzeigt, in welchem Bereich das Image transparent, und in welchem es nicht Transparent gezeichnet werden soll. Das geschieht mit der Farbe Schwarz.
Visual Studio zeichnet mit beiden werten das Image in einer sehr sehr guten Qualität. Siehe dieses Bild:

Nur noch mal zur Verdeutlichung der Ausgangssituation. Ich zeichne oder erstelle das Image das in Visual Studio verwendet wird nicht selbst. Visual Studio holt sich dieses Image aus einer eigenen DLL. Ich gebe nur über einen Index an, welches Image verwendet werden soll. Somit kann ich die das Image nicht beeinflussen. Für mich ist es wichtig das ich das Image in der richtigen Art mit .NET abspeicher, damit es nicht so ausgefranzt ausschaut. beim Speichern denke ich, mache ich einfach noch Fehler?!

Kann mir da jemand auf die Sprünge helfen?

Besten Dank
TOM_MUE

10.11.2007 - 13:31 Uhr

Hallo tom-essen,

danke für Deine informative Antwort. Ich selbst habe die API des Windows Adressbuch noch nicht benutzt. Ist aber gut zu wissen, dass man einen Zugriff auf ein Adressbuch hat, und nicht wieder alles selbst neuprogrammieren muss. Hast Du mal herausgefunden, ob das Adressbuch von Windows immer installiert ist, oder mit dem Entfehrnen von Outlook Express aus den Windows-Fetures ab Windows XP auch verschwindet? Das wäre dann natürlich schlecht 😭

Ich habe noch mal meine alten Samples durchforstet und eine weitere Windows API gefunden. Sie nennte sich CDO(Collaboration Data Objects) und liegt im System32 Verzeichnis. Mit dieser API kann man Mails versenden, eingegange Mails lesen und und und. Und jetzt der Vorteil dieser API. Das ganze kann man auf seine eigene Inbox etc. ohne Outlook nutzen.

Hier mal ein Link zum entsprechenden Knowledge-Eintrag auf den MS-Seiten:

HowTo use CDO

Und hier noch eine gute Diskussion zum Thema CDO: CDO Diskussion

Ich habe noch einen kleinen Workaround zum auffinden von nützlichen Windows API´s gefunden. Wenn man ein Abbo der Zeitschrift dotnetpro hat, kann man alle Artikel online als PDF lesen. Über deren Suchfunktion kann man "Windows API" eingeben und bekommt dazu einige Artikel zum nachlesen. Einen habe ich gefunden der beschreibt, wie man die Volltextsuche von Windows nutzen kann um nach Mailadressen in Dokumenten zu suchen.

Hier noch der Link zur dotnetpro Magazin

Artikel: Suchprogramm für E-Mail-Adressen, Teil 1

Grüße
TOM_MUE

07.11.2007 - 09:50 Uhr

Original von herbivore
Hallo TOM_MUE,

naja, du kannst alle Win32-APIs nutzen. Es gibt ja auch eine komplette Win32-API-Dokumentation auf MSDN. Da findest du alles, was das Herz begehrt.

Ansonsten wie regen schon sagt:
>

herbivore

Danke für die Antwort. Das mit der MSDN habe ich auch schon probiert. Ja, das ist ne ganz gute Referenz 😉

Vielleicht habe ich mich aber in meiner Fragestellung etwas falsch ausgedrückt.

Zweiter Versuch 😉 :

Ich habe keine Not, irgendeine API zu finden oder wie der pinvoke MEchanismus funktioniert. Hatte meine Frage ehern als Anregung zu einem kleinen Erfahrungsaustausch verstanden. Ganz nach dem Motto "Hey, ich habe die API XYZ für das abfragen von BlaBliBlub benutzt. Das hatte DEN Vorteil und ich bin froh das ich sie gefunden habe denn DAS ist nicht in .NET abgebildet"

Das wäre zum einen befriedigend für mich, und zum anderen würde es als schöne Referenz hier im Forum dienen, für alle die Später die gleiche Frage haben. Wisst Ihr wie oft hier im Forum auf Fragen einfach ein Link hingerotzt wurde? Ganz besonders h--p://pinvoke.net?

Ich weiß, ich bin hier der Fragende und in der Erwartungshaltung. Aber ich kenne aus meinen Beginnerzeiten die Qualitäten der Antworten aus MyCsharp anders!

!!! Ist konstruktiv gemeint !!!

(GrußFormel vergessen (schäm))

Grüßla
TOM_MUE

07.11.2007 - 09:42 Uhr

Original von regen

>

?(

Wow, danke für diese Antwort! 🤔

TOM

07.11.2007 - 09:33 Uhr

Hallo,

mich würde mal interessieren, welche Windows API´s (die von ihrer Funktionalität nicht in .NET abgebildet oder nur gewrappt sind) ihr gerne oder gezwungener Maßen nutzt und wie ihr sie gefunden habt. Ich selbst nutze zum Beispiel die DPAPI oder "Background Intelligent Transfer Service". Ich kann mich auch noch schwach erinnern, das es mal eine spezielle API gab, mit der man Mails / Messages anprogrammieren kann. Das ganze war unter Windows XP Pro.

Ich würde mich sehr freuen wenn Ihr noch ein paar API´s mehr nennen könntet und wofür sie gut sind. Ich finde man sollte nicht immer das Rad neu erfinden müssen und Dinge die mit dem System schon mitgeliefert sind auch nutzen.

Besten Dank

TOM

19.08.2007 - 16:16 Uhr

hallo,

kann mir jemand von Euch die Frage beantworten:

"Kann man die aktuelle Version von Log4Net auf dem Compact Framework 2.0 verwenden?"

Besten Dank
TOM_MUE

06.08.2007 - 15:29 Uhr

Servus @SylverSky,

ich gehe davon aus, dass Du Dein angesprochenes Add-in Projekt mit dem Add-in Assistenten von Visual Studio 2005 erstellt hast. Wenn dem wirklich so ist, dann wirst Du auch gegenüber den Add-in Projekten aus Visual Studio .NET 2003 kein Setup Projekt automatisch erstellt bekommen. Das hat den einfachen Hintergrund, dass mit den Add-ins für Visual Studio 2005 ein X-Copy Deployment möglich ist. Möchtest Du trotzdem Dein Add-in mit einem Setup (*.msi File) verteilen, dann kannst Du der Solution in der sich Dein Add-in Projekt befindet einfach ein Setup Projekt hinzufügen und alle nötigen Voraussetzungen für die Installation Deines Add-ins einstellen.

HTH

TOM_MUE

17.04.2007 - 13:57 Uhr

Hallo MasterOfDesaster,

so wie Dein Code ausschaut, wird es in erster Linie daran liegen, dass der Garbage Collector Dein Object vom Typ "CommandEvents" aufräumt. Mit dem Verlassen der Methode wird dieses Object zum Abschuss freigegeben. Das sind aber .NET grundlagen und die sollten schon sitzen. Siehe hierzu auch mein letztzen Artikel im dotnet-magazin "Auf dem Weg zum perfekten Code Editor".

Auf dem Weg zum perfekten Code Editor

Im Namensraum EnvDTE gibt es eine BuildEvents-Schnittstelle die Du für BuildEvents von VS2005 nutzen kannst.

WICHTIG! WICHTIG! So wie Du Dich an ein Event mit einem EventHandler ranhängst, musst Du Dich für eine saubere Add-in Programmerung auch wieder von dem Event abkoppeln. Und zwar dann, wenn das Add-In aus der IDE entladen wird oder wenn es durch das Beenden der IDE ausgeladen wird.

Hier eine Beispielimplementierung:



    public class Connect:IDTExtensibility2
    {
        private EnvDTE80.DTE2 _applicationObject = null;

        private EnvDTE.BuildEvents buildEvents = null;

        #region IDTExtensibility2 Members

        public void OnConnection( object Application , ext_ConnectMode ConnectMode , object AddInInst , ref Array custom )
        {
            _applicationObject = Application as DTE2;

            if ( ConnectMode != ext_ConnectMode.ext_cm_UISetup )
            {
                this.SetupVS2005Events( );
            }
        }

        public void OnStartupComplete( ref Array custom )
        {

        }

        public void OnAddInsUpdate( ref Array custom )
        {

        }

        public void OnBeginShutdown( ref Array custom )
        {

        }

        public void OnDisconnection( ext_DisconnectMode RemoveMode , ref Array custom )
        {
            if ( RemoveMode != ext_DisconnectMode.ext_dm_UISetupComplete )
            {
                this.DisconnectVS2005Events( );
            }
        }


        private void SetupVS2005Events( )
        {
           this.buildEvents = _applicationObject.Events.BuildEvents;
           
           this.buildEvents.OnBuildBegin += new _dispBuildEvents_OnBuildBeginEventHandler(OnBuildBegin);
        }

        private void DisconnectVS2005Events( )
        {
            if(this.buildEvents != null)
                this.buildEvents.OnBuildBegin -= new _dispBuildEvents_OnBuildBeginEventHandler( OnBuildBegin );
        }

        #endregion
    }

HTH
TOM_MUE

17.04.2007 - 09:13 Uhr

Hallo CrazyPlaya,

also mit RegSvr32 kannst Du eine Komponente auf Deinem System registrieren oder de-registrieren (ist "de-registrieren ein deutsches Wort?).

Wie oben schon geschrieben:

Zusätzlich zur herkömmlichen COM-Registrierung muss das COM-Add-In sich bei jeder Office-Anwendung registrieren, in der es ausgeführt wird. Damit das Add-In bei einer bestimmten Anwendung registriert werden kann, muss es einen Teilschlüssel mit seiner Programm-ID als Namen im folgenden Registrierungsschlüssel erstellen...

Du wirst also entweder ein Setup, ein Skript etc. dafür bemühen müssen um dein Add-in bei den Office-Hostanwendungen zu registrieren. Im Add-in Assistenten von Visual Studio xxxx gibst Du ja direkt an für welche Office-Anwendung dein Add-in gelten soll. Der Assistent übernimmt hier für Dich die Registrierung in der Windows Registrierung. Ein sehr einfacher Workaround ist das Erstellen eines Backup das Registry-Zweiges in dem die Einträge vom Assistenten vorgenommen werden. Wenn Du dann Deine Arbeiten beendet hast kann Du das Backup wieder in die Windows-Registrierung einspielen.

Wie weit bist Du denn selbst bei dem Thema gekommen?

HTH

TOM_MUE

12.04.2007 - 16:31 Uhr

Hallo CrazyPlaya,

vielleicht in dem Du das Add-in an den entsprechenden Stellen in der Windowsregistrierung entweder manuell oder durch ein Setup wieder austrägst?!

😉

HTH

TOM_MUE

07.03.2007 - 10:41 Uhr

Hallo,

sorry das ich mich hier so spät melde. Da ich aber in meinem Job sehr viel unterwegs bin, kann nur selten hier im Forum vorbeischauen.

Vielen Dank an alle die bisher geantwortet haben! Eure Vorschläge decken sich in jeden Fall mit meinen Gedanken, bringen neue Ideen und geleichen der Mail-Flut, die ich über mein Blog zu diesem Thema bekomme.

@Armitage:

Das zeigt mir, das in jedem Fall in der Beschreibung des Buches auch die User gefesselt werden müssen, die noch nie etwas mit diesem Thema zu tun hatten 😉

@cdr:

Es wird schwierig sein ein Add-in ohne viel beschreibenden Text weiter zu geben, wenn sich als Add-in-Entwickler nicht mit Deployment beschäftigen möchte. Es zeigt mir aber auch das es die handgriffe über den Setup-Designer des VS2005 erklärt sein sollten. Wenn man die verinnerlicht hat, dann ist der Rest kein Problem und in kurzer Zeit umgesetzt. Danke auch für die anderen Punkte von Dir!

@dr4g0n76

Danke für Deine Antwort! Zu Deinem Punkt 3 muss ich aber sagen, dass es sich dabei um Grundsätze der .NET Entwicklung handelt. Oder war das nur als Gedankenansatz gedacht? Aber AppDomains, Speicherverwaltung etc. sind weniger Schwerpunkte der Add-in-Entwicklung. Das Laden und Entladen von Assemblies übernimmt das VS2005. Selbst muss ich mur bei einer eigenen Add-in-implementierung in meiner eigenen Anwendung kümmern. Aber hier kann die mit VSTA geholfen werden 😉

@Borg

Danke für Deine Antworten! In Punkt eins stimme ich Dir voll zu! Dies war auch mein erster Ansatz für die Erstellung des Buches. Hoffen wir mal dass es auch von mir so umgesetzt werden kann 😉 Dieser Wunsch kommt übrigens auch sehr viel über das Mailing aus der Umfrage aus meinem Board.

@ FZelle

Danke für Deine Antwort! Querlesen wird in jedem Fall beachtet. 😉

Noch Mal für Alle. Wenn es zeitlich funktioniert, möchte ich mit dem Inhalt des Buches sehr offen umgehen und eine Art BlogTage-Buch dazu einführen. Hier wird es dann Ausschnitte zu den Einzelnen Kapiteln geben, auf die man dann bei begründeten Einwand auch noch Einfluss haben kann.

Also dann, tausend Dank noch mal an Alle

TOM_MUE

05.03.2007 - 14:26 Uhr

Hallo herbivore,

vielen Dank für das Feedback. Werde Deine angesprochenen Punkte auf jeden Fall mit aufnehmen.

Warum sollte bei guter Zusammenarbeit einer Nennung von MyCSharp in dem Buch etwas im Wege stehen 😉

Grüße

TOM_MUE

05.03.2007 - 11:23 Uhr

Hallo,

seit einiger Zeit, arbeite ich nun an einem Buch zur Add-in Programmierung für Visual Studio. Letzt Woche hatte ich wieder die Gelegenheit auf der BASTA eine Session zum Thema Add-in Programmierung zu halten. Dabei ist mir aufgefallen, dass man nicht wirklich auf alle Bereiche und Anforderungen an ein Add-in alleine denken kann. Darum würde ich hier gerne jedem die Möglichkeit geben, zum Inhalt meines Buches etwas beizutragen. Also hier die Fragen an Euch, die Ihr hoffentlich fleißig beantwortet:
1.Was erwartet ihr euch von einem deutschen Buch, zur Add-in Programmierung für Visual Studio 2005? 1.Würdet ihr es begrüßen, dass trotz deutscher Sprache, die Fachbegriffe (wie Command, Tool, SolutionExplorer etc.) in Englisch geschrieben sind, oder sollten alle Begriffe ins deutsche übersetzt werden so das es ein Glossar am Ende des Buches geben wird? 1.Welche kniffeligen Situationen hattet ihr schon bei der Add-in Entwicklung, die ihr gerne mal näher beleuchtet hättet? 1.Was fandet ihr an den Büchern, die ihr vielleicht zu dem Thema schon gelesen habt gut und was weniger gut? 1.Favorisiert ihr mehr Bilder oder mehr Code-Samples in den Buchseiten? 1.Wie wichtig wäre für euch das Thema Add-in Deployment? Setup / Copy &Paste.

Vielen Dank

TOM_MUE

22.09.2006 - 11:25 Uhr

Hallo,

nur weil Du mit Source-Control arbeiten möchtest, musst Du ja nicht die TODO-Datei in den Projektbaum hängen 😉 Es gibt ja auch sicher Progs, die Dein Tool nutzen wollen ohne Source-Control. Vielleicht solltest Du über das Erweiterungsmodell von VS abfragen ob das Projekt unter SourceControl steht oder darauf reagieren wenn es einem SourceControl hinzugefügt wird. Ist das dann der Fall bietest Du in einem eigenen schicken Dialog deine Datei auch an, um sie dem SourceControl hinzuzufügen. Es gäbe noch weitere Möglichkeiten. Du könntest auch selbst an das Erweiterungsmodell von zum Beispiel SourceSafe gehen. Habe ich auch schon in einem Projekt umgesetzt. Dann bist Du in der Lage das Hinzufügen Deiner TODO- Dateien zum SourceControl auch zu automatisieren. Das SourceControl hat übrigens eine sehr generische Schnittstelle die, die meisten SourceControl- Tools verwenden. Da war was mit CSI oder SCI oder so.

So ich denke das sollte eine Menge Anreits sein,

HTH
TOM_MUE

21.09.2006 - 13:54 Uhr

Normal sollte es mit dem Programm geöffnet werden das für den Datei Typ in der Registrierung von Windows eingetragen ist. Dann sollten Argumente an Dein Programm reichen um die Datei richtig darstellen zu können. Möchtest Du Dich nur in VS bewegen könntest Du bei den Globals für ein Projekt ansetzen. Habe das selbst aber noch nicht so ausprobiert. Es sind aber definitiv Globale Poperties die entscheiden welcher Dateityp mit welchem Editor aufgemacht wird. ABER, um einen eigenen Editor zu registrieren benötigst du auf jeden Fall ein eigenes Package.

Ich würde aber an Deiner Stelle den Spieß umdrehen. Mach Deine TODO- Dateien im Project Explorer unsichtbar und biete sie über ein Kontextmenü das die Dateien Simuliert an. Oder biete ein Liste von erstellten TODO- Files in einer DropDownList an. Diese kannst Du dann in eine eigene Toolbar hängen. Damit kannst Du mit dem Klick auf einen der Commands (== simuliertes TODO-File) Deinen eigenen Editor in einem eigenen ToolWindow öffnen.

HTH

TOM_MUE

21.09.2006 - 12:42 Uhr

Wie Rücktritt?

Dann gibt es dieses Jahr gar kein "Geschenke auspacken" unterm Weihnachstbaum mit GOLO?
Keine Mails mehr an Mitglieder im Forum, das sie doch in Zukunft ihre ehrliche Meinung für sich behalten sollen?
Kein "Es ist fertig wenn es fertig ist" mehr?

Ich bin enttäuscht. Wo soll ich Zukunft lesen, was mich zum Schmunzeln bringt?

TOM_MUE

05.05.2006 - 07:35 Uhr

hallo sioworld,

schau doch mal zu dem fehler in das eventlog von windows. in einigen fällen wird zu dem fehler eine GUID eingetragen. mit dieser kannst du im internet suchen. so habe ich das rätsel von fehler 1706 in VS2003 gelöst 😉

gruß TOM_MUE

03.05.2006 - 13:56 Uhr

Hi ToniSoft,

also ich finde die Projektidee sehr gut. Ich hatte auch schon mal so ein Projekt geplant und viele Idden dazu in Tasks zusammengefasst. Leider fehlt mir dazu immer mehr die Zeit.

Ich bin mir sicher, das trotz Microsofts- Team Foundation Server und SourceOffSite und VSS2005 und was es noch so gibt, immer der Bedarf für andere und vielleicht auch simplere Lösungen da ist. Und auch wenn es nicht so populär werden würde, so ein Projekt ist bei Bewerbungen immer eine gute Referenz.

Kennst du schon das Projekt NTeam? Hier mal der Link: http://sourceforge.net/projects/nteam/

Die haben genau das selbe auf ihre Weise vor. Vielleicht kannst Du Dich da ja noch mit einklinken.

Gruß und gutes Gelingen

TOM_MUE

05.04.2006 - 11:28 Uhr

Hallo @UschkinRedSunshine,

da ich genau vor dem selben Problem stand, habe ich angefangen ein eigenes Add-In dafür zu schreiben. Vielleicht ist es ja auch für dich relevant:

http://www.tom-mue.de/MyBlog/PermaLink,guid,31e3804e-5f16-4fae-a2e8-b7272135bde5.aspx

HTH
TOM_MUE

16.03.2006 - 11:50 Uhr

Da leider bei der Lokalisierung von Visual Studio 2005 einige Bugs einprogrammiert wurden (wir sind alle nur Menschen 😉 ) habe ich eine neue BETA des CodeNavigationAddIn online gestellt.

Änderungen:

Wird das AddIn auf einem deutschen Windows XP installiert, wird den bestehenden Pfaden in den AddIn Optionen von VS2005, der Pfad "%ALLUSERSPROFILE%\Application Data\Microsoft\MSEnvShared\Addins " hinzugefügt. In diesen Pfad wird dann auch das AddIn- File kopiert damit Visual Studio 2005 das AddIn laden kann.

Mehr Infos auf meinem Blog. Würde mich freuen wenn ich von ein paar leuten FeedBack bekommen würde die ein deutsches VS2005 mit oder ohne deutschen BS installiert haben.

HTH
TOM_MUE

14.03.2006 - 19:48 Uhr

Hallo,

seit geraumer Zeit sind ja nun eindeutige Aussagen von MS zur Hardwareanforderung bez. Windows Vista veröffentlicht worden. Hat von Euch jemand schon einen Hardware- Hersteller gefunden, der Laptops für Windows Vista anbietet? Ich meine sicher kann man sich heute schon Desktops und Laptops so zusammenstellen das sie den normalen Anforderungen für Vista gerecht werden. Ich weiß aber aus diversen Veranstaltungen von MS das man bei Vista zusätzliche Features nutzen kann (gerade bei Laptops) wenn es die Hardware unterstützt. So soll ja mit Vista ein Display im Deckel des Laptops unterstützt werden, über das man schnell und einfach Informationen (Mails etc.) abrufen kann. Im Moment habe ich ein IBM- Thinkpat R51 mit dem ich sehr zufrieden bin. Aber auf den Seiten von Lenevo (ehemals IBM) oder anderen Herstellen die für mich in Frage kommen würden finde ich nichts.

Vielen Dank

TOM_MUE

13.03.2006 - 12:36 Uhr

Hallo @all

Am gestrigen Abend konnte ich die BETA2 des CodeNavigationAddIn fertig stellen. Ich habe besonders darauf geachtet, mir bekannte Bugs aus dem weg zu räumen und die Visualisierung der Codeelemente im Codeelementsfenster zu verbessern.

Mehr Infos und der Download auf meinem Blog: www.tom-mue.de

Hier noch ein Screenshot:


View larger

Für konstruktive Kritik oder Bugmeldungen gerne hier im Forum oder per Mail an mich.

HTH
TOM_MUE

06.03.2006 - 19:27 Uhr

Hallo Progger,

danke erstmal für das erfreuliche FeedBack 😉 Ich werde Deinen Vorschalg auf jeden Fall mal mit in die Featureliste mit aufnehmen.

Also viel Erfolg mit dem AddIn und wie schon Oben beshrieben, Bug- Reports und weitere Vorschläge sind immer willkommen.

Gruß

TOM_MUE

05.03.2006 - 20:46 Uhr

Hallo,

Da ich ein großer Liebhaber von Tastenkombinationen (short cuts) im Allgemeinen und besonders in Visual Studio bin, habe ich begonnen ein AddIn für Visual Studio 2005 zu programmieren. Dieses AddIn, soll den Programmierer in der Codenavigation mit Tastenkombinationen (short cuts) und auch in visueller Form unterstützen.

Wenn in einer Codedatei die Klasse (Klassen) vom Code länger ist als es auf dem Monitor (TFT) dargestellt werden kann, ist man oft gezwungen, von einem zum anderen Ende der Datei zu scrollen um Codeelemente (Methoden etc.) zu erreichen. Eine bessere Übersicht kann da schon der „Class View“ Explorer von Visual Studio geben. In ihm werden die Klassen mit ihren Elementen (Fields, Properties, Enums etc.) angezeigt. Nachteil ist aber das man mit keiner Tastenkombination (short cut) Methoden, Fields oder andere Codeelemente direkt aufrufen kann. Hier setzt das CodeNavigationAddIn an. Mit dem CodeNavigationAddIn kann man mit Tastenkombinationen aus der IDE von Visual Studio direkt Methoden, Fields, Properties etc. anzeigen lassen. Dazu wird mit der Installation des CodeNavigationAddIns das Kontextmenu des Codeeditors erweitert (Abbildung1).


(Abbildung1)

Über diese Erweiterung oder über Tastenkombinationen (short cuts) (Liste1) können die einzelnen Codeelemente direkt in einem eigenen Toolfenster (Abbildung2) der IDE angezeigt werden.

Angezeigt werden können aber momentan nur die Codeelemente die innerhalb einer Klasse existieren (Stand BETA1).

1.STRG+ALT+F, STRG+ALT+F Alle Fields anzeigen.

*STRG+ALT+F, STRG+ALT+M Alle Methoden anzeigen.

*STRG+ALT+F, STRG+ALT+E Alle Enums anzeigen. (in BETA1 nur innerhalb einer Klasse)

*STRG+ALT+F, STRG+ALT+V Alle Events anzeigen. (in BETA1 nur innerhalb einer Klasse)

*STRG+ALT+F, STRG+ALT+P Alle Properties anzeigen.

*STRG+ALT+F, STRG+ALT+C Die Aktuelle Klasse anzeigen. (in BETA1 nur die aktuelle Klasse)

*STRG+ALT+F, STRG+ALT+N Alle Namespaces einer Codedatei (in BETA1 nicht unterstützt)

*STRG+ALT+F, STRG+ALT+U Alle Usings (Imports) anzeigen (in BETA1 nicht unterstützt)

*STRG+ALT+F, STRG+ALT+D Alle Delegates anzeigen. (in BETA1 nur innerhalb einer Klasse)

*STRG+ALT+F, STRG+ALT+I Alle Interfaces anzeigen (in BETA1 nur innerhalb einer Klasse)

*STRG+ALT+F, STRG+ALT+S Alle Structs anzeigen (in BETA1 nur innerhalb einer Klasse)

Mit der Tastenkombination STRG+ALT+C kann das Toolfenster für die Codeelemente aufgerufen werden.

Nach der Installation des CodeNavigationAddIns, kann man nun zum Anzeigen aller Methoden der aktuellen Klasse die Tastenkombination STRG+ALT+F, STRG+ALT+M drücken. Im Toolfenster des CodeNavigationAddIns werden darauf alle Methoden angezeigt die man dann mit den Pfeiltasten der Tastatur selektieren kann. Wird dann die Taste Enter (Return) gedrückt, navigiert das CodeNavigatioAddIn an die entsprechende Stelle in der Codedatei. Somit hat man die Möglichkeit im neuen „Code File Elements“ Toolfenster immer genau die Codeelemente anzeigen zu lassen, die man in dem Moment auch nur benötigt. Damit ist eine bessere Übersicht geschaffen.

Was kommt nach der BETA1?

Nun mein Bestreben ist es das CodeNavigationAddIn so zu erweitern, das in Zukunft auch mehr Sprachen als nur C# unterstützt werden. In jedem Falle soll VB.NET, J# und vielleicht auch Managed C++ unterstützt werden. Das hängt aber auch davon ab wie gut das Code Model von Visual Studio 2005 programmierbar geworden ist. Weiterhin sollen in kommenden Versionen auch die Elemente über die Tastenkombinationen erreichbar sein, die zwar außerhalb einer Klasse aber innerhalb der aktuellen Codedatei liegen (Enums, Events, Delegates und Interfaces etc.). Auch die Anzeige der Codeelemente im neuen Toolwindow des AddIns soll über Filter anpassbar werden.

Als erste Erweiterung wird es die Möglichkeit geben, die Anzeige für die jeweiligen Zugriffsmodifizierer der Codeelemente zu filtern (private, public, internal etc.). In einem weitern Schritt soll es ein Möglichkeit geben über eine Textbox die Anzeige der Codeelemente Namentlich zu filtern. Damit soll die Suche nach einer Methode oder einem anderen Codeelement erleichtert werden.

Natürlich existieren noch weitere Ideen und Wünsche meinerseits. Am meisten freue ich mich aber wenn es Feedback auf das AddIn geben würde mit konstruktiven Vorschlägen oder Wünschen. Also, bei Bedarf bitte Mail an mich 😉

Hier der Download: DOWNLOAD CodeNavigationAddIn

Weiter Screens auf meinem Blog www.tom-mue.de

HTH
TOM_MUE

PS: Warum erscheinen bei meiner Liste nur 1. und nicht fortlaufende Nummern???

04.03.2006 - 17:47 Uhr

Hallo @jiM3op,

danke für das Lob. Aber ich versteh nicht ganz was Du mit

"...auf dem PC der das kompilierte Programm nachher benutzen soll..."

meinst? Das ist ein AddIn für Visual Studio 2005 und kann auch nur von Visual Studio 2005 genutzt werden. 😉

Also ruhig fragen wenn da noch Dinge zu klären sind 8)

Gruß

TOM_MUE

26.02.2006 - 10:10 Uhr

Hallo,

wenn in einer Solution Abhänghigkeiten unter den Projketen der Solution selbst entstehen, sollten die Abhängigkeiten für jedes Projekt im "Dependenci Manager" von Visual Studio für jedes Projekt eingetragen werden. Der "Dependenci Manager" stellt dann automatisch die richtige Buildreihenfolge zusamen. So hat dann jedes Projekt beim Build seine benötigten Abhängigkeiten.

Visual Studio --> Project --> Project Dependencies.

HTH

TOM_MUE

18.02.2006 - 10:26 Uhr

Hallo,

sorry das ich mich erst jetzt melde. Aber wie ich in einem anderen Beitrag schon schrieb, war ich die letzten Tage auf der BASTA in Frankfurt. Das nur nebenbei 😉

So, also danke für die Blumen von Progger, leider bin ich auch nicht so der ClickOnce Experte, als das ich Euch jetzt direkt etwas zu Eurem Problem schreiben könnte.

Ich kann Euch nur an Neno Loje verweisen. Auf seiner Webseite http://www.dotnet-online.de/neno/ gibt er viele Tipps rund um das Thema.

dann hatte ich mal auf den Seiten von Channel9, einen Beitrag gefunden, in dem eine Möglichkeit vorgestellt wurde ClickOnce ohne IE auszuführen.

Also dann
HTH
TOM_MUE

12.02.2006 - 10:49 Uhr

Hallo Xqgene,

also das es so auch funktionieren kann ist auf jeden Fall interssant mal zu sehen.

Aber kannst Du mir mal erklären wozu ich mir für das Bild, so einen Aufwand machen soll? Das würde ich pers. nie anwenden. Wenn ich mir das Bild schon selber zeichne, dann mach ich mir halt die transparenten Bereiche im RGB- Wert 0,254,0 und brauch null zeilen Code schreiben (sag mir jetzt bitte nicht das Du den RGB- Wert 0,254,0 für die Darstellung Deines Bildes brauchst 8o).

Was machst Du denn beim TabPicture eines eigenen ToolWindows? Da kannst Du doch dann keinen anderen RGB- Wert als den 255,0,255 nehmen.

Also ist nicht bös gemeint aber Deine Lösung würde für mich nur Mehraufwand bedeuten, den ich mit dem Setzen des rictigen RGB- Wertes ohne Code erreiche.

Gruß
TOM_MUE

PS: Was ist mit Deinen Fragen zum Setup? 🙂

09.02.2006 - 15:51 Uhr

Hi progger,

ja wird es geben. Ich werde alle Samples zum Download frei geben und wenn ich das darf, werde ich auch die BASTA- Folien zum freien Download online stellen. Sonnst wird es andere Folien geben.

Vielen Dank fürs Daumen halten 👍

TOM_MUE

09.02.2006 - 14:39 Uhr

Hallo,

Also ich erstelle die Bitmap für die Commands immer mit Paint.NET.

Wichtig sind wirklich folgende Merkmale die ein Bild für VS2005 mitbringen muss:

a) Es muss eine Bitmap sein.

b) Die Eigenschaft Colors muss für VS2005 auf "True Color" stehen.

c) Die Größe der Bitmap muss 16x16 sein.

d) Die HintergrundFarbe (also die die Transparent sein soll) muss 0,254,0 sein. Mann kann für die Controls eines Visual Studio AdIns keinen Transparentbereich selbst festlegen!

e) Das Bitmap muss in einer Resourcen- DLL eingebettet sein, die den Namen für die unterstützte Region trägt (en-US, de-DE usw.)

f) Das Bitmap muss in der Resouce-Datei liegen und da als Namen eine Zahl haben (1,2 oder 3 oder 4 etc.)

g) in der Methode "AddNamedCommand2(...)" ,muss der Werte für MSO- Button auf false und der Wert für den Index auf den des Bitmap- Names in Form eines Integers gesetzt werden.

DTE.Commands.AddNamedCommand2(AddInInstance,"CommName","BtnName","ToolTip",false,1,.....);

Der Name der ResourceDateien im AddIn Projekt lautet dann für Deutschland

"<NameProject>.de-DE.resx" Die Punkte sind wichtig!

Dann wird auch alles so dargestellt wie man es sich wünscht.

Wer mehr wissen will und zufällig auf der BASTA nächste Woche dabei ist, ich halte da eine 75Min. Session zu "BestPractices VS2005 Add-In Entwicklung und zwar am Mittwoch den 15.02.2006 von 17:15 - 18:30 Uhr. Würde mcih freuen einen von Euch da zu treffen.

Visual Studio 2005 Add-in Best Practices

HTH
TOM_MUE

09.02.2006 - 11:17 Uhr

Hallo Xqgene,

bin gerade bei der Suche nach einer Anderen Lösung mit Bitmaps über Deine Frage gestolpert. Also falls Du immer noch nach einer Antwort suchst:

Für Images die Du auf einem Add-In Comand unterbringen willst brauchst Du eine Bitmap in der Größe 16x16 (TrueColor). Die Farbe die von Visual Studio als Transparent dargestellt wird ist ein giftiges Grün (0,254,0). Jede abweichung bringt ein falsches Ergebnis.

Hinweis: Der BitmapExplorer von VS hat eine falsche Farbpalette. So das er zwar 0,254,0 dir anzeigt, es aber kein 0,254,0 in Wirklichkeit ist.

Das Bitmap legst Du dann in einer der Sprachregion entsprechend banannten Resource- Datei ab. In der Methode AddNamedCommand gibst Du dann anstelle true für das MSO-Button Argument false an und für den Index des Images den Wert deines eigenen Images (das ist der Name der Bitmap in Deiner Resourcedatei, der immer eine Zahl sein muss!).

HTH
TOM_MUE

06.02.2006 - 14:37 Uhr

ganz locker beleiben.

War nur ein Spass, mit dem Finger drauf das trotz der Zeit dein Posting später kam.

gel

TOM_MUE

EDIT: ich sehe bei mir die Zeit 14:31 bei beiden Postings. Da handelt es sich doch um Sekunden 😉 X(

06.02.2006 - 14:33 Uhr

@talla

hat da jemand meine Antwort nicht gelesen 😉 ha ha

TOM_MUE

06.02.2006 - 14:31 Uhr

Grün bedeutet das Du Deine Änderungen in der aktuellen VS-Session gespeichert hast, gelb würde bedeuten das sich in dem Bereich Änderungen befinden die noch nicht abgespeichert wurde. Wird VS2005 geschlosen verlieren sich die Markierungen.

HTH
TOM_MUE

06.02.2006 - 12:35 Uhr

Wenn Du Dein Problem nicht näher beschreibst, kann sich das Niemand vorstellen. Ein bisschen mehr Informationen zu Deiner Anwendung und Deinen bisherigen Schritten ist einfach notwendig. Sonnst ist das wie die Suche nach der Nadel im Heuhaufen

Gruß
TOM_MUE

06.02.2006 - 10:29 Uhr

Nein gibt es nicht mehr.

TOM_MUE

06.02.2006 - 09:16 Uhr

Hallo Therion,

wenn Du Deine Express- Edition registrierst, bekommst DU von MS als Dankeschön eine Image und Icon Library kostenlos als Download. Einfach über Help | Register product... und dann auf die Bestätigungs-Mail warten.

"IconBuffet Studio Edition Icon Suite

Eine Sammlung von über 100 professionellen, lizenzfreien Icons von IconBuffet.com. Die IconBuffet Studio Suite enthält eine Auswahl von Icons aus IconBuffet’s beliebten „handgefertigten“ Iconsammlungen. Als registrierter Benutzer einer Visual Studio Express-Edition dürfen Sie diese Icons frei für eigene Windows- und Webanwendungen einsetzen! "

HTH
TOM_MUE

02.02.2006 - 07:45 Uhr

Hallo,

finde ich auch ne tolle Sache. 👍

Kannst Du mehr dazu erzählen wie es zu diesem Projekt kam und was der Hintergrund für Dein Mitwirken war? Gibt es vieleicht die Chance solche Projekte mit der Community und MS zusammen zu verwirklichen oder kommen bei MS nur Stundenten für solche Projekte in Farge? 😉

Gruß
TOM_MUE

30.01.2006 - 07:59 Uhr

Hallo Rainbird,

so weit ich Frank Fischer in einem seiner Vorträge zu TEam Foundation Server verstanden habe, sind ganau solche Schnittstellen für die Eingabe von Coding Guidelines für third party Anbieter offen gelassen worde. Soll heißen wer sich da reinfummelt und einen guten Designer dafür entwickelt kann Geld damit verdienen 😉
Bisher kenne ich aber noch keinen der es angegangen ist. Meiner Meinung nach wird sicher nach der Fertigstellung des Team Foundation Servers ein rudimenterer Designer dabei sein.

Der Team Foundation Server hat auch ein Extensibility- Object- Model. Es gibt sogar schon WebCasts dazu.

Gruß
TOM_MUE

29.01.2006 - 19:20 Uhr

Hallo,

schön das ich ein paar in die Diskussion eingeklingt ahben. Finde gerade diesen Themenbereich sehr interessant da es da doch sehr viele unterschiedliche Ansprüche zu geben scheint.

Also das mit den m_ oder a_ oder l_ habe ich auch nicht sofort gemocht. Aber man gewöhnt sich sehr schnell daran. Und ich will es nun auch nicht mehr missen.

Für mich ist es von der Schreibgewohnheit einfach schneller, wenn ich m_ eintippe und in der automatischen Codevervollständigung gleich allle Member- Fields untereinander stehen. Will ich nun auf eine Variable aus der Methode zugreifen in der ich mich befinde brauche ich nur l_ eingeben und schon stehen alle Variablen mit l_ untereinander. Und das ist dann auch so mit den Methodenparametern bei a_. ALso für mich ist der Typ im Namen nicht so wichtig. Da gehe ich einfach mal nach dem Intellisense des Studios. Da brauch ich ja nicht mal ne Maus 😉 CTRL + K, CTRL + I zeigt mir die Informationen an die ich brauche. Mir ist es auch noch nie passiert das ich bei einer Zuweisung eines Strings ein falsches Field oder eine falsche Variable genommen hätte (also den falschen Typ). darum finde ich wiederum den Typ in .NET überflüssig. Anders ist das bei Script. Also JScript oder VBScript. Da habe ich ja nun mal ein var und dem kann ich ja alles andrehen. Bei uns sind solche Dinge auch in den Firmen- Coding Guidelines verankert an die sich jeder zu halten hat. Zum Glück durfte ich sie mitschreiben (he he).

Vielleicht kommen ja noch ein paar Meinungen zusammen oder vielleicht auch Erfahrungsberichte? Wäre cool.

Gruß

TOM_MUE

29.01.2006 - 16:06 Uhr

Hallo,

mich würde mal interssieren wer von Euch die "IDesign C# Coding Standards" von Juval Lowy kennt und selbst auch anwendet.

Als zweites würde ich gerne wissen ob es dann auch noch von Euch Programmierer gibt, die zu diesen Coding Standards die Code- Guidelines aus dem Buch "Practical Guidelines and best Practices For Microsoft Visual Basic and Visual C# Developers" anwendet und für praktikabel hält. Das sind übrigens die Macher des Blogs: .Net2TheMax.

Als drittes würde mich noch interessieren wem diese Code-Formen nicht unbekannt sind (natürlich unter C#)


string m_Name = string.Empty;

string const c_Name = "TOM";

private void GetGreetingFrom(string a_Name)
{
   string l_MethodName = a_Name;

   return string.Format("Greetings from {0}",l_MethodName);
}

...

foreach(string f_Drive in Environment.GetLogicalDrives())
{
      ....
}

**:::

dabei geht es mir um die:

l_
m_
c_
f_

Danke für Antworten 😉

TOM_MUE

26.01.2006 - 18:22 Uhr

Hi Talla (hüst da hatte ich doch glatt den nick verdröselt)

ganz dickes Sorry. Muss Berufsblindheit sein X(

War auf keinen Fall Absicht.

TOM_MUE

26.01.2006 - 17:04 Uhr

Hallo,

die tastenkombination die Du angegeben hast spricht für die Menüschortcuts

Build | Rebuild <Projectname>

Mit ALT aktivierst du die Menüs in deinem Visual Studio. B steht dannfür das Menü Build und E für den Eintrag Rebuild.

Das wäre dann aber für die engl. VS- Version. da ich keine deutsche nutze, solltest Du mal selbst probieren welche buchsteben nach ALT + E im Menü von Erstelln unterstrichen sind.

Abkürzen kann man das aber mit dem Shortcut

STRG + SHIFT + B für Build. Das war aber schon unter VS .NET 2003 so 😉

HTH

TOM_MUE

25.01.2006 - 21:35 Uhr

Hallo svenson,

sorry das ich mich erst jetzt melde. Hatte Deine Antwort übersehen. Auf jeden Fall wars gold richtig 😉

Danke
TOM_MUE

25.01.2006 - 21:25 Uhr

Hallo Xqgene,

ich denke schon das ich das Projekt so rausgeben könnte. Aber vielleicht wäre es auch für alle anderen User hier im Forum interessant an einer Problemlösung teil zu haben. Gerade was das Erstellen eines Setups für ein AddIn betrifft, gibt es ne menge Kniffe 😉 Vielleicht beschreibst Du einfach in einem neuen Thema Deine Probleme mit der Add-In-Programmierung. Dann versuche ich Dir gerne zu Antworten und wir helfen dabei sicher auch noch anderen die sich mit den Problemem rumschlagen 8)

Vielleicht findest Du ja den Vorschlag auch OK.

Gruß

TOM_MUE

25.01.2006 - 16:38 Uhr

Hallo Xqgene,

an welchen Teil des Quellcodes hast Du denn gedacht? Mehr der Teil mit dem Mediaplayer, oder der des Add-Ins?

Ich finde es übrigens cool das Du erst fragst bevor der Reflector angeschalten wird 😉 Hast Du denn das Add-In schon getestet? Funktioniert es denn? bissher habe ich nur Feedback des es funktioniert (seit der letzten Änderung).

gruß

TOM_MUE

24.01.2006 - 10:13 Uhr

Original von svenson
Nein. Studio unterstützt aber das universelle Konfig-Management-Interface von MS namens SCC. Alle Systeme, die dieses Interface mitbringen sind in Studio einbindbar.

Kann Du auch sagen wie und wo man diese Schnittstelle findet. Also in welcher DLL sind diese Schnittstellen definiert?

Danke

TOM_MUE

20.01.2006 - 10:39 Uhr

Hallo Caladan,

Es gibt ein Add-In für VS2003 das ich selber nutze um die Codezeilen- anzahl zu analysiren.

Hier der Link: Line Counter

HTH
TOM_MUE

18.01.2006 - 13:42 Uhr

Hallo,

Ein automatischer Zeilenumbruch ist möglich. Wird aber nur auf die aktuelle Text Editor- Breite berechnet.

Entweder über

Tools | Options | TextEditor | C# und da das Häkchen bei "Word wrap" setzen

oder per Shortcut

Ctrl + E, Ctrl + W

HTH

TOM_MUE