Use Microsoft XML Serializer Generator on .NET Core
In this tutorial, you learn how to use the Microsoft XML Serializer Generator in a C# application. During the course of this tutorial, you learn:
- How to create a .NET console app
- How to add a reference to the Microsoft.XmlSerializer.Generator package
- How to edit your MyApp.csproj to add dependencies
- How to add a class and an XmlSerializer
- How to build and run the application
Like the Xml Serializer Generator (sgen.exe) for .NET Framework, the Microsoft.XmlSerializer.Generator NuGet package is the equivalent for .NET Core/.NET 5+ and .NET Standard projects. It creates an XML serialization assembly for types contained in an assembly to improve the startup performance of XML serialization when serializing or de-serializing objects of those types using XmlSerializer.
Prerequisites
To complete this tutorial:
- .NET Core 2.1 SDK or later.
- Your favorite code editor.
Tip
Need to install a code editor? Try Visual Studio!
The following instructions show you how to use XML Serializer Generator in a .NET Core console application.
Create the app
Open a command prompt and create a folder named MyApp. Navigate to the folder you created and type the following command:
dotnet new console
Use the
dotnet add package
command to add a reference to the Microsoft.XmlSerializer.Generator package.dotnet add package Microsoft.XmlSerializer.Generator -v 8.0.0
After running the
dotnet add package
command, the following lines are added to your MyApp.csproj project file:<ItemGroup> <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" /> </ItemGroup>
Add a tool reference by adding the following
ItemGroup
section to your project file.<ItemGroup> <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" /> </ItemGroup>
Open Program.cs in your text editor. Add a class named MyClass in Program.cs.
public class MyClass { public int Value; }
Create an
XmlSerializer
forMyClass
. Add the following line to the Program.cs file:var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
Build and run the application. Run the application via
dotnet run
:dotnet run
The app automatically loads and uses the pre-generated serializers at run time.
Tip
dotnet run
callsdotnet build
to ensure that the build targets have been built, and then callsdotnet <assembly.dll>
to run the target application.
Important
The commands and steps shown in this tutorial to run your application are used during development time only. Once you're ready to deploy your app, take a look at the different deployment strategies for .NET apps and the dotnet publish
command.
If everything succeeds, an assembly named MyApp.XmlSerializers.dll is generated in the output folder.
Congratulations! You have just:
- Created a .NET console app.
- Added a reference to the Microsoft.XmlSerializer.Generator package.
- Edited your MyApp.csproj to add dependencies.
- Added a class and an XmlSerializer.
- Built and run the application.
Further customize XML serialization assembly (optional)
Add the following XML to your MyApp.csproj to further customize assembly generation:
<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>