Je suis en utilisant VS2017 RC et ma demande cibles net framework 4.6.1.
J'ai deux assemblées du Système de référence.ValueTuple 4.3
MyProject.Services MyProject.WebApi
Dans MyProject.Services que j'ai une classe avec une méthode comme ceci
public async Task<(int fCount, int cCount, int aCount)> GetAllStatsAsync()
{
// Some code...
return (fCount, cCount, aCount);
}
Dans MyProject.WebApi j'ai un contrôleur qui utilisent cette méthode comme ça:
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 est de travailler et de déconstruire le tuple mais quand je compile il échoue sans Erreur dans la fenêtre Liste des Erreurs. Dans la sortie de windows j'ai cette erreur:
2>MyController.cs(83,31,83,40): erreur CS1061: 'ValueTuple' ne contient pas une définition pour 'fCount" et pas d'extension la méthode 'fCount' acceptant un premier argument de type 'ValueTuple' a pu être trouvé (vous manque une directive using ou une assemblée de référence?) 2>MyController.cs(84,39,84,49): erreur CS1061: 'ValueTuple' ne contient pas une définition pour 'cCount' et aucune méthode d'extension 'cCount' acceptant un premier argument de type 'ValueTuple' a pu être trouvée (êtes-vous en manque un à l'aide la directive ou une référence d'assembly?) 2>MyController.cs(85,35,85,40): erreur CS1061: 'ValueTuple' ne contient pas de définition pour 'compte' et aucune méthode d'extension 'account' accepter un premier argument de type 'ValueTuple' a pu être trouvée (sont vous manque une directive using ou une référence d'assembly?)
J'ai essayé d'ajouter la DÉMO et DEMO_EXPERIMENTAL construire des drapeaux, mais ne fonctionne toujours pas.
Une idée sur ce qu'est le mal?
EDIT 1:
Ce code fonctionne et stats est bien décomposé. Je suis probablement frapper un bug.
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);
}
EDIT 2:
Question ouverte sur github ici: https://github.com/dotnet/roslyn/issues/16200