Pregunta

Estoy absolutamente sorprendido por el hecho de que MS simplemente no pudo navegar correctamente hasta la definición de un método, cuando se combinan proyectos de C# y VB en una sola solución.Si intenta navegar de VB a C#, aparece el "Explorador de objetos" y, si va de C# a VB, genera un archivo de metadatos.

Honestamente, ¿qué tiene de complicado saltar entre diferentes idiomas, especialmente si supuestamente usan el mismo CLR?

¿Alguien sabe a qué se debe esto o si hay alguna solución?¿Lo hicieron bien en VS 2008?


@Keith, me temo que puede que tengas razón en tu respuesta.Estoy realmente sorprendido de que Microsoft haya cometido un error tan grave.¿Alguien tiene alguna idea para una solución alternativa?


@Mladen Mihajlovic: esa es exactamente la situación que estoy describiendo.Pruébelo usted mismo;las referencias del proyecto no hacen la más mínima diferencia.

¿Fue útil?

Solución

Esto es general para ambos idiomas.

  • F12 en VB.Net siempre te lleva al navegador de objetos
  • F12 en C# siempre te lleva a una definición de metadatos

Este es un mecanismo deliberado para intentar igualar el comportamiento esperado para los usuarios que actualizan.La forma C# le brinda la información correcta, pero la forma VB es lo que esperarán los usuarios de VBA o VB6.

El comportamiento es el mismo en VS2008.

Estas son las reglas para proyectos externos, ambas deberían llevarte al código si está en la misma solución.


Tienes toda la razón: los proyectos de VB tratan a los proyectos de C# como externos y viceversa; no puedes navegar del código de uno a otro.Probé esto en la última versión de VS2008 y sigue siendo un problema.

Tampoco logra obtener metadatos completos.Agregue un método a su código C# y no aparecerá en el intellisense de VB hasta que compile el ensamblado de C#.

Esto es similar a cómo aparecen los componentes en la barra de herramientas, por lo que supongo que la funcionalidad normal de navegación al código es una característica del código con compiladores comunes, y todo lo demás utiliza algún tipo de reflexión.

Mientras todavía esté creando una PDB, debería poder encontrar los archivos, supongo que no es así porque también la necesitan para admitir versiones de lanzamiento.No pudo encontrar la línea de código sin las búsquedas de PDB.

Otros consejos

Asegúrate de que tu referencia sea al VB. proyecto y no sólo un archivo DLL.

Es un problema conocido, la solución son dos:usar ctrl+, o use algún complemento que agregue esta función, como resharper (que agregará esta función en el F12).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top