Compilação XAML no Xamarin.FormsXAML Compilation in Xamarin.Forms

Opcionalmente, XAML pode ser compilado direto na IL (linguagem intermediária) com o compilador XAML (XAMLC).XAML can be optionally compiled directly into intermediate language (IL) with the XAML compiler (XAMLC).

A compilação XAML oferece vários benefícios:XAML compilation offers a number of a benefits:

  • Executa verificação de tempo de compilação de XAML, notificando o usuário de quaisquer erros.It performs compile-time checking of XAML, notifying the user of any errors.
  • Elimina parte da carga e do tempo de instanciação para elementos XAML.It removes some of the load and instantiation time for XAML elements.
  • Ajuda a reduzir o tamanho do arquivo do assembly final não incluindo mais arquivos .XAML.It helps to reduce the file size of the final assembly by no longer including .xaml files.

A compilação XAML é desabilitada por padrão na estrutura.XAML compilation is disabled by default in the framework. No entanto, ele está habilitado nos modelos para novos projetos.However, it's enabled in the templates for new projects. Ele pode ser explicitamente habilitado ou desabilitado ( XamlCompilationOptions.Skip ) no nível do assembly e da classe adicionando o XamlCompilation atributo.It can be explicitly enabled or disabled (XamlCompilationOptions.Skip) at both the assembly and class level by adding the XamlCompilation attribute.

O exemplo de código a seguir demonstra como habilitar a compilação XAML no nível do assembly:The following code example demonstrates enabling XAML compilation at the assembly level:

using Xamarin.Forms.Xaml;
...
[assembly: XamlCompilation (XamlCompilationOptions.Compile)]
namespace PhotoApp
{
  ...
}

Embora o atributo possa ser colocado em qualquer lugar, um bom lugar para colocá-lo está em AssemblyInfo.cs.While the attribute can be placed anywhere, a good place to put it is in AssemblyInfo.cs.

Neste exemplo, a verificação em tempo de compilação de todos os XAML contidos no assembly será executada, com erros XAML sendo relatados em tempo de compilação em vez de tempo de execução.In this example, compile-time checking of all the XAML contained within the assembly will be performed, with XAML errors being reported at compile-time rather than run-time. Portanto, o assembly prefixo para o XamlCompilation atributo especifica que o atributo se aplica a todo o assembly.Therefore, the assembly prefix to the XamlCompilation attribute specifies that the attribute applies to the entire assembly.

Observação

O XamlCompilation atributo e a XamlCompilationOptions Enumeração residem no Xamarin.Forms.Xaml namespace, que deve ser importado para usá-los.The XamlCompilation attribute and the XamlCompilationOptions enumeration reside in the Xamarin.Forms.Xaml namespace, which must be imported to use them.

O exemplo de código a seguir demonstra como habilitar a compilação XAML no nível de classe:The following code example demonstrates enabling XAML compilation at the class level:

using Xamarin.Forms.Xaml;
...
[XamlCompilation (XamlCompilationOptions.Compile)]
public class HomePage : ContentPage
{
  ...
}

Neste exemplo, a verificação de tempo de compilação do XAML para a HomePage classe será executada e os erros relatados como parte do processo de compilação.In this example, compile-time checking of the XAML for the HomePage class will be performed and errors reported as part of the compilation process.

Observação

Associações compiladas podem ser habilitadas para melhorar o desempenho de vinculação de dados em Xamarin.Forms aplicativos.Compiled bindings can be enabled to improve data binding performance in Xamarin.Forms applications. Para saber mais, confira Associações compiladas.For more information, see Compiled Bindings.