获取 "Tuple element name is inferred. Please use language version 7.1 or greater to access an element by its inferred name."

Getting "Tuple element name is inferred. Please use language version 7.1 or greater to access an element by its inferred name."

在我们将 Visual Studio 2017 更新到最新 15.3.

之后,直到今天,我们的 UWP 应用程序中的以下代码一直运行良好
private void Test()
{
    var groups = new List<(Guid key, IList<(string, bool)> items)>();

    var items = new List<(string, bool)>
    {
        ("a", true),
        ("b", false),
        ("c", false)
    };
    var group = (Guid.NewGuid(), items);

    groups.Add(group);
}

没有错误消息,但是在输出中有这个 window

Tuple element name 'items' is inferred. Please use language version 7.1 or greater to access an element by its inferred name.

知道为什么以及如何解决这个问题吗?

看起来这是 C# 7.1. 中的 breaking change (正如@JulienCouvreur 所指出的,这实际上是一个错误,但下面的解决方法应该仍然有效。


解决方法

尝试给items(即列表实例)。

var group = (Guid.NewGuid(), items: items);

这是一个已确认的错误,在 15.3 中引入。该修复程序将作为服务版本 (15.3.2) 的一部分提供。

已在 https://github.com/dotnet/roslyn/issues/21518

跟踪问题

项目->属性->构建->高级->语言版本->C#最新次要版本