myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Knowledge Base » Artikel » [Artikelserie] SharpDevelop Kern in eigenen Anwendungen verwenden
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[Artikelserie] SharpDevelop Kern in eigenen Anwendungen verwenden

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
SimonKnight6600 SimonKnight6600 ist männlich
myCSharp.de-Mitglied

avatar-1433.gif


Dabei seit: 09.03.2005
Beiträge: 709
Entwicklungsumgebung: Microsoft Visual Studio 2008
Herkunft: Österreich


SimonKnight6600 ist offline

[Artikelserie] SharpDevelop Kern in eigenen Anwendungen verwenden

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Den SharpDevelop Kern in eigenen Anwendungen einsetzen

Artikelserie


Zielgruppe: Einsteiger und Fortgeschrittene
Aktueller Artikel: Teil 2 - Erste Beispielanwendung
Vorraussetzungen:  SharpDevelop 2.1 Beta 2 oder höher (für den Einstieg empfohlen, da es dafür eine Projektvorlage gibt)

In dieser Artikelserie geht es um das Entwickeln von Anwendungen auf Basis des SharpDevelop Kerns. Dieser bietet ein mächtiges, einfach zu einbauendes AddIn System sowie weitere nützliche Features, die die Erweiterbarkeit und Flexibilität der eigenen Anwendung erheblich steigern. Diese werden in Teil 1 der Serie beschrieben werden. Die einzelnen Teile der Serie bauen auf einander auf.

  Teil 1
...befasst sich mit den Grundlagen und der Einrichtung einer entsprechenden Projektvorlage für SharpDevelop.

 Teil 2
...befasst sich mit einer ersten Beispielanwendung. Viele elementare Aspekte werden hier erklärt!

Teil 3 (in Planung)
...wird sich mit einem weiterführenden Thema beschäftigen. Wahrscheinlich wird Lokalisierung und das Speichern von Einstellungen zum Zug kommen. Für Vorschläge bin ich natürlich immer offen Augenzwinkern .

Ich bin für jegliches Feedback dankbar. Der aktuelle Teil 2 stellt eine echte Informationsbombe dar, daher scheut euch nicht zu fragen wenn ihr am Ende nicht mehr durchblickt.

Eine guter Test, ob man den Artikel halbwegs verstanden hat ist, die Applikation um einen eigenen Menübefehl zu erweitern.

Viel Spaß beim Lesen smile

Dieser Beitrag wurde 7 mal editiert, zum letzten Mal von SimonKnight6600 am 06.03.2007 20:46.

11.12.2006 15:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SimonKnight6600 SimonKnight6600 ist männlich
myCSharp.de-Mitglied

avatar-1433.gif


Dabei seit: 09.03.2005
Beiträge: 709
Entwicklungsumgebung: Microsoft Visual Studio 2008
Herkunft: Österreich

Themenstarter Thema begonnen von SimonKnight6600

SimonKnight6600 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So, ich habe inzwischen Teil 2 veröffentlicht. Da dieser im Vergleich zu Teil 1 wesentlich umfangreicher ist und wichtiges Basiswissen lehrt, habe ich versucht, mit einer Zusammenfassung und einem Glossar am Ende des Artikels eventuelle Fragen zu beantworten. Sollten trotzdem Fragen aufkommen, stellt diese bitte. Eventuell kann ich den Artikel dann ein wenig verbessern.

Viel Spaß,
Simon
12.12.2006 15:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Thomas B Thomas B ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.08.2006
Beiträge: 223


Thomas B ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

Wäre schön, wenn du in deinem Einleitungspost mit eins, zwei Sätzen erklären würdest, was der SharpDevelop Kern überhaupt ist, und wofür man ihn braucht.

Gruß Thomas
13.12.2006 10:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SimonKnight6600 SimonKnight6600 ist männlich
myCSharp.de-Mitglied

avatar-1433.gif


Dabei seit: 09.03.2005
Beiträge: 709
Entwicklungsumgebung: Microsoft Visual Studio 2008
Herkunft: Österreich

Themenstarter Thema begonnen von SimonKnight6600

SimonKnight6600 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Thomas B!

Stand zwar eh schon da, aber ich hab es jetzt noch ein wenig erweitert Augenzwinkern

vg,
Simon
13.12.2006 14:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
burli
myCSharp.de-Mitglied

Dabei seit: 09.12.2006
Beiträge: 62


burli ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Simon,
wenn du die Möglichkeit hast wäre ein Tutorial über den ICSharpCode.TextEditor sehr nett. Ich kämpfe mich nämlich gerade mühsam durch die Möglichkeiten und Funktionen der Komponente und komme nur sehr langsam vorwärts.

