Tengo un código contenedor C# que llama a funciones desde un dll nativo (C++). Actualmente, puedo agregar una referencia al dll de C# y establecer la opción 'Copiar local' en verdadero. Sin embargo, el dll nativo, que es una dependencia, no se puede agregar como referencia, por lo que no existe la opción 'Copiar local'.¿Hay alguna forma mejor de copiar un dll nativo a la carpeta bin?
He tratado los siguientes enfoques
El uso de un poste de construir-eventos para copiar el archivo DLL nativa de la carpeta Liberaciones a la
$(TargetFolder)
copy "$(ProjectDir)Libs\NQuantLibc.dll" "$(TargetDir)NQuantLibc.dll"
Incluido el DLL nativa como un elemento existente en el proyecto (Agregar -> Artículo existente -> Incluir dll). Esta opción me permite usar la opción 'Copiar local'. La desventaja de este enfoque es que el dll siempre se muestra como un elemento del proyecto.
También probé "Mostrar todos los archivos", lo que me permitió ver la carpeta Libs. Luego incluyo el archivo NQuantLibc.dll en el proyecto que me permitió establecer la opción 'Copiar local'. Sin embargo, esto me dio un resultado inesperado. Creó una subcarpeta Libs que contiene el dll dentro de la carpeta bin (por ejemplo, bin/debug/Libs/NQuantLibc.dll
). No es ideal ya que el dll de C# no podía llamar correctamente al dll nativo ya que no estaba allí.
Las dos opciones anteriores funcionan. ¿Hay alguna forma mejor de copiar un dll nativo a la carpeta bin para que la dependencia siempre se resuelva? Alternativamente, ¿hay un enfoque diferente para este tipo de escenario?
Pregunta relacionada: http://stackoverflow.com/questions/126331/specifying-a-non-net-dependency-in-visual-studio – Ahmad