NetCore 中的 XmlSerializer.GenerateSerializer 备用

XmlSerializer.GenerateSerializer alternate in NetCore

提问人:beerus_hakai 提问时间:8/21/2023 更新时间:8/21/2023 访问量:36

问:

我们在代码中用于生成包含序列化程序的临时程序集。然后缓存这些组件,从而确保资源消耗较低。XmlSerializer

我们的应用程序在 .NET Framework 中,我们当前使用的代码是 -

 XmlSerializer.GenerateSerializer(
                        types.ToArray(),
                        xmlMapping.ToArray(),
                        parameters);

我们希望将代码移动到 .NET Core,我遇到了这个答案,其中列出了 Microsoft.XmlSerializer.Generator 包的使用。

在尝试集成它时,我发现没有构造函数/方法,它将同时采用类型和 xml 映射作为参数。

我们的网络框架代码还使用 类,存在于 (这是调用的第三个参数,名为 )。CompilerParametersSystem.CodeDomparameters

有没有等效的方法可以使用网络核心包实现网络框架功能?

C# xml .net-core

评论

0赞 jdweng 8/21/2023
4.8 的源代码在这里,您可以根据以下代码在类上创建您:referencesource.microsoft.com/#System.Xml/System/Xml/...

答:

1赞 Marc Selis 8/21/2023 #1

为此,可以使用 nuget 包。该包将安装一个 CLI 工具,该工具可以自动生成类型的序列化程序 DLL,因此不再需要调用该方法。 您需要在文件中添加额外的行,以便在构建期间自动运行 CLI 工具。Microsoft.XmlSerializer.GeneratorGenerateSerializer.csproj

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

有关详细信息,请参阅 Microsoft Learn 上的在 .NET Core 上使用 Microsoft XML 序列化程序生成器页。

评论

0赞 beerus_hakai 8/30/2023
谢谢马克。我正在尝试使构建正常工作,目前遇到了一些错误。不过,我有一个后续问题 - 我在示例应用程序中看到,在您提到的链接中,我们仍在编写以下行 - ---- ---- 由于在我们的 .NET Framework 应用程序中,我们也传递了,新的 NetCore 代码会处理这个问题吗?如果没有,那么我可能无法将其用于迁移。var serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyClass));xmlMappings
0赞 Marc Selis 9/1/2023
该类型有一个静态方法,该方法从 的数组 创建序列化程序。文档链接XmlSerializerFromMappingsXmlMappings