Compartilhar via


Usando o Microsoft XML Serializer Generator no .NET Core

Este tutorial ensina como usar o Microsoft XML Serializer Generator em um aplicativo do .NET Core em C#. Durante este tutorial, você aprenderá:

  • Como criar um aplicativo .NET Core
  • Como adicionar uma referência ao pacote Microsoft.XmlSerializer.Generator
  • Como editar seu MyApp.csproj para adicionar dependências
  • Como adicionar uma classe e um XmlSerializer
  • Como compilar e executar o aplicativo

Como o XML Serializer Generator (sgen.exe) para o .NET Framework, o pacote NuGet Microsoft.XmlSerializer.Generator é o equivalente para projetos do .NET Core e .NET Standard. Ele cria um assembly de serialização de XML para tipos contidos em um assembly a fim de melhorar o desempenho de inicialização da serialização de XML ao serializar ou desserializar objetos desses tipos usando XmlSerializer.

Pré-requisitos

Para concluir este tutorial:

Dica

Precisa instalar um editor de código? Experimente o Visual Studio!

Usar o Microsoft XML Serializer Generator em um aplicativo de console do .NET Core

As instruções a seguir mostram como usar o XML Serializer Generator em um aplicativo de console do .NET Core.

Criar um aplicativo de console .NET Core

Abra um prompt de comando e crie uma pasta chamada MyApp. Navegue até a pasta criada e digite o seguinte comando:

dotnet new console

Adicionar uma referência ao pacote Microsoft.XmlSerializer.Generator no projeto MyApp

Use o comando dotnet add package para adicionar a referência em seu projeto.

Tipo:

dotnet add package Microsoft.XmlSerializer.Generator -v 1.0.0

Verificar alterações ao MyApp.csproj depois de adicionar o pacote

Abra o editor de código e vamos começar! Ainda estamos trabalhando no diretório MyApp no qual criamos o aplicativo.

Abra o MyApp.csproj em seu editor de texto.

Depois de executar o comando dotnet add package, as seguintes linhas são adicionadas ao seu arquivo de projeto MyApp.csproj:

<ItemGroup>
   <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="1.0.0" />
</ItemGroup>

Adicionar outra seção ItemGroup para o suporte da ferramenta de CLI do .NET

Adicione as seguintes linhas depois da seção ItemGroup que inspecionamos:

<ItemGroup>
   <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="1.0.0" />
</ItemGroup>

Adicionar uma classe no aplicativo

Abra o Program.cs em seu editor de texto. Adicionar a classe denominada MyClass no Program.cs.

public class MyClass
{
   public int Value;
}

Criar um XmlSerializer para MyClass

Adicione a seguinte linha dentro de Main para criar um XmlSerializer para MyClass:

var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));

Compile e execute o aplicativo

Ainda dentro da pasta MyApp, execute o aplicativo por meio de dotnet run e ele carregará e usará automaticamente os serializadores pré-gerados em runtime.

Digite o seguinte comando na janela do console:

dotnet run

Observação

dotnet run chama dotnet build para garantir que os destinos de build foram criados e então chama dotnet <assembly.dll> para executar o aplicativo de destino.

Importante

Os comandos e as etapas mostradas neste tutorial para executar o aplicativo são usadas somente durante o tempo de desenvolvimento. Quando estiver pronto para implantar o aplicativo, dê uma olhada nas diferentes estratégias de implantação para aplicativos do .NET Core e no comando dotnet publish.

Se tudo for bem-sucedido, um assembly chamado MyApp.XmlSerializers.dll será gerado na pasta de saída.

Parabéns! Você acabou de:

  • Criar um aplicativo do .NET Core.
  • Adicionar uma referência ao pacote Microsoft.XmlSerializer.Generator.
  • Editar o MyApp.csproj para adicionar dependências.
  • Adicionar uma classe e um XmlSerializer.
  • Compilar e executar o aplicativo.

Personalizar ainda mais o assembly de serialização XML (opcional)

Adicione o seguinte XML ao MyApp.csproj para personalizar ainda mais a geração de assembly:

<PropertyGroup>
    <SGenReferences>C:\myfolder\abc.dll;C:\myfolder\def.dll</SGenReferences>
    <SGenTypes>MyApp.MyClass;MyApp.MyClass1</SGenTypes>
    <SGenProxyTypes>false</SGenProxyTypes>
    <SGenVerbose>true</SGenVerbose>
    <SGenKeyFile>mykey.snk</SGenKeyFile>
    <SGenDelaySign>true</SGenDelaySign>
</PropertyGroup>