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
Please sign in to leave a comment.
Any ideas on this one guys?
Thanks
Christian
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
Thanks Mark.
If there is any input you want from me then please use this thread to ask.
C
Hi Christian,
>
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
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!"
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!"
>> 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
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
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!"
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
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.
Hello Christian,
yes, the problem appears to be fixed in VS 2005.
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"
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 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.
Hi Christian,
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
Thanks DevExpress and Resharper teams!
Its great to see this type of collaboration between vendors to resolve customer problems.
Christian