Problemas al agregar un UserControl que hace referencia a un contenedor de C ++ / CLI a un dll no administrado a un formulario

StackOverflow https://stackoverflow.com/questions/817139

Pregunta

Mi UserControl hace referencia a un contenedor C ++ / CLI a un dll de C ++ no administrado. Cuando intento agregar el UserControl a un formulario, recibo un error de Visual Studio, que dice "Error al crear el componente" UserControl ", dando una excepción System.IO.FileNotFoundException como la causa.

De lo que he podido determinar, el problema se debe a que Visual Studio no copia las dependencias no administradas del ensamblaje de envoltura C ++ / CLI. Si pongo las dependencias no administradas en el sistema PATH, todo funciona bien.

¿Hay una mejor manera de hacer esto?

¿Fue útil?

Solución

Lo más fácil sería incluir el archivo .dll real en su proyecto, marcar su acción de compilación como "Contenido", y luego configurar Copiar al directorio de salida en "Siempre". Esto debería llevar el archivo .dll a su directorio de salida para que su aplicación pueda ejecutarse, y solo incluir el archivo en el proyecto debería colocarlo en el directorio del proyecto para que el diseñador pueda encontrarlo.

Asegúrese de que su proyecto de configuración también incluya un resultado de proyecto para los archivos de contenido de ese proyecto.

Editar

Si no funcionan, también puede editar las rutas de referencia del propio proyecto (en las propiedades del proyecto), aunque no estoy seguro de que esto afecte al diseñador. Si eso no es así, tu única opción real es tener el .dll en uno de los directorios de la ruta del sistema.

Otros consejos

Tema anterior, pero enviando mi solución ya que acabo de encontrar el problema y encontré esta pregunta durante el proceso.

Básicamente, acabo de hacer que las DLL nativas se carguen con retraso en mi contenedor C ++ / CLI. Dado que la parte C ++ / CLI de la envoltura contiene las especificaciones de la interfaz utilizadas por Visual Studio y el marco, la DLL nativa nunca es necesaria o cargada. También respondí con un poco más de detalles en esta pregunta: https://stackoverflow.com/a/15481687/34440

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top