在 .NET Core 上使用 Microsoft XML 序列化程序生成器

本教程介绍如何在 C# .NET Core 应用程序中使用 Microsoft XML 序列化程序生成器。 在本教程中可学习:

  • 如何创建 .NET Core 应用
  • 如何添加 Microsoft.XmlSerializer.Generator 包引用
  • 如何编辑 MyApp.csproj,以添加依赖项
  • 如何添加类和 XmlSerializer
  • 如何生成并运行应用程序

正如适用于 .NET Framework 的 Xml Serializer Generator (sgen.exe)Microsoft.XmlSerializer.Generator NuGet 包 是适用于 .NET Core 和 .NET 标准项目的等效项。 它为程序集中包含的类型创建 XML 序列化程序集,从而提高使用 XmlSerializer 序列化或反序列化这些类型对象时,XML 序列化的启动性能。

先决条件

完成本教程:

提示

需要安装代码编辑器? 试用 Visual Studio

在 .NET Core 控制台应用程序中使用 Microsoft XML 序列化程序生成器

以下说明将展示如何在 .NET Core 控制台应用程序中使用 XML 序列化程序生成器。

创建 .NET Core 控制台应用程序

打开命令提示符,创建一个名为“MyApp”的文件夹。 导航到创建的文件夹,并键入以下命令:

dotnet new console

在 MyApp 项目中向 Microsoft.XmlSerializer.Generator 包添加引用

使用 dotnet add package 命令在项目中添加引用。

类型:

dotnet add package Microsoft.XmlSerializer.Generator -v 1.0.0

添加包后,验证对 MyApp.csproj 的更改

打开代码编辑器并开始操作! 仍从生成了应用的 MyApp 目录中进行操作。

在文本编辑器中打开 MyApp.csproj。

运行 dotnet add package 命令后,以下行会添加到 MyApp.csproj 项目文件中:

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

为 .NET CLI 工具支持添加其他 ItemGroup 部分

在已检查的 ItemGroup 部分后添加以下行:

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

在应用程序中添加类

在文本编辑器中打开 Program.cs。 在 Program.cs 中添加名为“MyClass”的类 。

public class MyClass
{
   public int Value;
}

为 MyClass 创建 XmlSerializer

在 Main 中添加以下行,为 MyClass 创建 XmlSerializer

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

编译和运行应用程序

还是在 MyApp 文件夹中,通过 dotnet run 运行应用程序,它会在运行时自动加载和使用预生成的序列化程序。

在控制台窗口中键入以下命令:

dotnet run

注意

dotnet run 调用 dotnet build 来确保已生成要生成的目标,然后调用 dotnet <assembly.dll> 运行目标应用程序。

重要

本教程中用来运行应用程序的命令和步骤仅用于开发过程。 准备好部署应用后,查看适用于 .NET Core 应用的不同部署策略dotnet publish 命令。

如果一切顺利,则会在输出文件夹中生成名为“MyApp.XmlSerializers.dll”的程序集。

祝贺你! 你刚才已完成:

  • 创建 .NET Core 应用。
  • 向 Microsoft.XmlSerializer.Generator 包中添加引用。
  • 编辑 MyApp.csproj 以添加依赖项。
  • 添加类和 XmlSerializer。
  • 生成和运行应用程序。

进一步自定义 XML 序列化程序集(可选)

将以下 XML 添加到 MyApp.csproj 以进一步自定义程序集生成:

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