"PGF_MSDN" preguntó:
> Quisiera mostrar un MsgBox con el número de línea en el cual esta
> el propio msgbox (aunque no se produzca ninguna exception).
>
> La idea es saber en que número de línea se esta ejecutando un comando.
Hola:
Para obtener el número de línea tienes que hacer uso del objeto StackTrace, y procurar compilar tu aplicación para que generen los archivos *.pdb del
ensamblado, los cuales deberás de distribuir junto con el archivo ejecutable de tu aplicación, con independencia de que se produzca o no una excepción.
Como comentas que deseas obtener el número de línea aunque no se haya producido una excepción, tienes que ejecutar el
MsgBox inmediatamente después de crear la instancia del objeto
StackTrace, para sumarle una unidad al valor devuelto por el método
GetFileLineNumber del primer marco de la pila del objeto StackTrace, tal y como muestra el siguiente ejemplo:
Private Sub sbMensajes()
Dim vTotal As Double
vTotal = 1 + 1
' Crear un objeto StackTrace que capture el número de línea
' del primer marco, al cual le sumamos una unidad ya que el
' cuadro de mensaje se mostrará en la siguiente línea.
Dim numeroLinea As Integer = New StackTrace(True).GetFrames(0).GetFileLineNumber() + 1
MessageBox.Show(String.Format("Nº Linea: {0}", numeroLinea))
End Sub
Y aquí tienes el resultado:

Si solamente haces uso del objeto StackTrace en el cuadro de mensaje, también puedes crear su instancia en la misma línea, de esta manera te ahorras tener que sumar unidades:
MessageBox.Show(String.Format("Nº Linea: {0}", New StackTrace(True).GetFrames(0).GetFileLineNumber()))
Y en cuanto a los archivos *.pdb, abre las Propiedades del proyecto, selecciona la pestaña
Compilar y pulsa el botón inferior Opciones avanzadas de compilación... Asegúrate que en
Generar información de depuración esté seleccionado al menos el valor
pdb-only, tal y como muestra la siguiente captura de pantalla:

Debes de tener en cuenta que cuando se compila un ejecutable .NET, las líneas en blanco desaparecen del archivo final, de ahí que se necesiten los archivos de información de depuración *.pdb.
Un saludo
Enrique Martínez Montejo
[MS MVP - Visual Studio y Tecnologías de Desarrollo]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica,
utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
Option Strict.