我开始使用Web API缓存,我通过使用方面[缓存]添加到特定方法。一切都很好。后来我将此方法更改为异步,但从那时起编译器开始抛出以下警告:
参数'区域'方法' GetTree(System.String, System.String,System.String [])'已经优化了 编译器,并不会在方面可用。禁用编译器 优化以访问参数。
在这里,您可以看到我如何使用Postsharp的示例:
[Cache]
public async Task<IEnumerable<Node>> GetTree(
[FromUri] string region,
[FromUri] string language,
[FromUri] string[] networks)
{
...
await ...
}
为了摆脱警告,我需要做些什么?
答案 0 :(得分:1)
如果在async方法中的任何地方都没有使用这些参数,则C#编译器优化会从状态机类中删除参数。无论您是否使用PostSharp,都会发生这种情况。 PostSharp向您显示警告,通知无法在方面内访问已删除的参数。
建议升级到PostSharp的最新版本 - 较新的版本可以通过将缺少的参数重新引入状态机来处理此问题。
如果无法升级,则解决方法是在发布版本的项目属性的构建页面中禁用“优化代码”(默认情况下,它对调试版本禁用)。