Problems with UnitTestRunner and DXCore (from DevExpress)

Hi,
I'm experiencing problems with the UnitTestRunner whenever DXCore addin from DevExpress is running at the same time as Resharper. The problem seems to be that the UnitTestRunner does not "see" any of the unit tests in my project. When I right-click on the project and select Run Unit Tests, the solution gets built but the UnitTestRunner (UTR) does not appear. At this point opening the UTR using the menu Resharper>Windows, the UTR window does not list the unit tests from the project.

Now the problem with the UTR goes away when I stop DXCore addin from loading when VStudio starts.

Here's the highlights of the components I'm running:
- Resharper (build 266)
- DXCore 2.0.4
- VStudio 2003 (7.1.3088)
- .Net framework 1.1 SP1 (and 2.0 is also installed on my machine)
- Windows XP SP2 (running on a duo core processor)

Please can you let me know if there is a fix for this and if not whether I should be speaking to you guys or DevExpress in order to pursue a fix.

Thanks
Christian

15 comments
Comment actions Permalink

Any ideas on this one guys?

Thanks
Christian

0
Comment actions Permalink

To JetBrains devs: I've assigned a resource to look into this (Dustin
Campbell). If you have any clues as to what we should be looking for please
send them to dustin c at devexpress dot com. Thanks in advance.

Best regards,

Mark Miller - Developer Express
C# MVP


0
Comment actions Permalink

Thanks Mark.

If there is any input you want from me then please use this thread to ask.
C

0
Comment actions Permalink

Hi Christian,

Thanks Mark.

>

If there is any input you want from me then please use this thread to ask.


If the fix needs to be implemented on our side, we'll address this ASAP.

However, unless our reverse engineering skills are up to the task, I have a
feeling we're going to need some guidance from the JetBrains devs as to the
source of the problem (e.g., "What crucial event or state has changed as a
result of having the DXCore running?").

The DXCore is designed to have zero impact on third party add-ins, however
when you integrate as deeply as Resharper and the DXCore do, there is always
the possibility of one product interfering with the other in some unintended
manner. But we're committed to making sure our products work with all
third-party products, so issues like these shouldn't be problems for long.

Best regards,

Mark Miller - Developer Express
C# MVP


0
Comment actions Permalink

Hello Mark,

So we are :) And surely ReSharper knows nothing about other VS add-ins and
does nothing to prevent them from functioning correctly.

Actually we have no idea why this problem happens but we can also try to
repeat it at our labs. We'll do that ASAP.


Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

But we're committed to making sure
our products work with all third-party products, so issues like these
shouldn't be problems for long.

Best regards,

Mark Miller - Developer Express
C# MVP



0
Comment actions Permalink

I've investigated this problem and it appears that most likely it is a bug
in Visual Studio 2003. The problem is that
both ReSharper and DXCore subscribe to Visual Studio build events, but only
the first add-in that attempts to subscribe to these events is
able to do that. I couldn't at the first glance find this issue at the Visual
Studio Knowledge Base, although I've found references to similar problems
with
other events. One fact supports my conclusion: I tried to disable both add-ins,
launch VS, enable ReSharper and Unit Test Runner worked OK. Then I enabled
DXCore and got the following exception:

at DevExpress.CodeRush.Core.EventNexus.ae()
at DevExpress.CodeRush.Core.EventNexus.add_BuildBegin(BuildEventHandler
value)
at DevExpress.CodeRush.Core.SourceModelServices.InitializeService(InitializeCause
cause)
at DevExpress.CodeRush.Core.Service.DevExpress.CodeRush.Common.IService.InitializeService(InitializeCause
cause)
at DevExpress.CodeRush.Core.ServiceManager.InitializeAll(InitializeCause
cause)
at DevExpress.CodeRush.Core.CodeRush.InitializeDXCore(DTE applicationObject,
AddIn addInInstance, ext_ConnectMode connectMode)
at CodeRush.a(IFeedback A_0, ext_ConnectMode A_1)
at CodeRush.a(ext_ConnectMode A_0)

I'm almost sure that this means that DXCore has failed to subscribe to the
build events as I described above.

Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


Hello Mark,

So we are :) And surely ReSharper knows nothing about other VS
add-ins and does nothing to prevent them from functioning correctly.

Actually we have no idea why this problem happens but we can also try
to repeat it at our labs. We'll do that ASAP.

Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

>> But we're committed to making sure
>> our products work with all third-party products, so issues like these
>> shouldn't be problems for long.
>> Best regards,
>>
>> Mark Miller - Developer Express
>> C# MVP


0
Comment actions Permalink

Mmm, that sounds like it means a Visual Studio user may use either DXCore or Resharper but not both at the same time. I suppose there's no workaround other than ensuring only one of these addin is enabled at the same time?

Christian

0
Comment actions Permalink

Hello Christian,

it looks like this. Unless DevExpress guys have something to say about this,
I've no idea how to make DXCore and ReSharper 2.0 work together seamlessly
under
VS 2003.

Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


Mmm, that sounds like it means a Visual Studio user may use either
DXCore or Resharper but not both at the same time. I suppose there's
no workaround other than ensuring only one of these addin is enabled
at the same time?

