Xamarin Forms | Assets e páginas HTML como "embedded resource"

Felipe Baltazar
2 min readDec 13, 2021

--

VisualStudio build action Embedded resource selected
Xamarin Forms Embedded Assets

Se você já precisou carregar arquivos de páginas HTML, em seus projetos Xamarin, você provavelmente teve que replicar os arquivos para cada plataforma. O Xamarin.Forms.EmbeddedAssets vem para resolver isso e nos ajudar a centralizar cada vez mais os recursos no projeto compartilhado.

Nuget pra todo lado ✨

Para utilizar essa ferramenta vamos precisar incluir o pacote Nuget em nosso projeto compartilhado.

Install-Package Xamarin.Forms.EmbeddedAssets -Version 1.0.0

Configurando no projeto 🚀

Uma vez instalado vamos colocar nossos assets no projeto compartilhado definindo a ação de build para "Recurso Inserido".

Html page as embedded resource on visual studio interface
Página html como recurso inserido

Depois só precisamos informar o nome do arquivo a ser utilizado, da mesma forma como fazemos com as fontes a partir da versão 4.5 do Xamarin.Forms.

AssemblyInfo.cs

Podemos adicionar o atributo ExportAsset em qualquer arquivo (App.xaml.cs, MainPage.cs, AssemblyInfo.cs e etc), apenas precisamos que esteja em nível de assembly. Ou seja, fora de um bloco de namespace.

Note que aqui eu defini o paramêtro loadAssociatedResourcesInFolder pra true, pois a minha página Html utiliza css e imagens. Dessa forma eu preciso que esses outros assets também sejam exportados.

Com isso nossa página HTML já está pronta pra uso, vamos utilizar uma markup extension para carregá-la em uma webview.

MainPage.xaml

A extensão EmbeddedAsset resolve o carregamento do recurso inserido para o webview, assim como para qualquer tipo de controle que precise do caminho para o arquivo.

Html page loaded from embedded resources on android device
Html Page from embedded resources

Pronto! Estamos exibindo uma página HTML, com seus arquivos associados, sem precisar ficar replicando por plataforma.

Eai? Curtiu?

Esse exemplo você encontra no meu Github:

Referências

--

--

Felipe Baltazar

Developer AspnetCore 🌐, Windows 💻, Xamarin 🐒, Nerd 🤓, Gamer 🎮 , Father 👨‍👩‍👦 | Github:https://github.com/felipebaltazar