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

Obtener el stream de un Embedded Resource en .NET Core

Aprende a obtener el stream de un recurso embebido en .NET Core entendiendo cómo se compone el nombre del recurso y usando GetManifestResourceStream.

Para obtener un recurso embebido en .NET Core, primero hay que entender cómo se compone el nombre del recurso. Tiene 3 elementos, unidos por puntos (.):

Veamos un ejemplo concreto. Tenemos un proyecto (assembly) con namespace raíz MyApp.Core. Dentro del proyecto, tenemos una carpeta + subcarpeta como Assets > Images. Y dentro de ella, tenemos un recurso embebido llamado logo.png. En este caso:

Únelos con . y obtienes: MyApp.Core.Assets.Images.logo.png.

Una vez que sabes el identificador del recurso, solo necesitas una referencia al assembly que contiene el recurso real. Podemos obtenerla fácilmente desde cualquier clase definida en ese assembly. Suponiendo que tenemos una clase MyClass:

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

Obtener una lista con todos los recursos embebidos en un assembly

Si no encuentras el recurso, normalmente se debe a una de las siguientes razones:

Para ayudar a depurar, puedes listar todos los recursos embebidos en un assembly y partir de ahí. Para hacerlo:

typeof(MyClass).Assembly.GetManifestResourceNames()

Esto devolverá un simple string[], que puedes usar fácilmente en la Immediate Window para depurar.

Comments

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

< Volver