Я использую VS2017 RC, а мое приложение нацелено на сетевую структуру 4.6.1.
У меня есть две сборки, ссылающиеся на System.ValueTuple 4.3
MyProject.Services MyProject.WebApi
В MyProject.Services у меня есть класс с таким методом
public async Task<(int fCount, int cCount, int aCount)> GetAllStatsAsync()
{
// Some code...
return (fCount, cCount, aCount);
}
В MyProject.WebApi У меня есть контроллер, который использует этот метод следующим образом:
public async Task<HttpResponseMessage> GetInfoAsync()
{
// Some code...
var stats = await _myClass.GetAllStatsAsync();
var vm = new ViewModel
{
FCount = stats.fCount,
CCount = stats.cCount,
ACount = stats.aCount
};
return Request.CreateResponse(HttpStatusCode.OK, vm);
}
Intellisense работает и деконструирует кортеж, но при компиляции он выходит из строя без окна Error in Error List. В выходных окнах я имею следующие ошибки:
2 > MyController.cs(83,31,83,40): ошибка CS1061: "ValueTuple" не содержит определения для "fCount" и никакого расширения метод 'fCount', принимающий первый аргумент типа 'ValueTuple', может быть найден (вам не хватает директивы using или ссылка на сборку?) 2 > MyController.cs(84,39,84,49): ошибка CS1061: 'ValueTuple' не содержит определения для 'cCount' и никакой метод расширения 'cCount', принимающий первый аргумент типа Вы можете найти "ValueTuple" (вам не хватает директива или ссылка на сборку?) 2 > MyController.cs(85,35,85,40): ошибка CS1061: "ValueTuple" не содержит определение для 'aCount' и метод расширения 'aCount', принимающий можно найти первый аргумент типа "ValueTuple" ( у вас отсутствует директива using или ссылка на сборку?)
Я попытался добавить флаги DEMO и DEMO_EXPERIMENTAL, но все равно не работает.
Любая идея о том, что неправильно?
РЕДАКТИРОВАТЬ 1:
Этот код работает, и статистика хорошо деконструирована. Вероятно, я нахожу ошибку.
public async Task<HttpResponseMessage> GetInfoAsync()
{
// Some code...
var stats = await _myClass.GetAllStatsAsync();
var tu = stats.ToTuple();
var vm = new ViewModel
{
FCount = tu.Item1,
CCount = tu.Item2,
ACount = tu.Item3
};
return Request.CreateResponse(HttpStatusCode.OK, vm);
}
ИЗМЕНИТЬ 2:
Проблема открыта на github здесь: https://github.com/dotnet/roslyn/issues/16200