Hi --
Trying very hard to get my custom language code base callable and debuggable from my C#-generated vsx package.
Almost thought I had it. I was progressing step by step, first creating a completely unmanaged C++ DLL. This worked perfectly and I was able to step into it from my Package.Initialize function and set breakpoints and see values through the inspector, etc... But as soon as I turned it into a mixed code DLL, I lost debugging ability. This, even though I had Mixed Debugging set for all the projects. I'm coming to the conclusion that it may just be impossible to integrate a mixed mode DLL into a vsx package and still be able to do mixed code debugging with it.
So I'm now attempting to ditch the managed portion of my DLL and do what I had been doing with .NET objects with unmanaged code instead. This is basically attempting to get hold of a EnvDTE80.DTE2 object from the RunningObjectTable and manipulate the breakpoints in my host debugger.
Looks like I should be able to do this in completely unmanaged code, and I am tantalizingly close. But this stuff is such a pain in the ass. There's always one last stupid dilemma that isn't documented anywhere.
In this case it is the following:
Here's the code I'm using to try to get hold of the DTE2 object:
#include "stdafx.h"
#include "TestExport.h"
#include <string>
#include <vector>
#include <ObjIdl.h>
#pragma warning( disable : 4278 )
#pragma warning( disable : 4146 )
//The following #import imports EnvDTE based on its LIBID.
#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
//The following #import imports EnvDTE80 based on its LIBID.
#import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") lcid("0") raw_interfaces_only named_guids
//The following #import imports EnvDTE90 based on its LIBID.
#import "libid: 2ce2370e-d744-4936-a090-3fffe667b0e1" version("9.0") lcid("0") raw_interfaces_only named_guids
//The following #import imports EnvDTE100 based on its LIBID.
#import "libid: 26ad1324-4b7c-44bc-84f8-b86aed45729f" version("10.0") lcid("0") raw_interfaces_only named_guids
#pragma warning( default : 4146 )
#pragma warning( default : 4278 )
This is what is specified in a Microsoft web page. But when I add this code, I get the following build error:
1>c:\executablemodelingdll\executablemodelingdll\executablemodelingengineimpl\debug\dte100.tlh(105): error C2504: 'Debugger4' : base class undefined
Has anyone seen this? Or would you have any idea what this might be missing?
Thanks.
Mike