Freigeben über


Verwenden des Microsoft XML Serializer Generators auf .NET Core

In diesem Lernprogramm erfahren Sie, wie Sie den Microsoft XML Serializer Generator in einer C#-Anwendung verwenden. Im Verlauf dieses Lernprogramms lernen Sie:

  • So erstellen Sie eine .NET-Konsolen-App
  • So fügen Sie einen Verweis auf das Microsoft.XmlSerializer.Generator-Paket hinzu
  • So bearbeiten Sie Ihre MyApp.csproj, um Abhängigkeiten hinzuzufügen
  • Hinzufügen einer Klasse und eines XmlSerializers
  • Erstellen und Ausführen der Anwendung

Wie der Xml Serializer Generator (sgen.exe) für .NET Framework ist das Microsoft.XmlSerializer.Generator NuGet-Paket das Äquivalent für .NET Core/.NET 5+ - und .NET Standard-Projekte. Es erstellt eine XML-Serialisierungsassembly für Typen, die in einer Assembly vorhanden sind, um die Startleistung der XML-Serialisierung zu verbessern, wenn Objekte dieser Typen mithilfe von XmlSerializer serialisiert oder deserialisiert werden.

Voraussetzungen

Um dieses Tutorial abzuschließen:

Tipp

Müssen Sie einen Code-Editor installieren? Probieren Sie Visual Studio aus!

Die folgenden Anweisungen zeigen, wie Sie den XML-Serializer-Generator in einer .NET Core-Konsolenanwendung verwenden.

Erstellen der App

  1. Öffnen Sie eine Eingabeaufforderung, und erstellen Sie einen Ordner mit dem Namen "MyApp". Navigieren Sie zu dem ordner, den Sie erstellt haben, und geben Sie den folgenden Befehl ein:

    dotnet new console
    
  2. Fügen Sie einen Verweis auf das Microsoft.XmlSerializer.Generator-Paket hinzu.

    dotnet add package Microsoft.XmlSerializer.Generator -v 8.0.0
    

    Nachdem Sie diesen Befehl ausgeführt haben, werden der Projektdatei "MyApp.csproj" die folgenden Zeilen hinzugefügt:

    <ItemGroup>
       <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
    </ItemGroup>
    
  3. Fügen Sie einen Toolverweis hinzu, indem Sie der Projektdatei den folgenden ItemGroup Abschnitt hinzufügen.

    <ItemGroup>
       <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" />
    </ItemGroup>
    
  4. Öffnen Sie Program.cs in Ihrem Text-Editor. Fügen Sie eine Klasse mit dem Namen "MyClass" in Program.cs hinzu.

    public class MyClass
    {
       public int Value;
    }
    
  5. Erstellen Sie eine XmlSerializer für MyClass. Fügen Sie der datei Program.cs die folgende Zeile hinzu:

    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
    
  6. Erstellen Sie die Anwendung, und führen Sie sie aus. Starten Sie die Applikation über dotnet run.

    dotnet run
    

    Die App lädt automatisch und verwendet zur Laufzeit die vorgenerierten Serialisierer.

    Tipp

    dotnet run ruft dotnet build auf, um sicherzustellen, dass die Build-Ziele erstellt wurden, und ruft dann dotnet <assembly.dll> auf, um die Zielanwendung auszuführen.

Wichtig

Die in diesem Lernprogramm gezeigten Befehle und Schritte zum Ausführen Ihrer Anwendung werden nur während der Entwicklungszeit verwendet. Wenn Sie bereit sind, Ihre App bereitzustellen, sehen Sie sich die verschiedenen Bereitstellungsstrategien für .NET-Apps und den dotnet publish Befehl an.

Wenn alles erfolgreich ist, wird eine Assembly mit dem Namen MyApp.XmlSerializers.dll im Ausgabeordner generiert.

Glückwunsch! Sie haben nur Folgendes:

  • Es wurde eine .NET-Konsolen-App erstellt.
  • Ein Verweis auf das Microsoft.XmlSerializer.Generator-Paket wurde hinzugefügt.
  • Ihre MyApp.csproj wurde bearbeitet, um Abhängigkeiten hinzuzufügen.
  • Eine Klasse und ein XmlSerializer wurden hinzugefügt.
  • Erstellt und führt die Anwendung aus.

Weitere Anpassung der XML-Serialisierungsassembly (optional)

Fügen Sie Ihrer MyApp.csproj den folgenden XML-Code hinzu, um die Assemblygenerierung weiter anzupassen:

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