Como referencia una Dll hecha en .Net en tiempo de ejecución....

05/06/2006 - 21:58 por Ernesto Lara | Informe spam
Si yo cree una Dll en VB .Net 2005 como hago para referenciarla a mi programa
en tiempo de ejecución, se como hacerlo en VB6 pero no en .Net 2005.

De antemano gracias.

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
05/06/2006 - 23:12 | Informe spam
Si yo cree una Dll en VB .Net 2005 como hago para referenciarla a mi
programa en tiempo de ejecución, se como hacerlo en VB6 pero no en
.Net 2005.



Con Assembly.LoadFrom puedes cargar el ensamblado en tiempo de ejecucion.
Tambien podrias ser con Type.GetType si especificas el nombre completo de la
clase (es decir, con la informacion del ensablado en que se encuentra y el
CLR sea capaz de ubicarlo). Otra forma es referenciarla como cualquier DLL
en el proyecto ya que los ensamblados siempre se cargan en forma dinamica.
Es decir, hay varias formas de hacerlo, dependiendo de lo que se quiera
lograr.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Ernesto Lara
05/06/2006 - 23:40 | Informe spam
Eduardo podrias darme un ejemplo? es que tengo una Dll que tiene adentro una
funcion Fun1 y quiero registrar en tiempo de ejecucion esa Dll y usar la
funcion Fun1

De antemano gracias :)

"Eduardo A. Morcillo [MS MVP VB]" escribió:

> Si yo cree una Dll en VB .Net 2005 como hago para referenciarla a mi
> programa en tiempo de ejecución, se como hacerlo en VB6 pero no en
> .Net 2005.

Con Assembly.LoadFrom puedes cargar el ensamblado en tiempo de ejecucion.
Tambien podrias ser con Type.GetType si especificas el nombre completo de la
clase (es decir, con la informacion del ensablado en que se encuentra y el
CLR sea capaz de ubicarlo). Otra forma es referenciarla como cualquier DLL
en el proyecto ya que los ensamblados siempre se cargan en forma dinamica.
Es decir, hay varias formas de hacerlo, dependiendo de lo que se quiera
lograr.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C



Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
06/06/2006 - 03:13 | Informe spam
Eduardo podrias darme un ejemplo? es que tengo una Dll que tiene
adentro una funcion Fun1 y quiero registrar en tiempo de ejecucion
esa Dll y usar la funcion Fun1




Public Sub EjecutarFuncion1()

Dim asm As [Assembly]
Dim obj As Object

' Cargo el ensamblado
asm = Assembly.LoadFrom("ClassLibrary1.dll")

' Creo una instancia de la clase
obj = asm.CreateInstance("ClassLibrary1.Class1")

' Ejecuto la funcion
MessageBox.Show(CallByName(obj, "Fun1", CallType.Method,
Nothing).ToString())


End Sub

Public Sub EjecutarFuncion2()

' Obtengo el tipo (esto carga el ensamblado si el CLR lo encuentra)
Dim t As Type = Type.GetType("ClassLibrary1.Class1, ClassLibrary1")
Dim obj As Object

' Creo una instancia de la clase
obj = Activator.CreateInstance(t)

' Ejecuto la funcion
MessageBox.Show(CallByName(obj, "Fun1", CallType.Method,
Nothing).ToString())


End Sub

El ejemplo es simple, CallByName usa Reflection y no es lo mejor. Mejor
seria que la clase implemente una interface y utilizar esa misma interface
en la aplicacion para usar la clase.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida