When the cursor is on the name of a property with custom attribute, clicking on the Quick Actions menu causes the "Gathering Suggestions" dialog to be displayed for several seconds. This happened in VS 2019 RC and VS 2017
See https://davesparks.tinytake.com/sf/MzQyOTcwOF8xMDI2Njc4Mg for demonstration.
The attribute is defined as follows :
C#[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] public sealed class PlugInPropertyAttribute : Attribute { …
The solution is large (95 projects) and targets .Net Framework 4.7.2. The custom attribute is referenced 99+ times in the solution. It is also used in parent classes of the class shown in demonstration.
I attempted, but failed, to reproduce the issue in a simple project with just the one example class and some of the classes that it references.
Please let me know if there is any further information I can provide to help you to troubleshoot this issue.
Hello Dave,
Thank you for contacting us and pointing out to this issue.
To help us research it, please provide the following information:
- CodeRush settings (from "%AppData%\CodeRush\Settings");
- CodeRush log files (from "%LocalAppData%\CodeRush\Logs");
- Information about extensions you have installed (click the Copy Info button in the Help -> About Microsoft Visual Studio dialog).
We are looking forward to your response.
Hello Dave,
Thank you for providing the information we requested.
First, we track the working time of our code actions and save that information in the "Performance %current_datetime%" log files.
For some reasons, I do not see any "Performance*" log files in your attachment, only "Package*" files for the 2016 year.
The information from log files can significantly help us understand which of our code actions works so long.
Therefore, please execute the following steps:
2. Delete all CodeRush log files from the opened folder.
Second, I noticed that you have installed many extensions that may provide own code actions into the Light Bulb menu.
I have installed the most of them on the clean VIsual Studio 2019 and tried to reproduce the issue, but all works fine on my side.
So, it would be also helpful if you temporary disable CodeRush and try to reproduce the issue without it.
We are looking forward to your results.
The issue does not occur with CodeRush disabled.
I followed your instructions and no 'Performance *.log' file were added to the log folder - only the attached file. Is there an option to enable the performance logs?
I found an option to enable the Performance Monitor in the CodeRush options under IDE -> Diagnostic. After ticking this, I deleted the log files, restarted VS, reproduced the issue, then shutdown VS. There are now two log files including UIPerformance *.log. I have attached both.
Hello Dave,
Thank you for providing additional information.
Performance Monitor collects information about freezes on the UI thread and I can see in it that the UI thread waits about 15 seconds until Light Bulb suggestions are collected.
It appears that I misinformed you in my previous reply. At present, we create "Performance *" log files only for the internal version of CodeRush and do not ship this functionality yet.
Let me take a moment to apologize for this mistake.
I have prepared a special build for you that should generate this diagnostic information: CodeRush-18.2.9.19094.exe
Please install it, reproduce the issue and provide us with the requested log files.
Your cooperation is greatly appreciated.
Here's the new logs - but it doesn't look like there's much there for you to see…
Note that this issue appears to be related to the level of inheritance. Only happens if there are at least three class ancestors (even if I they are empty classes). If, however, I copy the class and it's all ancestors to a separate test project it works fine. The ancestors possibly need to be in separate libraries for the issue to occur? Wish I could find a way to give you a reproducible project without giving you all my code!
Hello Dave,
Thank you for providing the log files.
You are right - they don't indicate any significant slowdown.
However, to eliminate their influence, I suggest you temporary disable code actions from them and try to reproduce the issue.
In addition, we saw that your "Package *" log files contained a few exceptions with the "Rename" code action.
Perhaps, these exceptions relate to the issue with the "Gathering Suggestions" dialog window.
To disable these code actions execute the following steps:
We are looking forward to hear your results.
Hi
Unchecking the "Rename", "Remove Unused Member", "Use Expression Body" and "Convert to Property with Backing Field" code actions did not appear to make much difference - see the "Logs (with suggested code actions unchecked)" folder in the attached zip file.
However, via a binary search process I managed to identify the "Pull Member Up" code action as the culprit. The issue was reproduced with only the "Pull Member Up" code action checked (all other code actions unchecked) - see the "Logs (with Pull Member Up checked only)" folder in the attached file. On the other hand, with all actions checked except for the "Pull Member Up" code action, "Gathering Suggestions" only takes a second - see the "Logs (with Pull Member Up unchecked only)" folder.
Hello Dave,
Thank you for your cooperation and sharing these results.
With this information, I was able to reproduce a similar issue with the "Pull Member Up" code action. We will analyze it and notify you of our results.
As a temporary workaround, you can disable the "Pull Member Up" code action.
I can confirm this is fixed now. Thanks!
I am happy to hear that the issue is resolved. Thank you for informing us.