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

Obter o stream de um Embedded Resource no .NET Core

Aprenda a obter o stream de um recurso embutido no .NET Core entendendo como o nome do recurso é formado e usando GetManifestResourceStream.

Para obter um recurso embutido no .NET Core, primeiro precisamos entender como o nome do recurso é composto. Ele tem 3 elementos, todos unidos por pontos (.):

Vamos a um exemplo concreto. Temos um projeto (assembly) com namespace raiz MyApp.Core. Dentro do projeto, temos uma pasta + subpasta como Assets > Images. E dentro dela, temos um recurso embutido chamado logo.png. Neste caso:

Junte-os com . e você terá: MyApp.Core.Assets.Images.logo.png.

Uma vez que você sabe o identificador do recurso, só precisa de uma referência ao assembly que contém o recurso. Podemos obtê-la facilmente a partir de qualquer classe definida nesse assembly — supondo que tenhamos uma classe MyClass:

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

Obter a lista de todos os recursos embutidos em um assembly

Se você não encontra o recurso, normalmente é por um dos seguintes motivos:

Para ajudar na depuração, você pode listar todos os recursos embutidos em um assembly e partir dali. Para isso:

typeof(MyClass).Assembly.GetManifestResourceNames()

Isso retorna um simples string[], e você pode usá-lo facilmente na Immediate Window para depurar.

Comments

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

< Voltar