Problema de Asp.Net C # DllImport

Quiero importar un archivo DLL en el proyecto de mi sitio web. Tengo el archivo dll "my.dll" en la carpeta C: \ DLLDir y estoy usando el código:

[DllImport("C:\\DLLDir\\my.dll", EntryPoint = "Out32")]

Esto funciona bien. Pero quiero usar una ruta relativa (ruta raíz del sitio web). Estoy tratando de poner "my.dll" en "bin" o carpeta raíz y estoy usando el código:

   [DllImport("my.dll", EntryPoint = "Out32")]

pero aparece el error: No se puede cargar la DLL 'my.dll': no ​​se pudo encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)

¿Alguna idea?

preguntado el 09 de enero de 11 a las 02:01

Creo que quiere la ruta absoluta a la dll. Server.MapPath debería hacer el truco por usted -

Server.MapPath le proporciona las rutas relativas a la ubicación de su directorio web. Entonces, si ya tiene la ruta absoluta, no hará ninguna diferencia. -

Pero Server.MapPath permitirá que el OP use una ruta relativa a la DLL, pero pase una ruta absoluta a DLLImport. -

eggheadcafe.com/software/aspnet/33238643/… Puede poner su DLL en system32 o arreglar su variable de ruta -

¿My.dll tiene dependencias? Si es así, ¿ha copiado también esas dependencias en el directorio bin de los sitios web? -

4 Respuestas

Creo que es posible que desee consultar primero la siguiente pregunta SO (ya que está relacionada con su caso):

DllImport no pudo ubicar la DLL a pesar de que está en la RUTA

Como han sugerido otras personas, consulte la PATH variable de entorno para asegurarse de que C:\DLLDir\ esta ahí. Puede leer más sobre cómo configurar sus variables de entorno Aquí.

Mira este pequeño Publicación en el foro de MSDN también (parece que hubo un problema con las dependencias).

Si está importando una DLL COM, es posible que también deba registrarse primero en una máquina de destino (aunque no estoy seguro de si es necesario). Leer más aquí.

contestado el 23 de mayo de 17 a las 15:05

O no copió my.dll a la carpeta Bin donde debería cargarse. Usando Process Explorer ( http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) probablemente mostrará desde dónde intenta cargar este archivo.

EDITAR: gracias a volpav por recordar que es una DLL no administrada: ignore la parte administrada ... ... el ensamblaje tiene algunas otras dependencias. Verificar http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx que detalla la investigación de tales fallas (busque "registro de fusión de carga de ensamblaje" para obtener más enlaces).

Respondido el 14 de enero de 11 a las 20:01

Creo que no tiene nada que ver con Fusion, ya que es una DLL no administrada. - volpav

Dirígete a Properties/Build pestaña, y establezca el objetivo de la plataforma en x86.

Respondido el 14 de Septiembre de 11 a las 01:09

Creo que la DLL debe estar en su camino (si no es absoluta). Y lo que probablemente le sorprenderá es que CWD no está en su camino a menos que agregue específicamente "." en su variable PATH.

Respondido el 14 de enero de 11 a las 07:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.