分析器在 Visual Studio 2015 中抛出带有消息 'Sequence contains no elements' 的 InvalidOperationException
Analyzer threw InvalidOperationException with message 'Sequence contains no elements' in Visual Studio 2015
我把一个Visual Studio 2010的项目转成了Visual Studio 2015,转的还不错,所以我决定把目标框架换成.NET 4.6.1,看看有没有有任何问题。
然后我得到以下错误:
Analyzer
'Microsoft.CodeAnalysis.Diagnostics.VisualBasic.VisualBasicCompilerDiagnosticAnalyzer'
threw the following exception: 'Exception occurred with following
context: Compilation: ArtDepInterface
System.InvalidOperationException: Sequence contains no elements at
System.Linq.Enumerable.First[TSource](IEnumerable'1 source) at
System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray'1
immutableArray) at
Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.IsIOperationFeatureEnabled()
at
Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.<>c__DisplayClass33_0.b__0()
at
Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock(DiagnosticAnalyzer
analyzer, Action analyze, Nullable'1 info)
它有一个错误代码 AD0001
,所以我查了一下,发现了另一个论坛 post,但它是 ArgumentNullException
而不是 InvalidOperationException
所以我看不出它是相关的。
有人 运行 遇到过这个问题或知道如何更正吗?
如有任何意见或指导,我将不胜感激。谢谢!
更新:
我尝试使用性能分析器,它抛出了与我内部构建的 DLL 相关的各种错误,说它找不到任何 public 方法。如果这导致答案,我会添加它。
好的,所以在尝试 运行 "Analyze" 菜单项下的 "Performance Profiler" 之后,它基本上表明它不喜欢我添加的内部构建的 DLL作为参考。
所以解决方案是将我所有的 DLL 一个一个地删除,然后再重新添加回来。然后我遇到了一些奇怪的错误,我不知道该怎么办(这导致它无法构建),所以我关闭了解决方案,重新打开它,它构建得很好,然后分析器错误消失了。
所以简而言之,它似乎摆脱了分析错误,你必须删除所有的 DLL,关闭,然后重建项目。
我不知道为什么这首先是一个问题,但至少错误消息消失了,分析器功能现在可以工作了。我希望其他人觉得这很有用!
我在将现有(但之前已迁移)2015 解决方案从 .NET 2 更新到 .NET 4.5.2 时遇到了同样的问题。由于某种原因,7 个项目中只有 1 个抛出了这个异常。
我不必像@Hawkeye 那样删除所有 DLL。我刚刚清理了解决方案,关闭了 VS,然后重新打开并重建,一切都很好。
我认为它正在做一些事情,比如在内存中缓存旧的分析器,所以变得很困惑。
我把一个Visual Studio 2010的项目转成了Visual Studio 2015,转的还不错,所以我决定把目标框架换成.NET 4.6.1,看看有没有有任何问题。
然后我得到以下错误:
Analyzer 'Microsoft.CodeAnalysis.Diagnostics.VisualBasic.VisualBasicCompilerDiagnosticAnalyzer' threw the following exception: 'Exception occurred with following context: Compilation: ArtDepInterface System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.First[TSource](IEnumerable'1 source) at System.Linq.ImmutableArrayExtensions.First[T](ImmutableArray'1 immutableArray) at Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.IsIOperationFeatureEnabled() at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.<>c__DisplayClass33_0.b__0() at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock(DiagnosticAnalyzer analyzer, Action analyze, Nullable'1 info)
它有一个错误代码 AD0001
,所以我查了一下,发现了另一个论坛 post,但它是 ArgumentNullException
而不是 InvalidOperationException
所以我看不出它是相关的。
有人 运行 遇到过这个问题或知道如何更正吗?
如有任何意见或指导,我将不胜感激。谢谢!
更新: 我尝试使用性能分析器,它抛出了与我内部构建的 DLL 相关的各种错误,说它找不到任何 public 方法。如果这导致答案,我会添加它。
好的,所以在尝试 运行 "Analyze" 菜单项下的 "Performance Profiler" 之后,它基本上表明它不喜欢我添加的内部构建的 DLL作为参考。
所以解决方案是将我所有的 DLL 一个一个地删除,然后再重新添加回来。然后我遇到了一些奇怪的错误,我不知道该怎么办(这导致它无法构建),所以我关闭了解决方案,重新打开它,它构建得很好,然后分析器错误消失了。
所以简而言之,它似乎摆脱了分析错误,你必须删除所有的 DLL,关闭,然后重建项目。
我不知道为什么这首先是一个问题,但至少错误消息消失了,分析器功能现在可以工作了。我希望其他人觉得这很有用!
我在将现有(但之前已迁移)2015 解决方案从 .NET 2 更新到 .NET 4.5.2 时遇到了同样的问题。由于某种原因,7 个项目中只有 1 个抛出了这个异常。
我不必像@Hawkeye 那样删除所有 DLL。我刚刚清理了解决方案,关闭了 VS,然后重新打开并重建,一切都很好。
我认为它正在做一些事情,比如在内存中缓存旧的分析器,所以变得很困惑。