Share via


Tarefa MarkupCompilePass1

A tarefa MarkupCompilePass1 converte arquivos de projeto XAML não localizáveis para o formato binário compilado.

Parâmetros de tarefa

Parâmetro Descrição
AllGeneratedFiles Parâmetro de saída opcional ITaskItem[].

Contém uma lista completa dos arquivos que são gerados pela tarefa MarkupCompilePass1.
AlwaysCompileMarkupFilesInSeparateDomain Parâmetro Boolean opcional.

Especifica se a tarefa deve ser executada em um AppDomain separado. Se esse parâmetro retornar false, a tarefa será executada mais rapidamente no mesmo AppDomain que o MSBuild. Se o parâmetro retornar true, a tarefa será executada de modo mais lento em um segundo AppDomain que é isolado do MSBuild.
ApplicationMarkup Parâmetro opcional ITaskItem[].

Especifica o nome do arquivo de definição de aplicativo XAML.
AssembliesGeneratedDuringBuild Parâmetro String[] opcional.

Especifica as referências aos assemblies alterados durante o processo de build. Por exemplo, uma solução do Visual Studio pode conter um projeto que faz referência à saída compilada de outro projeto. Nesse caso, a saída compilada do segundo projeto pode ser adicionada ao parâmetro AssembliesGeneratedDuringBuild.

Observação: o parâmetro AssembliesGeneratedDuringBuild deve conter referências ao conjunto completo de assemblies que são gerados por uma solução de build.
AssemblyName Parâmetro obrigatório string.

Especifica o nome curto do assembly que é gerado para um projeto. Por exemplo, se um projeto está gerando um executável no Windows cujo nome é WinExeAssembly.exe, o parâmetro AssemblyName tem um valor de WinExeAssembly.
AssemblyPublicKeyToken Parâmetro String opcional.

Especifica o token da chave pública para o assembly.
AssemblyVersion Parâmetro String opcional.

Especifica o número de versão do assembly.
ContentFiles Parâmetro opcional ITaskItem[].

Especifica a lista de arquivos de conteúdo flexível.
DefineConstants Parâmetro String opcional.

Especifica que o valor atual de DefineConstants é mantido. o que a afeta a geração do assembly de destino. se esse parâmetro é alterado, a API pública do assembly de destino pode ser alterada e a compilação de arquivos XAML que fazem referência a tipos de locais pode ser afetada.
ExtraBuildControlFiles Parâmetro opcional ITaskItem[].

Especifica uma lista de arquivos que controlam se uma recompilação é disparada quando a tarefa MarkupCompilePass1 é executada novamente, uma recompilação será acionada se um desses arquivos for alterado.
GeneratedBamlFiles Parâmetro de saída opcional ITaskItem[].

Contém a lista de arquivos gerados no formato binário de XAML.
GeneratedCodeFiles Parâmetro de saída opcional ITaskItem[].

Contém a lista de arquivos de código gerenciado gerados.
GeneratedLocalizationFiles Parâmetro de saída opcional ITaskItem[].

Contém a lista de arquivos de localização que foram gerados para cada arquivo XAML localizável.
HostInBrowser Parâmetro String opcional.

Especifica se o assembly gerado é um XBAP (Aplicativo do Navegador XAML). As opções válidas são true e false. Se for true, código será gerado para dar suporte à hospedagem de navegador.
KnownReferencePaths Parâmetro String[] opcional.

Especifica as referências aos assemblies que não são alterados durante o processo de build. Inclui assemblies localizados no GAC (cache de assembly global) em um diretório de instalação do .NET e assim por diante.
Language Parâmetro obrigatório String.

Especifica a linguagem gerenciada à qual o compilador dá suporte. As opções válidas são C#, VB, JScript e C++.
LanguageSourceExtension Parâmetro String opcional.

Especifica a extensão que é acrescentada à extensão do arquivo de código gerenciado gerado:

<Filename>.g<LanguageSourceExtension>

Se o parâmetro LanguageSourceExtension não está definido com um valor específico, a extensão de nome de arquivo de origem padrão para uma linguagem é usada: .vb para Visual Basic, .csharp para C#.
LocalizationDirectivesToLocFile Parâmetro String opcional.

Especifica como gerar informações de localização para cada arquivo XAML de origem. As opções válidas são None, CommentsOnly e All.
OutputPath Parâmetro obrigatório String.

