Partilhar via


Utilizar o Microsoft XML Serializer Generator no .NET Core

Este tutorial ensina-o a utilizar o Microsoft XML Serializer Generator numa aplicação C# .NET Core. Durante este tutorial, irá aprender:

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

Tal como o Xml Serializer Generator (sgen.exe) para o .NET Framework, o pacote NuGet Microsoft.XmlSerializer.Generator é o equivalente para projetos .NET Core e .NET Standard. Cria uma assemblagem de serialização XML para tipos contidos numa assemblagem para melhorar o desempenho de arranque da serialização XML ao serializar ou des serializar objetos desses tipos com XmlSerializer.

Pré-requisitos

Para concluir este tutorial:

Dica

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

Utilizar o Gerador de Serializador XML da Microsoft numa aplicação de consola .NET Core

As seguintes instruções mostram-lhe como utilizar o XML Serializer Generator numa aplicação de consola .NET Core.

Criar uma aplicação de consola .NET Core

Abra uma linha de comandos e crie uma pasta com o nome MyApp. Navegue para a pasta que criou e escreva o seguinte comando:

dotnet new console

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

Utilize o dotnet add package comando para adicionar a referência no seu projeto.

Escreva:

dotnet add package Microsoft.XmlSerializer.Generator -v 1.0.0

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

Abra o seu editor de código e vamos começar! Ainda estamos a trabalhar a partir do diretório MyApp em que criámos a aplicação.

Abra MyApp.csproj no seu editor de texto.

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

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

Adicionar outra secção ItemGroup para suporte da Ferramenta da CLI de .NET

Adicione as seguintes linhas após a ItemGroup secção que inspecionámos:

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

Adicionar uma classe na aplicação

Abra Program.cs no seu editor de texto. Adicione a classe com o nome MyClass em Program.cs.

public class MyClass
{
   public int Value;
}

Criar um XmlSerializer para MyClass

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

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

Compilar e executar a aplicação

Ainda na pasta MyApp , execute a aplicação através dotnet run de e carrega e utiliza automaticamente os serializadores pré-gerados no tempo de execução.

Escreva o seguinte comando na janela da consola:

dotnet run

Nota

dotnet run chama dotnet build para garantir que os destinos de compilação foram criados e, em seguida, chama dotnet <assembly.dll> para executar a aplicação de destino.

Importante

Os comandos e os passos apresentados neste tutorial para executar a sua aplicação são utilizados apenas durante o tempo de desenvolvimento. Assim que estiver pronto para implementar a sua aplicação, veja as diferentes estratégias de implementação para aplicações .NET Core e o dotnet publish comando .

Se tudo for bem-sucedido, é gerada uma assemblagem com o nome MyApp.XmlSerializers.dll na pasta de saída.

Parabéns! Tem apenas:

  • Criou uma aplicação .NET Core.
  • Foi adicionada uma referência ao pacote Microsoft.XmlSerializer.Generator.
  • Editou o myApp.csproj para adicionar dependências.
  • Foi adicionada uma classe e um XmlSerializer.
  • Compilou e executou a aplicação.

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

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

<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>