小编Cra*_*SFT的帖子

将async lambda表达式转换为委托类型System.Func <T>?

我有一个带有此签名的可移植类库中的异步方法:

private async Task<T> _Fetch<T>(Uri uri)
Run Code Online (Sandbox Code Playgroud)

它获取一个被回送为具体类型T的资源.

我正在使用第三方缓存库(Akavache),它需要一个Func<T>参数作为其中一个,并试图以这种方式这样做:

await this.CacheProvider.GetOrCreateObject<T>(key,
    async () => await _Fetch<T>(uri), cacheExpiry);
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

无法将异步lambda表达式转换为委托类型' System.Func<T>'.异步lambda表达式可能会返回void,Task或者Task<T>没有一个可以转换为' System.Func<T>'.

我已经尝试了各种Func<T>不带任何运气的排列,我能让代码工作的唯一方法就是Func<T>阻塞:

await this.CacheProvider.GetOrCreateObject<T>(key, 
    () => _Fetch<T>(uri).Result, cacheExpiry); 
Run Code Online (Sandbox Code Playgroud)

哪个死了我的应用程序.

关于我误入歧途的任何指示?

c# async-await c#-5.0 portable-class-library

27
推荐指数
2
解决办法
2万
查看次数

Azure SDK v2.7诊断问题阻止了发布/包

我最近将具有Web角色和辅助角色的Azure云服务升级到SDK的v2.7.

本地调试很有用.

当我尝试从VS 2015社区内发布时,该过程失败并在构建输出中出错:

6>Done building project "Cloud.ccproj" -- FAILED.
6>
6>Build FAILED.
========== Build: 5 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

下降到msbuild我可以看到更详细的输出并注意以下内容:

Failed to produce diagnostics extension's config for Cloud.WebRoleContent\diagnostics.wadcfgx. 
Error : Value cannot be null. Parameter name: input
Run Code Online (Sandbox Code Playgroud)

从Web和辅助角色中删除diagnostics.wadcfgx文件实际上解决了这个问题并允许我发布,但是我更喜欢保留我的诊断.

通过UI添加它们会让我遇到与上面相同的错误.

还有其他人遇到过这个吗?

msbuild azure azure-diagnostics visual-studio-2015

10
推荐指数
1
解决办法
1347
查看次数