Kann man in VB.NET 2003 Bilder in DLLs speichern und im aktuellen Projekt anzeigen?

Antwort vom

**Ja – in VB.NET 2003 kannst du Bilder in einer DLL speichern und im aktuellen Projekt anzeigen. Der saubere Weg ist, die Bilder als eingebettete Ressourcen in die DLL aufzunehmen und sie zur Laufzeit daraus zu laden.** ## Was praktisch gemeint ist Eine DLL kann nicht nur Code enthalten, sondern auch Ressourcen wie Bitmaps, Icons oder Strings. Für dein Projekt bedeutet das: - Du kannst Bilder zentral in einer DLL ablegen. - Mehrere Programme können dieselben Bilder nutzen. - Änderungen an den Bildern erfordern meist nur eine neue DLL statt Änderungen an jedem Formular. ## Der wichtige Unterschied Entscheidend ist, **wie** die Bilder in der DLL liegen: 1. **Als eingebettete Ressource** - am zuverlässigsten - Bild ist direkt in der DLL enthalten - wird zur Laufzeit über den Assembly-Stream geladen 2. **Als normale Datei neben der DLL** - technisch möglich, aber dann ist das Bild nicht wirklich *in* der DLL - bringt kaum Vorteile gegenüber einem normalen Bilderordner Wenn du wirklich Bilder **in** der DLL speichern willst, sind **embedded resources** die richtige Lösung. ## So funktioniert es in VB.NET 2003 Du fügst das Bild in das DLL-Projekt ein und setzt die Build-Aktion auf eingebettete Ressource. Danach kannst du es im Hauptprojekt etwa so laden: ```vb Imports System.Reflection Imports System.IO Imports System.Drawing Dim asm As Assembly = GetType(IrgendeineKlasseAusDerDll).Assembly Dim stm As Stream = asm.GetManifestResourceStream("MeineDll.Bilder.logo.jpg") If Not stm Is Nothing Then Dim img As Image = Image.FromStream(stm) PictureBox1.Image = img End If ``` ## Worauf du achten musst Der Ressourcenname ist der häufigste Fehler. Er lautet meist nicht nur `logo.jpg`, sondern eher so etwas wie: ```vb MeineDll.Bilder.logo.jpg ``` Also: - Standard-Namespace der DLL - ggf. Ordnername - Dateiname mit Endung Wenn der Name nicht exakt stimmt, liefert `GetManifestResourceStream(...)` einfach `Nothing`. ## Praktischer Tipp Wenn du unsicher bist, wie der Ressourcenname genau lautet, kannst du dir alle eingebetteten Ressourcennamen ausgeben lassen: ```vb Dim asm As Assembly = GetType(IrgendeineKlasseAusDerDll).Assembly Dim names() As String = asm.GetManifestResourceNames() Dim s As String For Each s In names MessageBox.Show(s) Next ``` Das ist in alten .NET-Versionen oft der schnellste Weg zur Fehlersuche. ## Lohnt sich das **Ja, wenn du gemeinsame Bilder zentral verwalten willst.** **Nein, wenn Benutzer die Bilder später leicht austauschen sollen.** Denn eingebettete Bilder sind bequem für Verteilung und Konsistenz, aber unpraktisch, wenn man sie ohne Neukompilieren ändern möchte. ## Klare Empfehlung **Ja, das geht in VB.NET 2003 problemlos – und für feste Programmgrafiken ist eine Ressourcen-DLL deutlich besser als lose Bilddateien.** Wenn die Bilder aber vom Benutzer austauschbar sein sollen, ist ein externer Ordner die bessere Lösung.

Kategorie: Technik Tags: VB.NET DLL Bilder

Verwandte Fragen

Warum sind von etwa 200 von einer SanDisk heruntergeladenen Bildern nur 3 angekommen?

Wahrscheinlich sind die Bilder nicht wirklich „weg“, sondern der Download oder Import wurde nur teilweise abgeschlossen – typisch sind ein Abbruch der Übertragung, ein falscher...