Xamarin Forms Embedded AssetsSe 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".

Página html como recurso inseridoDepois 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.

https://medium.com/media/b6d3398faac99243731e7b0930d7330b/hrefPodemos 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.

https://medium.com/media/a82569b019026ae9c166758f90d7cbc7/hrefA 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 from embedded resourcesPronto! 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:

GitHub - felipebaltazar/Xamarin.Forms.EmbeddedAssets: Free yourself from platform specifc assets

Referências* Código fonte do Xamarin Forms * Código fonte do Xamarin.Forms.EmbeddedAssets