Использование генератора XML-сериализатора Майкрософт в .NET Core

Это руководство описывает использование генератора XML-сериализатора Майкрософт в приложении .NET Core на языке C#. В ходе работы с этим руководством вы:

  • как создать приложение .NET Core;
  • Добавление ссылки на пакет Microsoft.XmlSerializer.Generator
  • Редактирование MyApp.csproj для добавления зависимостей
  • Добавление класса как XmlSerializer
  • как собрать и запустить приложение.

Являясь аналогом генератора XML-сериализатора (sgen.exe) для .NET Framework, пакет NuGet Microsoft.XmlSerializer.Generator предназначен для проектов .NET Core и .NET Standard. Он создает сборку сериализации XML для содержащихся в сборке типов, улучшая производительность при запуске сериализации или десериализации XML для объектов этих типов с помощью XmlSerializer.

Предварительные требования

Для работы с этим руководством вам понадобится следующее:

Совет

Нужно ли устанавливать редактор кода? Попробуйте использовать Visual Studio.

Использование генератора XML-сериализатора Майкрософт в консольном приложении .NET Core

Приведенные ниже инструкции описывают, как использовать генератор XML-сериализатора Майкрософт в консольном приложении .NET Core.

Создание консольного приложения .NET Core

Откройте командную строку и создайте папку с именем MyApp. Перейдите в созданную папку и введите следующие команды:

dotnet new console

Добавление ссылки на пакет Microsoft.XmlSerializer.Generator в проекте MyApp

Используйте команду 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>

Добавление другого раздела ItemGroup для поддержки инструмента CLI для .NET

Добавьте следующие строки после рассмотренного нами раздела ItemGroup:

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

Добавление класса в приложении

Откройте Program.cs в текстовом редакторе. Добавьте в Program.cs класс MyClass.

public class MyClass
{
   public int Value;
}

Создание XmlSerializer для MyClass

Добавьте следующую строку внутрь Main, чтобы создать XmlSerializer для MyClass:

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>