Laden...

#develop und resourcen einbinden

Erstellt von Marcel vor 19 Jahren Letzter Beitrag vor 18 Jahren 3.346 Views
M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren
#develop und resourcen einbinden

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!

M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren

Do no one knows...?

Sind denn hier alle MS Visual Studio.NET Nutzer oder warum weiß keiner darüber Bescheid.
Mäno!

T
73 Beiträge seit 2004
vor 19 Jahren

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....

M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren

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.

  • masm?
  • zugriff via resource executing assembly?

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

T
73 Beiträge seit 2004
vor 19 Jahren

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!

M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren

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:

  • Welche dll-Datei meinst du. Bei mir wird das doch dann in die erzeigte exe geschrieben, oder?
  • Mit rechtsclick eine Resource hinzufügen funktioniert. Allerdings kann ich die Resource dann nicht im Fenster (Reiter) bearbeiten, da dort lediglich eine Texteingabeaufforderung erscheint ??? Ich habe das Icon in die Standard-Resource eingetragen die immer erzeigt wird. Dort habe ich dann auch die möglichkeit mit rechtsclick "Files hinzufügen" eine Datei anzugeben.
    Warum bekomme ich diese Ansicht nicht, wenn ich selbst ein Resource einbinde?

Gruz und dank nochmal

T
73 Beiträge seit 2004
vor 19 Jahren

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

M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 19 Jahren

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

S
259 Beiträge seit 2004
vor 18 Jahren

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.