在从VS 2015 Update 1 RC更新到VS 2015 Update 1后,我不断收到以下错误提示:
分析器'Microsoft.CodeAnalysis.VisualBasic.CodeFixes.SimplifyTypeNames.VisualBasicSimplifyTypeNamesDiagnosticAnalyzer'引发了一个类型为'System.ArgumentNullException'的异常,消息为‘值不能为null。参数名:source’。
其中一个我的项目中出现了这个问题。在该项目上,代码分析被禁用(因为在解决方案中的所有项目上都是如此),所以我尝试打开和关闭它,但问题仍然存在。
似乎我仍然可以构建和运行我的解决方案,但升级后事情似乎并没有真正正常工作:
- 一切都运行得非常慢。
- 进行更改并构建后,它不会应用更改。
有其他人在最近的更新后或之前遇到过这个问题吗?
在这里找到的可能的解决方法:https://github.com/dotnet/roslyn/issues/6682,由用户dpoeschl发布。
以下是他的原始文本:
解决方法:检查此复选框:工具| 选项| 文本编辑器| 基本| 代码样式| 使用'Me'限定成员访问
这个解决方法有两个副作用(我目前能想到的):
1.您将不再得到多余的Me.的可视指示符,也不会得到相关的代码修复或“修复所有出现”选项,以便轻松达到合规性。
2. 任何生成完全限定成员访问并依赖于简化器在适当时删除它们(或者显式检查此选项)的代码生成特性,现在默认会生成不符合规范的代码。
在VS2015和VS2015 Update 1中启用此选项对于系统没有过多的干扰,因为该选项只在一个方向上强制执行。也就是说,未选中复选框意味着分析器运行,进行某些更深层次的分析(在本例中失败),并在您拥有限定成员访问时提供灯泡提示;而选择复选框则意味着我们非常早期地退出更深层次的分析,您就不会得到任何指示要添加Me.资格的灯泡提示。
这对我有效,也可能修复其他人的问题。