Gruß
Burli
30.12.2006 00:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
falangkinjau
myCSharp.de-Mitglied

Dabei seit: 27.10.2006
Beiträge: 171
Entwicklungsumgebung: Vim/Netbeans
Herkunft: Berlin


falangkinjau ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Simon,

wo ist die Fortsetzung? großes Grinsen

Habe mich vor ca. 3Monaten mal durch das englische Material der Autoren von SharpDeveloper gewühlt und nicht durchgeblickt.
War definitiv zu viel für den Anfang.

Dank deiner kleinen Einführung ist mir jetzt einiges klarer geworden und hoffe doch das es bald weitergeht. Daumen hoch


Gruß falangkinjau
03.01.2007 01:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SimonKnight6600 SimonKnight6600 ist männlich
myCSharp.de-Mitglied

avatar-1433.gif


Dabei seit: 09.03.2005
Beiträge: 709
Entwicklungsumgebung: Microsoft Visual Studio 2008
Herkunft: Österreich

Themenstarter Thema begonnen von SimonKnight6600

SimonKnight6600 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Ich werde demnächst anfangen, den Teil 3 zu schreiben. Was würdest du dir denn für dem 3. Teil wünschen?

vg,
Simon
03.01.2007 09:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
falangkinjau
myCSharp.de-Mitglied

Dabei seit: 27.10.2006
Beiträge: 171
Entwicklungsumgebung: Vim/Netbeans
Herkunft: Berlin


falangkinjau ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Simon,

zum Wunsch mehr nachdem ich meine ersten Eindrücke beim Spielen mit der Beispielapplikation geschildert habe.

Ich habe deine Beispielapplikation um Toolstripitems erweitert, sowohl für die Workbench(Beenden) als auch für das TestAddin(Click me).
Das hat auch wunderbar funktioniert. Wie es geht findet man ja z.B. im Sample ICSharpCode.Core.Demo.

Was mich nun irritiert ist das ich beim TestAddIn die Resourcen nicht referenzieren kann, wenn diese im TestAddinprojekt erstellt werden.

Beispiel:

So geht es, wenn ich die Einträge der Resourcen in der globalen StringResources.resources bzw. Image... also unter Applikation/Startup ablege bzw. eintrage.

aus TestAddIn.addin

C#-Code:
<Path name="/Workbench/MainMenu/File">
    <MenuItem id="TestMenuItem" class="TestAddIn.TestItem" label="${res:TestAddIn.Menu.File.ClickMe}" insertbefore="Quit" />
</Path>

<Path name="/Workbench/Toolbar">
    <ToolbarItem id="TestMenuItem" tooltip="${res:TestAddIn.Tooltip.File.ClickMe}"  icon="DocumentHS" class="TestAddIn.TestItem" insertafter="Quit" />
</Path>

Erstelle ich die Resourcen aber im TestAddInprojekt, dann werden diese nicht referenziert. Als Label wird dann "${res:TestAddIn.Menu.File.ClickMe}" angezeigt.
Hier muß ich wohl noch was falsch machen bwz. ich habe es noch nicht verstanden wo für was welche Resourcen abgelegt werden.

Nun zu mein Wunsch und Vorschlag für Artikel 3:

Konfiguration eines AddIn. Neuer Menüeintrag erstellen "Option..." Es geht der Konfigurationsdialog auf wie bei SharpDeveloper. Dort gibt es natürlich nur den Eintrag TestAddIn. Was wollen wir konfigurieren: z.B. Messagestring der Messagebox welche bei ClickMe angezeigt wird.

Ich denke das ist sehr heftig, würde aber gut die Interaktion demonstrieren. Darüber würde auch gezeigt werden wie ein AddIn konfiguriert wird.

Vielleicht hast du ja auch eine andere und bessere Idee.

Gruß falangkinjau
04.01.2007 13:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
DarkKiller DarkKiller ist männlich
myCSharp.de-Mitglied

Dabei seit: 13.07.2005
Beiträge: 32
Entwicklungsumgebung: SharpDevelop


DarkKiller ist offline Füge DarkKiller Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
ich finde deine Artikel immer wieder gut und auch diesen. Ich habe nachdem ich Artikel 2 durchgelesen haben, auch ein bisschen rumgespielt mit der beigelegten Testapplikation und habe ein neues AddIn geschrieben. Doch leider musste ich festellen, dass es nicht funktioniert.

Er schmeißt ne Fehlermeldung raus und meint, er könne TestAddinB nicht in ICSharpCode.Core.ICommand umwandeln, dabei habe ich alle nach dem vorhanden AddIn gemacht.

