10.1 EAP and RegisterConfigurableSeverity

Hi,

With R#10.1 EAP - my plugin no longer supports RegisterConfigurableSeverity() so I can't ignore warning warnings anymore. I've used dotpeek to decompile code and it doesn't look like anything has changed.

What do I need to change when rebuilding with R#10.1 ?

I've noticed when I ignore a warning that my plugin throws the following exception. e.g. // ReSharper disable once TestClassNameDoesNotMatchFileNameWarning

This is not thrown if I ignore a standard Resharper warning and it is ignored as expected. e.g. // ReSharper disable once CheckNamespace

 

SccRevisionShell = <there are no packages matching the criteria>
HostProductInfo = JetBrains ReSharper Ultimate 10.1 EAP 6 Build 105.0.20160313.85028-eap6
SubProducts.0 = JetBrains ReSharper 10.1 EAP 6 Build 10.1.20160313.92422-eap6
ManagedThreadName = JetPool (S) Regular thread #1
SccRevisionEnv = Platform\Core\Shell,
Platform\VisualStudio:
 git::refs/heads/wave05
VsVersion = 11.0.61030.0

There is a leaked solution detected.

--- EXCEPTION #1/2 [Exception]
Message = “There is a leaked solution detected.”
ExceptionPath = Root.InnerException
ClassName = System.Exception
HResult = COR_E_EXCEPTION=80131500

--- Outer ---

--- EXCEPTION #2/2 [LoggerException]
Message = “There is a leaked solution detected.”
ExceptionPath = Root
ClassName = JetBrains.Util.LoggerException
Data.SccRevisionShell = “<there are no packages matching the criteria>”
Data.HostProductInfo = “JetBrains ReSharper Ultimate 10.1 EAP 6 Build 105.0.20160313.85028-eap6”
Data.SubProducts.#0 = “JetBrains ReSharper 10.1 EAP 6 Build 10.1.20160313.92422-eap6”
Data.ManagedThreadName = “JetPool (S) Regular thread #1”
Data.SccRevisionEnv = “
  Platform\Core\Shell,
  Platform\VisualStudio:
   git::refs/heads/wave05

Data.VsVersion = 11.0.61030.0
InnerException = “Exception #1 at Root.InnerException”
HResult = COR_E_APPLICATION=80131600
StackTraceString = “
  at JetBrains.ProjectModel.SolutionWatchdog.SolutionWatchdog.<OnTimer>b__1()
     at JetBrains.UI.Application.LocalReentrancyGuard.TryExecute(Action action)
     at JetBrains.ProjectModel.SolutionWatchdog.SolutionWatchdog.OnTimer()
     at JetBrains.DataFlow.ISignalEx.<>c__DisplayClass1`1.<Advise>b__0(TValue value)
     at JetBrains.DataFlow.Signal`1.NotifySinks(TValue payload)
     at JetBrains.DataFlow.Signal`1.Fire(TValue value, Object cookie)
     at JetBrains.DataFlow.SimpleSignal.Fire()
     at JetBrains.UI.Options.Helpers.Controls.Timer.<.ctor>b__4c(Object param0, EventArgs param1)
     at System.Windows.Forms.Timer.OnTick(EventArgs e)
     at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
     at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

 

4 comments
Comment actions Permalink
Official comment

Hi. I'm not entirely sure what issue you're facing here - could you elaborate on what you mean when you say RegisterConfigurableSeverity isn't working any more?

As for the leaked solution, that means that something is keeping the solution alive after the solution has been closed in Visual Studio. This is usually a component that has a direct reference to an ISolution instance, or an indirect reference, perhaps by caching project references, or declared elements. Basically, make sure that any ShellComponents do not cache anything related to a solution - only SolutionComponents should cache this data, as these components will be released when the solution is closed, which will allow the caches to be garbage collected.

Comment actions Permalink

Hi, basically the following statement doesn't work for me...

// ReSharper disable once TestClassNameDoesNotMatchFileNameWarning

and when I add it...the exception is thrown.

 

I will dig through the code to see if I have an ISolution reference somewhere.

0
Comment actions Permalink

Ah, yes, this is a change in 2016.1 (aka 10.1). Previously, this wasn't a nice API - to support disabling via comments, you had to use the appropriate `AddHighlighting` extension method, which was a very unintuitive way of doing it. It's now been moved into the implementation of `IHighlightingConsumer` itself, which makes much more sense. However, there are languages and situations where disabling via comments makes no sense (e.g. highlightings inside an XML doc comment), so it's in a separate implementation of `IHighlightingConsumer`.

So, replace the creation of the `DefaultHighlightingConsumer` in your daemon stage process with a new instance of `FilteringHighlightingConsumer`.

1
Comment actions Permalink

That fixed it. Thank you. I never would have identified it without your help.

0

Please sign in to leave a comment.