在本教學課程中,您將瞭解如何在 C# 應用程式中使用 Microsoft XML 串行化程式產生器。 During the course of this tutorial, you learn:
- 如何建立 .NET 控制台應用程式
- How to add a reference to the Microsoft.XmlSerializer.Generator package
- 如何編輯 MyApp.csproj 以新增相依性
- How to add a class and an XmlSerializer
- 如何建置和執行應用程式
如同 .NET Framework 的 Xml 串行化程序產生器 (sgen.exe),Microsoft.XmlSerializer.Generator NuGet 套件相當於 .NET Core/.NET 5+ 和 .NET Standard 專案。 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.
先決條件
若要完成本教學課程:
- .NET Core 2.1 SDK 或更新版本。
- 您慣用的程式代碼編輯器。
小提示
需要安裝程式代碼編輯器嗎? 請嘗試 Visual Studio!
下列指示說明如何在 .NET Core 控制台應用程式中使用 XML 串行化程式產生器。
建立應用程式
開啟命令提示字元,並建立名為 MyApp 的資料夾。 瀏覽至您建立的資料夾,然後輸入下列命令:
dotnet new console
Add a reference to the Microsoft.XmlSerializer.Generator package.
dotnet add package Microsoft.XmlSerializer.Generator -v 8.0.0
After running this command, the following lines are added to your MyApp.csproj project file:
<ItemGroup> <PackageReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" /> </ItemGroup>
將下列
ItemGroup
區段新增至項目檔,以新增工具參考。<ItemGroup> <DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="8.0.0" /> </ItemGroup>
在文本編輯器中開啟 Program.cs 。 在 Program.cs 中新增名為 MyClass 的類別。
public class MyClass { public int Value; }
Create an
XmlSerializer
forMyClass
. 將下列這一行新增至 Program.cs 檔案:var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));
建置並執行應用程式。 透過
dotnet run
執行應用程式:dotnet run
應用程式會在運行時間自動載入並使用預先產生的序列化器。
小提示
dotnet run
呼叫dotnet build
以確保建置目標已建置,然後呼叫dotnet <assembly.dll>
以執行目標應用程式。
這很重要
本教學課程中用來執行應用程式的命令和步驟只會在開發期間使用。 準備好部署應用程式之後,請查看 .NET 應用程式和 命令的不同dotnet publish
。
如果一切成功,則會在輸出資料夾中產生名為 MyApp.XmlSerializers.dll 的元件。
祝賀! 您只需要:
- 已建立 .NET 主控台應用程式。
- Added a reference to the Microsoft.XmlSerializer.Generator package.
- 編輯 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>