Hier die Datei TestAddIn2.addin

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<AddIn name="TestAddIn2" author="Christian">
	<Runtime>
		<Import assembly="TestAddIn2.dll" />
	</Runtime>

	<Path name="/Workbench/MainMenu/File">
		<MenuItem id="TestMenuItemB"
		          class="TestAddInB.TestItemB"
		          label="Click me harder!"
		          insertbefore="TestMenuItem" />
	</Path>
</AddIn>

Hier die Datei TestItem2:

C#-Code:
using System;
using ICSharpCode.Core;
using System.Windows.Forms;
using System.Collections.Generic;

namespace TestAddInB
{
    public class TestItemB : AbstractMenuCommand
    {
        public override void Run()
        {

        }
    }
}
04.01.2007 20:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SimonKnight6600 SimonKnight6600 ist männlich
myCSharp.de-Mitglied

avatar-1433.gif


Dabei seit: 09.03.2005
Beiträge: 709
Entwicklungsumgebung: Microsoft Visual Studio 2008
Herkunft: Österreich

Themenstarter Thema begonnen von SimonKnight6600

SimonKnight6600 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

@DarkKiller: Hast du im TestAddInB eine andere Version der ICSharpCode.Core Library verwendet, als für das Hauptprogramm? Wenn nicht, poste mal deine Version der Beispielanwendung oder schick sie per E-Mail an simon.schweiger AT tnr.at

@falangkinjau: Du musst die Resourcendateien für dein AddIn registrieren, bevor sie das erste Mal verwendet werden. Am Besten machst du dass über einen Eintrag in den Pfad "/Workspace/Autostart/".

Code:
1:
2:
3:
  <Path name="/Workspace/Autostart">
    <Class class="TestAddIn.ResourceRegistrar" />
  </Path>

Alle Klassen die dort eingetragen werden müssen von ICommand abgeleitet sein und werden vor dem Start der Anwendung ausgeführt. In der oben eingetragenen Klasse registrieren wir nun die Resourcen. Der erste Parameter ist eine Art ID und der zweite die Assembly, in der die Resourcen als EmbeddedResource eingebunden sind.

C#-Code:
using System;
using System.Collections.Generic;
using ICSharpCode.Core;

namespace TestAddIn
{
    public class ResourceRegistrar : ICommand
    {

        private object owner;
        public event EventHandler OwnerChanged;
        public object Owner
        {
            get
            {
                return owner;
            }
            set
            {
                owner = value;

                if (OwnerChanged != null)
                    OwnerChanged (this, EventArgs.Empty);
            }
        }

        public void Run()
        {
            ResourceService.RegisterStrings("TestAddIn.StringResources", typeof(ResourceRegistrar).Assembly);
        }


        #endregion
    }
}

Der Code ist ungetestet, sollte aber hoffentlich funktionieren. Im nächsten Artikel werde ich auf jeden Fall das Speichern von Einstellungen behandeln.

vg,
Simon

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von SimonKnight6600 am 06.01.2007 18:43.

05.01.2007 22:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SimonKnight6600 SimonKnight6600 ist männlich
myCSharp.de-Mitglied

avatar-1433.gif


Dabei seit: 09.03.2005
Beiträge: 709
Entwicklungsumgebung: Microsoft Visual Studio 2008
Herkunft: Österreich

Themenstarter Thema begonnen von SimonKnight6600

SimonKnight6600 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo

Ich hab das Problem von DarkKiller gelöst bekommen. Es wichtig, dass das AddIn keine aktuellere Version der ICSharp.Code Library referenziert, als das Hauptprogramm! Bei DarkKillers TestAddIn wurde die Version 2.1.2199 referenziert und im Hauptprogramm 2.1.2017

vg,
Simon
06.01.2007 12:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
falangkinjau
myCSharp.de-Mitglied

Dabei seit: 27.10.2006
Beiträge: 171
Entwicklungsumgebung: Vim/Netbeans
Herkunft: Berlin


falangkinjau ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Simon,

nur noch

C#-Code:
public event EventHandler OwnerChanged;

hinzufügen und es funktioniert tatellos.

Danke und Gruß falangkinjau
06.01.2007 18:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Monat.
krischan100 krischan100 ist männlich
myCSharp.de-Mitglied

Dabei seit: 21.12.2006
Beiträge: 20


krischan100 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich könnte mir auch gut ein Tutorial über die Einbindung eigener Pads vorstellen. Und mit den globalen Einstellungen finde ich gut.

Gibt es eigentlich schon ein Termin für den 3. Teil?

Krischan100
13.02.2007 14:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 12 Jahre.
Der letzte Beitrag ist älter als 12 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.11.2019 21:29