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:
- SDK do .NET Core 2.1 ou posterior.
- Seu editor de códigos favorito.
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>