Especifica o diretório no qual ocorre a geração dos arquivos de código gerenciado e arquivos de formato binário XAML gerados.
OutputType Parâmetro obrigatório String.

Especifica o tipo de assembly que é gerado por um projeto. As opções válidas são winexe, exe, library e netmodule.
PageMarkup Parâmetro opcional ITaskItem[].

Especifica uma lista de arquivos XAML para processar.
References Parâmetro opcional ITaskItem[].

Especifica a lista de referências de arquivos para assemblies que contêm os tipos usados nos arquivos XAML.
RequirePass2ForMainAssembly Parâmetro de saída opcional Boolean.

Indica se o projeto contém arquivos XAML não localizáveis que fazem referência a tipos de locais que são inseridos no assembly principal.
RequirePass2ForSatelliteAssembly Parâmetro de saída opcional Boolean.

Indica se o projeto contém arquivos XAML localizáveis que fazem referência a tipos de locais que são inseridos no assembly principal.
RootNamespace Parâmetro String opcional.

Especifica o namespace raiz para as classes que estão dentro do projeto. RootNamespace também é usado como o namespace padrão de um arquivo de código gerenciado gerado quando o arquivo XAML correspondente não incluir o atributo x:Class.
SourceCodeFiles Parâmetro opcional ITaskItem[].

Especifica a lista de arquivos de código para o projeto atual. A lista não inclui arquivos de código gerenciado específicos a um idioma gerados.
UICulture Parâmetro String opcional.

Especifica o assembly satélite para a cultura de interface do usuário em que os arquivos de formato binário XAML gerados são inseridos. Se UICulture não estiver definido, arquivos de formato binário XAML gerados serão inseridos no assembly principal.
XAMLDebuggingInformation Parâmetro Boolean opcional.

Quando for true, as informações de diagnóstico serão geradas e incluídas no XAML compilado para auxiliar na depuração.

Comentários

A tarefa MarkupCompilePass1 normalmente compila XAML em um formato binário e gera arquivos de código. Se um arquivo XAML contém referências a tipos definidos no mesmo projeto, sua compilação para o formato binário é adiada por MarkupCompilePass1 para uma segunda passagem de compilação de marcação (MarkupCompilePass2). Esses arquivos devem ter sua compilação adiada porque eles devem aguardar até que os tipos referenciados definidos localmente sejam compilados. No entanto, se um arquivo XAML tiver um atributo x:Class, MarkupCompilePass1 gerará o arquivo de código específico da linguagem para ele.

Um arquivo XAML é localizável se ele contém elementos que usam o atributo x:Uid:

<Page x:Class="WPFMSBuildSample.Page1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Uid="Page1Uid"
    >
  ...
</Page>

Um arquivo XAML faz referência a um tipo definido localmente quando ele declara um namespace XML que usa o valor clr-namespace para se referir a um namespace do projeto atual:

<Page x:Class="WPFMSBuildSample.Page1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:localNamespace="clr-namespace:WPFMSBuildSample"
    >
    <Grid>
      <Grid.Resources>
        <localNameSpace:LocalType x:Key="localType" />
      </Grid.Resources>
      ...
    </Grid>
</Page>

Se qualquer arquivo XAML for localizável ou fizer referência a um tipo definido localmente, uma segunda passagem de compilação de marcação será necessária, o que exigirá a execução de GenerateTemporaryTargetAssembly e, em seguida, de MarkupCompilePass2.

Exemplo

O exemplo a seguir mostra como converter três arquivos XAML Page em arquivos de formato binário. Page1 contém uma referência a um tipo, Class1, que está no namespace raiz do projeto e, portanto, não é convertido em arquivos de formato binário nessa passagem de compilação de marcação. Em vez disso, o GenerateTemporaryTargetAssembly é executado e é seguido de MarkupCompilePass2.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask
    TaskName="Microsoft.Build.Tasks.Windows.MarkupCompilePass1"
    AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
  <Target Name="MarkupCompilePass1Task">
    <MarkupCompilePass1
      AssemblyName="WPFMSBuildSample"
      Language="C#"
      OutputType="WinExe"
      OutputPath="obj\Debug\"
      ApplicationMarkup="App.xaml"
      PageMarkup="Page1.xaml;Page2.xaml;Page3.xaml"
      SourceCodeFiles="Class1.cs"
      References="c:\windows\Microsoft.net\Framework\v2.0.50727\System.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationCore.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationFramework.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\WindowsBase.dll" />
  </Target>
</Project>

Confira também