对于曾经在VB.Net
上工作的Visual Studio 2017
项目,我升级到Visual Studio 2019
,两个版本仍然使用.Net版本4.5.1。
一些代码曾经在VS2017中运行良好,但在VS2019
中它给出了一个例外:
Dim highUId As Integer = alarmNw.Descendants().Max(Function(x) Convert.ToInt32(x.Attribute("UId").Value))
其中alarmNw
是一个xElement
,其中包含一堆后代,其中一些具有UId
属性,有些则没有。 UId属性的值始终是整数值。
可以使用以下命令生成模拟版本的数据:
Dim alarmNw As XElement = New XElement("Main", New XElement("Sub1", New XAttribute("UId", 1)), New XElement("Sub2"))
错误消息是:Reference not set to instance of an object.
我在release notes找不到任何相关内容。
当然可以通过将其更改为:
Dim highUId As Integer = alarmNw.Descendants().Where(Function(y) y.Attribute("UId") IsNot Nothing).ToList() _
.Max(Function(x) Convert.ToInt32(x.Attribute("UId").Value))
如果这改变了其他改变了什么?是否列出了预期会出现哪些类型的问题?
我试图使用框架4.5.1在VS2017和VS2019中复制它
我跑的代码是
Sub Main()
Dim alarmNw As XElement = New XElement("Main", New XElement("Sub1", New XAttribute("UId", 1)), New XElement("Sub2"))
Dim highUId As Integer = alarmNw.Descendants().Max(Function(x) Convert.ToInt32(x.Attribute("UId").Value))
Console.WriteLine(highUId)
Console.Read()
End Sub
我在两个IDE中都得到一个空引用,所以我怀疑其他的东西已经改变了。