Asp.net mvc &引用;内联临时变量";重构导致VS 2017默认MVC模板中的生成错误

Asp.net mvc &引用;内联临时变量";重构导致VS 2017默认MVC模板中的生成错误,asp.net-mvc,refactoring,visual-studio-2017,Asp.net Mvc,Refactoring,Visual Studio 2017,在截至2017年4月20日修补的Visual Studio 2017社区中,我发现.NET framework 4.6.2的默认MVC ASP.NET模板中存在一个问题。建议进行“内联临时变量”重构。我应用它,然后生成并得到编译器错误,这表明编译器不理解重构代码 要重现此问题,请执行以下操作:文件新建->Visual C#->Web->ASP.NET Web应用程序(.NET Framework)。选择MVC和无身份验证。在方法(如HomeController上的Index())中,添加以下内容

在截至2017年4月20日修补的Visual Studio 2017社区中,我发现.NET framework 4.6.2的默认MVC ASP.NET模板中存在一个问题。建议进行“内联临时变量”重构。我应用它,然后生成并得到编译器错误,这表明编译器不理解重构代码

要重现此问题,请执行以下操作:文件新建->Visual C#->Web->ASP.NET Web应用程序(.NET Framework)。选择MVC和无身份验证。在方法(如HomeController上的Index())中,添加以下内容:

var s = "test";
var q = s as IComparable;
if (q != null) { }
注意var q加下划线,建议使用内联临时变量重构。Ctrl+。(或单击灯泡->内联临时变量)将产生以下代码:

if (s is IComparableq) { }
建造。注意编译输出中的编译器错误,建议使用a);或}在重构行中被省略。错误不显示在错误列表中,仅显示在输出窗口中。预期的行为是它编译

控制台应用程序不会发生此行为

我猜这与使用较旧编译器版本的默认模板有关,但我不知道该设置在哪里,或者如何修复此项目。此外,似乎IDE不应该推荐当前项目不支持的重构,并且IDE错误列表应该反映生成错误。我见过其他类似的SO帖子,但建议的修复(更新包Microsoft.CodeDom.Providers.DotNetCompilerPlatform-r,从项目文件中删除行)似乎不起作用,其他帖子涉及不同的症状和较旧版本

我更喜欢重构后的代码,并希望使用此功能。如何在我的ASP.NET Web应用程序中实现此功能?

在使用c#时也遇到类似问题。提交人在使用c#时也有类似的问题。提交