usar net crear c# debugging vb6 com-interop visual-studio-express

net - Cómo depurar frente a 2008 c#express dll que es llamado por una aplicación vb6/vba?



crear dll vb net (4)

Tengo ac # dll que está escrito para actuar como un contenedor para tomar datos de una fuente de datos y pasarlos a una aplicación vba / powerpoint ppa. No tengo mucha experiencia con vba y es por eso que estoy simulando esto usando vb6, que conozco un poco más.

Estoy teniendo suficiente problema a partir de ahora tratando de entender la sintaxis y lo que no para el funcionamiento intrincado de com y CCW. así que estoy buscando una forma de depurar sobre por qué la función no me devuelve ningún dato, y si es posible, hacer un recorrido línea a línea de .NET dll cuando la aplicación vb6 lo está llamando.

Inicialmente pensé en poner una función dentro del dll de .net que se escribirá en un archivo externo, pero parece que no funciona y no sé por qué.

Hice algunas búsquedas en Google y descubrí que hay un adjunto a proceso que podría ser útil para mi caso, pero esa función solo está disponible en vs studio versión completa .

así que espero que haya otras herramientas, métodos que pueda usar que me permitan depurar correctamente lo que está pasando entre la aplicación vb6 / vba y .net dll.

Gracias.


Demasiado mal adjuntar al proceso no está disponible para usted porque ese es el camino a seguir.

Un Debug.Assert(false); bien ubicado Debug.Assert(false); en .net dll es una forma de forzar la aparición de un depurador.

También puedes probar Debugger.Break(); que debería forzar un punto de interrupción y preguntarte si deseas adjuntar un depurador.

Tanto Debug como Debugger están en el espacio de nombres System.Diagnostics .


  1. Abra las propiedades del proyecto en Visual Studio para el proyecto C #.
  2. Ve a la página de depuración.
  3. Seleccione ''Iniciar programa externo'' y busque el VB.exe (muy probablemente C: / Archivos de programa / Microsoft Visual Studio / VB98 / VB6.EXE.
  4. Opcional: Ingrese la ruta al archivo .vbp de su proyecto VB6 en los argumentos de línea de comando.

Cuando ejecuta su proyecto C # (Depurar-> Iniciar depuración o F5), comenzará VB6. Puede colocar los puntos de corte que desee en su proyecto de C #. Cuando inicie su proyecto VB6, el depurador se detendrá en su punto de interrupción VS2005 / 2008. También podrá usar la ventana inmediata y cualquier otra opción de depuración que usaría para depurar un proyecto de C #.


Descargue e instale Visual C ++ Express Edition en la parte superior de Visual C # Express Edition. Ambos son completamente gratuitos, y eso le dará la posibilidad de "adjuntar al proceso" en el depurador


Añadiendo esto

<StartAction>Program</StartAction> <StartProgram>C:/Program Files/NUnit-Net-2.0 2.2.8/bin/nunit-gui.exe</StartProgram>

al archivo .csproj de mi proyecto C # Express 2008, bajo el elemento PropertyGroup, me solucionó el problema ( detalles aquí ).