Ответ 1
Project- > Properties- > Build- > Advanced- > Language Version- > С# last Minor Version
У нас есть следующий код, который отлично работает в нашем приложении UWP до сегодняшнего дня после того, как мы обновили Visual Studio 2017 до последней версии 15.3.
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);
}
Нет сообщения об ошибке, но это в окне вывода
Выводится имя элемента "элементы". Пожалуйста, используйте языковые версии 7.1 или больше для доступа к элементу по его выводимому имени.
Любая идея, почему и как это исправить?
Project- > Properties- > Build- > Advanced- > Language Version- > С# last Minor Version
Это подтвержденная ошибка, введенная в 15.3. Исправление будет отправлено как часть служебной версии (15.3.2).
Проблема отслеживается https://github.com/dotnet/roslyn/issues/21518
Похоже, что это нарушение изменений в С# 7.1. (как указано в @JulienCouvreur, это на самом деле ошибка, но обходной путь ниже все равно должен работать).
Обход
Попробуйте указать имя (например, использовать одно и то же имя items
из IList<(string, bool)> items
для согласования) явно в items
(т.е. экземпляр списка).
var group = (Guid.NewGuid(), items: items);