Christian



0
Comment actions Permalink

Hi Dmitry,

Do you know whether this problem goes away with VS05? If it does then this is the solution for me as in two months from now I'm making the switch to VS05.

C

0
Comment actions Permalink

Then I enabled
DXCore and got the following exception:
at DevExpress.CodeRush.Core.EventNexus.ae()
at
DevExpress.CodeRush.Core.EventNexus.add_BuildBegin(BuildEventHandler
value)
at
DevExpress.CodeRush.Core.SourceModelServices.InitializeService(Initial
izeCause
cause)
at
DevExpress.CodeRush.Core.Service.DevExpress.CodeRush.Common.IService.I
nitializeService(InitializeCause
cause)
at
DevExpress.CodeRush.Core.ServiceManager.InitializeAll(InitializeCause
cause)
at DevExpress.CodeRush.Core.CodeRush.InitializeDXCore(DTE
applicationObject,
AddIn addInInstance, ext_ConnectMode connectMode)
at CodeRush.a(IFeedback A_0, ext_ConnectMode A_1)
at CodeRush.a(ext_ConnectMode A_0)

I'm almost sure that this means that DXCore has failed to subscribe to
the build events as I described above.


Dmitry,

Thanks for call stack. Do you happen to have the precise exception handy?
I'm wondering if it might be useful or if it is one of those relatively useless
ArgumentExceptions that get thrown by Visual Studio automation.

Best Regards,
Dustin Campbell
Developer Express Inc.


0
Comment actions Permalink

Hello Christian,

yes, the problem appears to be fixed in VS 2005.


Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"


Hi Dmitry,

Do you know whether this problem goes away with VS05? If it does then
this is the solution for me as in two months from now I'm making the
switch to VS05.

C



0
Comment actions Permalink

Hello Dustin,

unfortunately I don't remember what exactly the exception was. But I guess
that most likely it was NullReferenceException,
as I observed the same situation in ReSharper code when trying to subscribe
to the events declared in the BuildEvents class.

But it really doesn't matter much for end users, as the sad conclusion seems
to be that two add-ins in VS 2003 cannot subscribe
to the build events simultaneously.

Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"



>> Then I enabled
>> DXCore and got the following exception:
>> at DevExpress.CodeRush.Core.EventNexus.ae()
>> at
>> DevExpress.CodeRush.Core.EventNexus.add_BuildBegin(BuildEventHandler
>> value)
>> at
>> DevExpress.CodeRush.Core.SourceModelServices.InitializeService(Initia
>> l
>> izeCause
>> cause)
>> at
>> DevExpress.CodeRush.Core.Service.DevExpress.CodeRush.Common.IService.
>> I
>> nitializeService(InitializeCause
>> cause)
>> at
>> DevExpress.CodeRush.Core.ServiceManager.InitializeAll(InitializeCause
>> cause)
>> at DevExpress.CodeRush.Core.CodeRush.InitializeDXCore(DTE
>> applicationObject,
>> AddIn addInInstance, ext_ConnectMode connectMode)
>> at CodeRush.a(IFeedback A_0, ext_ConnectMode A_1)
>> at CodeRush.a(ext_ConnectMode A_0)
>> I'm almost sure that this means that DXCore has failed to subscribe
>> to the build events as I described above.
>>

Dmitry,

Thanks for call stack. Do you happen to have the precise exception
handy? I'm wondering if it might be useful or if it is one of those
relatively useless ArgumentExceptions that get thrown by Visual Studio
automation.

Best Regards,
Dustin Campbell
Developer Express Inc.



0
Comment actions Permalink

unfortunately I don't remember what exactly the exception was. But I
guess
that most likely it was NullReferenceException,
as I observed the same situation in ReSharper code when trying to
subscribe
to the events declared in the BuildEvents class.
But it really doesn't matter much for end users, as the sad conclusion
seems
to be that two add-ins in VS 2003 cannot subscribe
to the build events simultaneously.


Dmitry,

Thanks for information. We may have a workable solution by advising the lower-level
IVsUpdateSolutionEvents2 interface. This should work for us since we don't
really use any of the information from the Visual Studio EnvDTE build events
-- we just need to know when a build has completed successfully so that we
can invalidate various symbol cache data. I'm working quickly to get this
interface implemented in time for our next release.

Best Regards,
Dustin Campbell
Developer Express Inc.


0
Comment actions Permalink

Hi Christian,

Mmm, that sounds like it means a Visual Studio
user may use either DXCore or Resharper but
not both at the same time.


Inside the DXCore these EnvDTE build events are hooked on demand, and there
was demand from internal code to listen to these events. Dustin is removing
that demand and shifting it down to relatively equivalent low-level VSIP
events.

So with the next DXCore release, version 2.1 (which should be available this
week or next), we expect this problem to be solved.

Best regards,

Mark Miller - Developer Express
C# MVP


0
Comment actions Permalink

Thanks DevExpress and Resharper teams!

Its great to see this type of collaboration between vendors to resolve customer problems.

Christian

0

Please sign in to leave a comment.