Ensamblados, Pedro Luna

07/01/2005 - 14:09 por David caso | Informe spam
he tardado, la gripe, que este año viene que jode, y yo que las agarro
todas (enfermedades, borracheras,), menos mujeres, ;).

bueno de una manera bastante "rustica", y como me comentaste, a traves
del StackTrace se puede conseguir.

mTraza = System.Environment.StackTrace.ToString();
mTraza = mTraza.Substring(mTraza.IndexOf("NombreEnsambladoPropio"));
mTraza = mTraza.Substring(mTraza.IndexOf("at"));
mTraza = mTraza.Substring(2,(mTraza.IndexOf(".") - 2));

al final te da el nombre del ensamblado que carga al Ensamblado Propio(Dll).

pues nada eso, si alguien sabe hacer esto de otra manera, pues que no
calle el cobarde, un saludin.

Preguntas similare

Leer las respuestas

#1 Pedro Luna Montalvo, MVP
07/01/2005 - 15:22 | Informe spam
Saludos David,

Pos asi es la vida.asi como la disfrutas..las pagas... que soberana
borrachera sera esa que dura hasta el dis de reyes :)

Ahora, por lo otro. Creo que nos confundimos, pues cuando mencionada a
StackTrace, me referia a la clase StackTrace y no a la propiedad.

Mira el siguiente codigo que hace uso de esta propiedad para recorrer la
pila de llamadas, muestra el nombre del metodo, el tipo donde esta
declarado, y el espacio de nombres de este tipo.

Ademas, si esta disponible, tambien mostrara la ubicacion en el codigo
original donde se origino el salto en la ejecucion.


using System;
using System.Diagnostics;
using System.Reflection;

namespace EspacioNombres1 {

class Tipo1 {

static void Main() {
Metodo1();
}

static void Metodo1() {
TipoSinEspacioNombres.Metodo2();
}

}

}


class TipoSinEspacioNombres {

public static void Metodo2() {
EspacioNombres2.MostrarStackTraceLib.MostrarStackTrace();
}

}

namespace EspacioNombres2 {

class MostrarStackTraceLib {

public static void MostrarStackTrace() {
StackTrace stkTrace = new StackTrace(true);

for (int i = stkTrace.FrameCount - 1; i >= 0; i--) {
string nombreMetodo = "?";
string ubicacionCodigo = "?";
StackFrame stkFrame = stkTrace.GetFrame(i);

// Recuperar el Método y el espacio de nombres al que
pertenece
MethodBase methodBase = stkFrame.GetMethod();
Type typeDeclaringMethod = methodBase.DeclaringType;

if (typeDeclaringMethod != null) {
string nombreTipo = "";

if (typeDeclaringMethod.Namespace != null) {
nombreTipo = typeDeclaringMethod.Namespace + ".";
}

nombreMetodo = nombreTipo + methodBase.Name + "()";
}


// Recuperar inforación de la linea de invocacion (si estpa
disponible)
if (stkFrame.GetILOffset() != -1) {
string nombreArchivo = stkFrame.GetFileName();

if (nombreArchivo != null) {
int lineaActual = stkFrame.GetFileLineNumber();
ubicacionCodigo = nombreArchivo + " en la línea: " +
lineaActual.ToString();
}
}

Console.WriteLine("{0}. {1}", stkTrace.FrameCount - i,
nombreMetodo);
Console.WriteLine(" {0}", ubicacionCodigo);
Console.WriteLine();
}
}

}
}

Para que la ubicacion dentro del codigo este disponible, compilalo en modo
DEBUG.


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu
Respuesta Responder a este mensaje
#2 David caso
10/01/2005 - 13:04 | Informe spam
Muchas gracias por el codigo.

Y ahora, si no es mucho abusar de ti, quiza puedas aclararme, porque
cuando consigo el nombre del ensamblado, y se lo paso dinamicamicamente,
en una variable, me da fallo al cargar los resources de ese ensamblado,
mientras que si le pongo el nombre de ensamblado a mano, me funciona
correctamente, te explico:

Esto funciona:
rm = new ResourceManager("proyecto.Resource",
System.Reflection.Assembly.LoadWithPartialName("proyecto"));


y esto no:
rm = new ResourceManager((NombreEnsamblado + ".Resource"),
System.Reflection.Assembly.LoadWithPartialName(NombreEnsamblado));


evidentemente el valor que me devuelve el NombreEnsamblado es correcto.

