Start Debugging
2020-11-20 Aktualisiert 2023-11-05 csharp Edit on GitHub

Embedded-Resource-Stream in .NET Core abrufen

Erfahren Sie, wie Sie in .NET Core einen Stream zu einer eingebetteten Ressource abrufen, indem Sie die Zusammensetzung des Ressourcennamens verstehen und GetManifestResourceStream nutzen.

Um eine eingebettete Ressource in .NET Core abzurufen, müssen wir zunächst verstehen, wie der Ressourcenname aufgebaut ist. Er besteht aus 3 Elementen, die alle mit Punkten (.) verbunden sind:

Nehmen wir ein konkretes Beispiel. Wir haben ein Projekt (Assembly) mit dem Root-Namespace MyApp.Core. Innerhalb des Projekts befindet sich eine Ordner- und Unterordnerstruktur wie Assets > Images. Darin liegt eine eingebettete Ressource namens logo.png. In diesem Fall gilt:

Verbinden Sie sie mit . und Sie erhalten: MyApp.Core.Assets.Images.logo.png.

Sobald Sie den Ressourcen-Identifier kennen, brauchen Sie nur noch eine Referenz auf die Assembly, die die Ressource enthält. Diese erhalten wir leicht von jeder Klasse, die in dieser Assembly definiert ist; angenommen wir haben eine Klasse MyClass:

typeof(MyClass).Assembly.GetManifestResourceStream("MyApp.Core.Assets.Images.logo.png")

Liste aller eingebetteten Ressourcen einer Assembly abrufen

Falls Sie die Ressource nicht finden, liegt das meist an einem der folgenden Gründe:

Zur Fehlersuche können Sie alle eingebetteten Ressourcen einer Assembly auflisten und von dort weiterarbeiten. Dazu:

typeof(MyClass).Assembly.GetManifestResourceNames()

Das liefert ein einfaches string[] zurück, das Sie zum Debuggen bequem im Immediate Window verwenden können.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Zurück