我正在使用VS2017 RC,我的应用程序以net framework 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);
}
Run Code Online (Sandbox Code Playgroud)
在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);
}
Run Code Online (Sandbox Code Playgroud)
Intellisense正在工作并解构元组,但是当我编译它时失败而没有错误列表窗口中的任何错误.在输出窗口中我有这个错误:
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'的第一个参数(你是否缺少using指令或汇编引用?)2> MyController.cs(85,35,85,40):错误CS1061:'ValueTuple'不包含定义对于'aCount'并且没有扩展方法'aCount'可以找到接受类型'ValueTuple'的第一个参数(你是否缺少using指令或汇编引用?)
我尝试添加DEMO和DEMO_EXPERIMENTAL构建标志但仍然失败.
什么是错的?
编辑1:
此代码有效,统计数据解析得很好.我可能遇到了一个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);
}
Run Code Online (Sandbox Code Playgroud)
编辑2:
在github上打开问题:https://github.com/dotnet/roslyn/issues/16200
Swe*_*ell 42
如果有人陷入同一陷阱,要修复此问题,您需要更新此软件包:Microsoft.Net.Compilers到2.0(您需要显示预发布)
| 归档时间: |
|
| 查看次数: |
4693 次 |
| 最近记录: |