从 VS 2015 Update 1 RC 更新为 VS 2015 Update 1 后,我不断收到以下错误消息:
分析仪 'Microsoft.CodeAnalysis.VisualBasic.CodeFixes.SimplifyTypeNames.VisualBasicSimplifyTypeNamesDiagnosticAnalyzer' 使用消息抛出了'System.ArgumentNullException'类型的异常 '价值不能为空。参数名称:source'
我的一个项目。 代码分析在该项目上被禁用(因为它在解决方案中的所有项目中都是如此),所以我尝试打开和关闭它但仍然是同样的问题。
似乎我仍然可以构建并运行我的解决方案,但升级后事情似乎并没有真正起作用:
在最近的更新之后,甚至之前,是否还有其他人有此问题?
可在此处找到潜在的解决方法:https://github.com/dotnet/roslyn/issues/6682由用户发布 dpoeschl 。
这是他原来的文字:
解决方法:选中此复选框:工具|选项|文字编辑器|基本 |代码风格|使用“我”
限定会员访问权限这种解决方法有两个副作用(到目前为止我能想到):
1。你将不再获得多余的Me的视觉指示。或相关的代码修复,或“修复所有出现的”选项 轻松实现合规。
2。任何生成完全限定成员访问权限的代码生成功能,并依赖于简化器在适当时删除它们 (或明确检查此选项)现在将生成不合规 默认情况下代码。
在VS2015和VS20中,启用此选项特别具有非侵入性。 VS2015 Update 1,因为此选项仅在一个方向上强制执行。 也就是说,未选中的复选框意味着分析器运行,确实如此 一些更深入的分析(在这种情况下失败),并为您提供 当你有合格的成员访问时,灯泡,同时复选框 被检查意味着我们很早就选择退出更深入的分析 并且你没有得到任何灯泡告诉你加我。资格。
它对我有用,也可以解决别人的问题。
答案 0 :(得分:3)
更新:
显然,一般问题是代码助手在使用类名时标记对Shared类类型的调用。
例如
Private Shared Property Instance as Class1
Public Shared Function DefInstance1() as Class1
' This causes the warning
Return Class1.Instance
End Function
Public Shared Function DefInstance2() as Class1
' This is okay
Return Instance
End Function
例如,当我从System.Timers.Timer继承时,我为同步对象分配了一个值:
MyBase.SynchronizingObject = value
而不是
SynchronizingObject = value
VS Code Assistant将其检测为可以简化的类型名称。
另请注意,每次VS启动时都会添加新警告。
更新
看起来另一个罪魁祸首是Visual Studio在Application.Designer.vb中生成的代码:
这个
Global.Microsoft.VisualBasic.ApplicationServices
标记为简化为
ApplicationServices
如果没有QA注意到手头的问题,Code Assistant似乎有点过于激进。
答案 1 :(得分:3)
这是Update 1中引入的一个缺陷,自2015-10-11以来已经跟踪at Roslyn GitHub as #6682 检查状态更新。
更新: Visual Studio 2015 Update 2 is now out并解决了问题。
答案 2 :(得分:0)
2016年3月30日,Microsoft发布了Visual Studio的新更新。
安装Visual Studio Update 2后,问题似乎消失了。这是VS Update 2和VS Update 2 Release Notes
检查发行说明,这是他们唯一涉及的分析器:
我们对Analyzer API进行了改进,包括使Analyzer编写器能够标记其分析器以进行并发执行,并控制分析器是否在生成的代码中运行。