Hallo,
ich habe da ein großes Problem mit den Resourcen:
ich habe eine Klasse namesn MainForm der ich ein Icon zuwesen möchte.
Wenn ich dieses Icon aus einer Datei heraus lade dann gibt es kein Problem.
Ich möchte das Icon aber aus einer Resource einlesen.
Die folgende Zeile verursacht einen Fehler beim AUSFÜHREN des Programms:
ResourceManager rm = new ResourceManager("dbTrans.MainForm.resources", Assembly.GetExecutingAssembly());
Ich habe ein Icon als Resource eingebunden das den Namen app hat. Dieses Icon ist in der Resourcen Datei: dbTrans.MainForm.resources.
Ich habe irgendwo gelesen, dass ich dem Compiler noch mitteilen muss, dass er
diese Datei mit in die compilierte exedatei einfügt. Sowas als argument für den compiler in etwa: /res: app.ico oder soetwas
ABER WIE GEHT DAS IN SHARPDEVELOP?
dank euch!
Do no one knows...?
Sind denn hier alle MS Visual Studio.NET Nutzer oder warum weiß keiner darüber Bescheid.
Mäno!
hallo,
probier mal:
öffne das resource im editor. füge links im combine view die resource durch browsen auf das file hinzu. mit resource als aktives file im editor öffne rechts den reiter mit den eigenschaften & setze auf "Embed as Resource". jetzt sollte nach dem compilieren das resource in der assembly enthalten sein. (blick in die assembly mit masm...) der zugriff via resource executing assembly....
Hallo Tom.
Danke für deine Antwort. Leider hab ich es noch nicht ganz so.
Ich denke ich habe die Resource wie beschrieben eingefügt. Die Resource(Datei) steht im Reiter mit den Eigenschaften. Erstellungsaktion = EmbedAsResource ist auch eingestellt.
Soweit so gut..
Den Rest habe ich leider nicht so ganz verstanden.
Das sagt mir leider gar nichts. Ich habe noch nie eine Resource verwendet und darauf zugegriffen!
Wäre dir (oder jemand anderen) dankbar für eine erweiterete Erklärung.
Danke
Hallo Marcel,
also: wie schon gesgt eine resource via rechts-klick auf Resourcen hinzufügen und benennen (z.b. Test.resource). jetzt kannst du die resource im editor öffnen & bearbeiten.... füge (recht-klick!) einen string mit dem namen "MyTest" hinzu & schreibe irgendwas ins edit feld. krontolle ob embed as resurce. beim compilieren wird die resource dann in die dll geschreiben.
zugriff im programm:
System.Resources.ResourceManager rm =
new System.Resources.ResourceManager
("Test",
System.Reflection.Assembly.GetExecutingAssembly()
);
Console.WriteLine(rm.GetString("MyTest"));
wie du siehst beim initialisieren des managers nur den vorderen teil des resource-namens angeben. zugriff dann je nach datums-typ via methoden des managers (vgl. doku)
das wars.
viel glück,
tom
p.s. sorry wg. falschem begriff! nich masm sondern IL DASM war gemeint!
Hallo Tom,
es hat jetzt funktioniert:
wie du siehst beim initialisieren des managers nur den vorderen teil des resource-namens angeben.
Das war das Problem.
Dennoch bleiben einige offene Fragen:
Gruz und dank nochmal
Hallo Marcel,
ist eigentlich egal ob du in eine dll od. exe compilierst (es handelt sich ja um eine assembly).
mit der aktuellen version (1.0.3) hat sich die bearbeitung von resourcen etwas geändert... die resource im fenster aktivieren und in der obersten zeile mittels rechts-klick "string hinzufügen" bzw. "file hinzufügen" wählen. einen passenden namen aussuchen usw.
funktioniert bei mir eigentlich problemlos...? beim anlegen einer neuen resource: rechts-klick auf resource, hinzufügen, mit namen im geeigneten folder speichern und dann im fenster via rechts-klick neue einträge hinzu usw...
mir ist nicht ganz klar wos bei dir hakt?
g
-t
Hallo,
soweit klappt es ja alles. Allerdings nicht wenn ich eigene Resourcen hinzufüge
in dem Resourcen-Ordner.
Standardmäßig wurde eine Resource al'a "namespace"."klasse".resource
hinzugefügt.
Wenn ich diese dann öffne habe ich im Hauptfenster(Reiter)
eine Art Tabelle wo ich beliebige Dateien oder Variablen hinzufügen kann.
Alles genau so wie du es beschreibst.
Genau diese Tabelle existiert nicht wenn ich eine 2te Resource hinzufüge unter den Resourcen (links). Hier ist dann anstelle der Tabelle eine Texteingabe möglich und ich bekomme nicht per rechtsclick das Kontext-Menu wo ich eine Date hinzufügen kann.
Thx
Also wenn ich eine Icon als Resource hinzufüge schein erstmal alles zu funktionieren. Ich kann auf das Icon zugreifen und es anzeigen lassen.
Aber irgendwann wenn ich das Proggy mehrer male kompiliert habe, verschwindet das Icon aus der Resource wieder und es gibt es Exception.
Wieso verschwindet das Icon denn immer wieder? Habe alles gespeichert und am Anfang läßt sich das Proggy auch mit Icon kompilieren.