在Visual Studio 2017社区中,从2017年4月2日开始打补丁,我在.net framework 4.6.2的默认MVC ASP.NET模板中看到了一个问题。 '内联临时变量'建议重构。我应用它然后构建并得到编译器错误,表明编译器不理解重构的代码。
要重现此问题:文件新增 - > Visual C# - >网络 - > 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帖子,但建议的修补程序(update-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r,从项目文件中删除行)似乎不起作用,而另一个帖子涉及不同的症状和较旧的VS版本。
我更喜欢重构的代码,并希望使用此功能。如何在ASP.NET Web应用程序中完成此工作?