Estamos creando un contenedor C# alrededor de una DLL no administrada. La DLL no administrada viene en versiones de 32 y 64 bits. Mantenemos el contenedor administrado en su propio proyecto para que podamos construirlo como un componente separado y reutilizarlo en todas las soluciones.Crear un contenedor administrado para DLL no administrado de 32 bits y 64 bits
Sin embargo, esto genera algunos problemas. Como la DLL no administrada tiene el mismo nombre para las versiones de 32 bits y de 64 bits, tenemos problemas para mover la DLL no administrada correcta al directorio de salida (bin). Si la configuración de compilación es x86, queremos copiar la versión de 32 bits y con x64 la de 64 bits. Con solo una arquitectura de procesador, esto es fácil de lograr. Simplemente incluimos la DLL no administrada en nuestro proyecto y establecemos que copy local sea verdadero en el archivo. Pero como necesitamos apuntar a ambos, es más complicado.
Encontramos este enlace Targeting both 32bit and 64bit with Visual Studio in same solution/project pero esto parece hacer referencia a una DLL que ya existe en la máquina. Queremos que la versión correcta de la DLL se copie en el directorio de salida (bin).
Cualquier consejo o técnica sobre cómo resolver esto son más que bienvenidos.
Hola y gracias por la respuesta. Implementamos el objetivo de construcción posterior como sugirió en el archivo de proyecto del proyecto de envoltura. Sin embargo, desde otros proyectos que hacen referencia al proyecto contenedora, la DLL no administrada no se copia en el directorio bin junto con la DLL contenedora. ¿Algún consejo sobre cómo lograr esto? – flalar
En general, lo que hacemos para todos los ensamblados con referencia indirecta y/o carga dinámica es empujarlos desde sus proyectos TargetDir a una carpeta de salida común con un comando de compilación posterior. Luego, cualquier proyecto que lo necesite los copiará en su TargetDir con un comando pre/post build también. ejemplo empuje: xcopy "$ (TargetDir) $ (TargetFileName)" "$ (SolutionDir) PluginOutput \"/E/Y ejemplo tirón: xcopy "$ (SolutionDir) PluginOutput \ * dll" "$ (TargetDir) "/ E/Y – duckworth
¿De dónde sacaste la versión x64 de FreeImage DLL? Lo he estado buscando por un tiempo, ¡pero uno no tiene sentido! –