¿Cómo puedo resolver “Asegúrese de que el archivo esté accesible y de que sea un ensamblado o componente COM válido”?

Estoy construyendo un proyecto con OpenCV en C #. Requiere un archivo dll llamado cvextern.dll . pero, al agregar este archivo como referencia, aparece este mensaje:

no se puede agregar una referencia “cvextern.dll”, asegúrese de que el archivo sea accesible y de que sea un ensamblado o componente COM válido.

Me cansé de buscar, pasé los últimos 2 días buscando una solución para ese problema

el archivo es un archivo DLL nativo, lo que significa que no puede agregarlo a un proyecto .NET mediante Agregar referencia … puede usarlo a través de DllImport (consulte http://msdn.microsoft.com/en-us/library/system) .runtime.interopservices.dllimportattribute.aspx )

En mi caso, tuve que registrar el dll -> abrir cmd (consola) con derechos de administrador y escribir: regsvr32 “foo.dll”

Asegúrese de que los dlls necesarios se exporten (o se copien manualmente) a la carpeta bin cuando construya su aplicación.

Tenía el mismo progtwig, espero que esto pueda ayudar.

Estoy utilizando Windows 7, abra el símbolo del sistema-> ejecutar como administrador. registre su <...>. dll.

¿Por qué ejecutar como administrador, puede registrar su <...>. Dll utilizando la ejecución en el inicio de Windows, pero aún así su dll solo se ejecuta como usuario, incluso su cuenta es administrador.

Ahora puede agregar su <...>. Dll al Proyecto-> Agregar referencia-> Buscar

Gracias

Mire aquí la respuesta de TheMattster . Lo implementé y funcionó a las mil maravillas. En pocas palabras, su solución sugiere agregar el dll COM como un recurso para el proyecto (por lo que ahora se comstack en el dll del proyecto), y en la primera ejecución escribirlo en un archivo (es decir, el archivo dll que quería allí en el primer lugar).

Lo siguiente está tomado de su respuesta.

Paso 1) Agregue la DLL como un recurso (debajo como “Resources.DllFile”). Para hacer esto, abra las propiedades del proyecto, seleccione la pestaña de recursos, seleccione “agregar archivo existente” y agregue la DLL como un recurso.

Paso 2) Agregue el nombre de la DLL como un recurso de cadena (debajo como “Resources.DllName”).

Paso 3) Agregue este código a su carga de formulario principal:

 if (!File.Exists(Properties.Resources.DllName)) { var outStream = new StreamWriter(Properties.Resources.DllName, false); var binStream = new BinaryWriter(outStream.BaseStream); binStream.Write(Properties.Resources.DllFile); binStream.Close(); } 

Mi problema era que no solo tenía que usar el dll COM en mi proyecto, también tenía que implementarlo con mi aplicación usando ClickOnce, y sin poder agregar referencia a él en mi proyecto, la solución anterior es prácticamente la única que trabajó.

‘It’ requiere un archivo dll llamado cvextern.dll. ‘Puede ser tu propio archivo cs o algún otro dll de terceros que estés usando en tu proyecto.

Para llamar a dlls nativos a su propio archivo cs, copie el dll en el directorio root \ lib de su proyecto y agréguelo como un elemento existente. (Agregue el elemento existente) y use Dllimport con la ubicación correcta.

Para un tercero, copie la biblioteca nativa a la carpeta donde reside la biblioteca de terceros y agréguela como un elemento existente.

Después de construir, asegúrese de que los dlls necesarios aparezcan en la carpeta Build. En algunos casos, puede no aparecer o ser reemplazado en la carpeta Build. Elimine la carpeta de comstackción manualmente y vuelva a comstackr.