.NET 6 XmlSerializer 抛出 JIT 编译器错误(无效的 IL 代码)

.NET 6 XmlSerializer throws JIT compiler error (invalid IL code)

我在 C# .NET Core 6 中序列化对象时遇到问题。 当我尝试序列化我的对象(仅用于生成我的 XML)时,它会抛出以下错误:

System.InvalidOperationException
  HResult=0x80131509
  Message=There was an error generating the XML document.
  Source=System.Private.Xml
  StackTrace:
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o)
   at CdaForNetCore.V3.Models.CdaModel.ToXmlString() in C:\Users\MyUser\source\repos\cdafornet\CdaForNetCore\V3\Models\CdaModel.cs:line 53
   at CdaGenerator.ProtocolGenerator.GenerateAndSendProtocol(Boolean testrun) in C:\Users\MyUser\source\repos\cda\CdaGenerator\ProtocolGenerator.cs:line 184
   at CdaGenerator.ProtocolGenerator.GenerateAndSendProtocol(Int64 document_id, ProgressTask& task, Boolean testrun) in C:\Users\MyUser\source\repos\cda\CdaGenerator\ProtocolGenerator.cs:line 28
   at Program.<>c__DisplayClass0_2.<<Main>$>b__2() in C:\Users\MyUser\source\repos\cda\CdaGenerator\Program.cs:line 55
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__272_0(Object obj)
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)

Inner Exception 1:
InvalidProgramException: The JIT compiler encountered invalid IL code or an internal limitation.

这是我生成 XML:

的代码
XmlSerializer serializer = new XmlSerializer(this.GetType());
string xml = "";
using (MemoryStream stream = new MemoryStream())
{
    using (TextWriter writer = new StreamWriter(stream))
    {
        serializer.Serialize(writer, this);
        byte[] buffer = new byte[stream.Length];
        stream.Read(buffer, 0, (int)stream.Length);
        xml = Encoding.UTF8.GetString(buffer);
        buffer = null;
    }
}

程序运行到行时出现错误:serializer.Serialize(writer, this); 我的第一个想法是,它与 .net 核心的 XmlGenerators (https://docs.microsoft.com/de-de/dotnet/core/additional-tools/xml-serializer-generator) 的变化有关。 但是我添加了包,它又抛出了同样的错误。

没有内部异常告诉我到底是什么问题。有谁知道这个错误?或者是否有另一种方法来生成我的 xml?

(我知道这些是不同的 classes/implementations,但是将我的对象序列化为 JSON 效果很好)。

序列化每个子对象后,我可以确定错误源。 XmlSerializer class 不能 处理静态属性和没有 setter 的属性。

在这种情况下,XmlSerializer 无法生成 valid/understandable 错误消息。现在,我在构造函数中设置我的属性值,以实现 属性.

的预定义值