muchas gracias por todo, y un saludo
Respuesta Responder a este mensaje
#3 Pedro Luna Montalvo, MVP
10/01/2005 - 14:34 | Informe spam
Saludos,

1. Ve al sitio: http://msdn.microsoft.com
2. En el cuadro de busqueda, escribe las siguientes palabras: dataset excel
export
3. Realiza la busqueda y el resultado son al menos 5 articulos que te
interesan.


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


"David caso" <listas.algarrobo.quitame.casovazquez.net> escribió en el
mensaje news:
Muchas gracias por el codigo.

Y ahora, si no es mucho abusar de ti, quiza puedas aclararme, porque
cuando consigo el nombre del ensamblado, y se lo paso dinamicamicamente,
en una variable, me da fallo al cargar los resources de ese ensamblado,
mientras que si le pongo el nombre de ensamblado a mano, me funciona
correctamente, te explico:

Esto funciona:
rm = new ResourceManager("proyecto.Resource",
System.Reflection.Assembly.LoadWithPartialName("proyecto"));


y esto no:
rm = new ResourceManager((NombreEnsamblado + ".Resource"),
System.Reflection.Assembly.LoadWithPartialName(NombreEnsamblado));


evidentemente el valor que me devuelve el NombreEnsamblado es correcto.

muchas gracias por todo, y un saludo
Respuesta Responder a este mensaje
#4 Pedro Luna Montalvo, MVP
10/01/2005 - 14:43 | Informe spam
Pues deberias depurar linea a linea y ver lo que ocurre, pues yo hice una
prueba con el siguiente codigo:

ResourceManager rm = null;
// Sample 1
rm = new ResourceManager("proyecto.Resource",
Assembly.LoadWithPartialName("proyecto"));

// Sample 2
string NombreEnsamblado = "proyecto";
rm = new ResourceManager((NombreEnsamblado + ".Resource"),
Assembly.LoadWithPartialName(NombreEnsamblado));

y funcionaron sin problemas.

Cual es el mensaje de error que recibes??


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu

"David caso" <listas.algarrobo.quitame.casovazquez.net> escribió en el
mensaje news:
Muchas gracias por el codigo.

Y ahora, si no es mucho abusar de ti, quiza puedas aclararme, porque
cuando consigo el nombre del ensamblado, y se lo paso dinamicamicamente,
en una variable, me da fallo al cargar los resources de ese ensamblado,
mientras que si le pongo el nombre de ensamblado a mano, me funciona
correctamente, te explico:

Esto funciona:
rm = new ResourceManager("proyecto.Resource",
System.Reflection.Assembly.LoadWithPartialName("proyecto"));


y esto no:
rm = new ResourceManager((NombreEnsamblado + ".Resource"),
System.Reflection.Assembly.LoadWithPartialName(NombreEnsamblado));


evidentemente el valor que me devuelve el NombreEnsamblado es correcto.

muchas gracias por todo, y un saludo
Respuesta Responder a este mensaje
#5 Pedro Luna Montalvo, MVP
10/01/2005 - 14:44 | Informe spam
Sorryeste mensaje no va aquifue falta de punteria :P


"Pedro Luna Montalvo, MVP" escribió en
el mensaje news:
Saludos,

1. Ve al sitio: http://msdn.microsoft.com
2. En el cuadro de busqueda, escribe las siguientes palabras: dataset


excel
export
3. Realiza la busqueda y el resultado son al menos 5 articulos que te
interesan.


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


"David caso" <listas.algarrobo.quitame.casovazquez.net> escribió en el
mensaje news:
> Muchas gracias por el codigo.
>
> Y ahora, si no es mucho abusar de ti, quiza puedas aclararme, porque
> cuando consigo el nombre del ensamblado, y se lo paso dinamicamicamente,
> en una variable, me da fallo al cargar los resources de ese ensamblado,
> mientras que si le pongo el nombre de ensamblado a mano, me funciona
> correctamente, te explico:
>
> Esto funciona:
> rm = new ResourceManager("proyecto.Resource",
> System.Reflection.Assembly.LoadWithPartialName("proyecto"));
>
>
> y esto no:
> rm = new ResourceManager((NombreEnsamblado + ".Resource"),
> System.Reflection.Assembly.LoadWithPartialName(NombreEnsamblado));
>
>
> evidentemente el valor que me devuelve el NombreEnsamblado es correcto.
>
> muchas gracias por todo, y un saludo


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida