2016-01-29 22 views
6

我已经创建了几个诊断分析器和代码修复程序。 他们都在预期的实验蜂巢工作。分析器工作但潜在的代码修复消失

我将它们构建为Nuget包,并将其添加到VS2015的正常实例中的项目中。奇怪的一个分析器/代码修复组合工作正常,但另一个只有分析器工作,并没有建议代码修复(如提到它在实验配置单元中工作)。

我的问题是,我该如何分析这个问题? ActivityLog.xml中没有任何内容。 有没有其他人观察过这种行为?

UPDATE:我在正常情况下使用vsix VS扩展进行了测试,代码修复显示正确。我关闭了该文件并重新打开,并且代码修复程序不再可用。无论我关闭并重新打开文件多少次,代码修复都不会回来。但后来我打开另一个包含不同诊断和代码修复的文件,并以某种方式启动了其他代码修复,因为我可以通过这样做可靠地恢复代码修复!

这听起来很荒谬,但我想我已经观察过其他第三方分析仪。也许我的VS安装有问题?

+0

罗斯林源代码是[在GitHub](https://github.com/dotnet/roslyn)。分析器需要以某种方式触发(大概是[AnalyzerDriver](https://github.com/dotnet/roslyn/blob/a4e375b95953e471660e9686a46893c97db70b0e/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs))。您可以[调试Roslyn](https://github.com/dotnet/roslyn/wiki/Building-Testing-and-Debugging)anlongside你的分析器,看看它为什么不起作用。 –

+0

我在VS 2017 RTM上看到完全一样的东西在默认代码分析器项目中,它检查类型符号中的小写字母,代码修正有时可以工作,有时不会,它显示代码修复灯泡,但是当我点击它时,它就会消失,而不是显示代码修复列表 尝试运行两个F5(VSIX)并安装它创建的nuget。我还没有找到一个可靠的方法来解决此问题,并且看起来像是Roslyn或Visual Studio中的一个错误。 – angularsen

回答

0

当我为Roslyn分析器和代码修复提供程序开发Nuget包时,我遇到了类似的尴尬问题。当我更新代码并将软件包安装到项目中时,旧软件包正在运行,而不是新软件包。当我关闭并重新打开Visual Studio时,新的Nuget包正在运行。

我不知道,但我想有一个在Visual Studio中的Nuget包缓存机制。我没有尝试下面的方法,但它可能有助于解决您的问题。

How to clear NuGet package cache using command line?