在过去的几天里,我试图在几个月的忽视之后再次解决这个问题。
我拿出导致问题的部分将程序简化为序列化和反序列化。 在程序中第一次使用MemoryStream或CSharpSyntaxNode似乎不希望它是第一次反序列化操作。但这引出了一个问题:为什么这个对象中的一个对你先运行的操作很敏感?
重新创建的步骤:
1.打开程序,播种,这样你就有了一个值然后得到节点并设置字节数组你想要的次数。 Init
2a上。重新启动程序并将字节数组设置为重新启动之前的值,然后获取节点。它会崩溃Restart-A
2B。重启程序,运行测试,将字节数组设置为重启前的值,然后获取节点。它会工作。 Restart-B
以下是project的链接。它使用net core 2.1。
答案 0 :(得分:0)
这似乎是基于Roslyn编译器的更深层次的问题。目前的版本似乎无法做到这一点。在写作的那一刻,它不知道它是否被设计为像这样工作或它是一个错误。您可以在此处查看已打开的故障单的详细信息:Roslyn Github