visual-studio - visual - vscode html wrap
¿Cómo hacer que Visual Studio copie un archivo DLL al directorio de salida? (4)
Tengo un proyecto de Visual Studio C ++ que se basa en un archivo DLL externo. ¿Cómo puedo hacer que Visual Studio copie este archivo DLL automáticamente en el directorio de salida (depuración / publicación) cuando construyo el proyecto?
$ (OutDir) resultó ser una ruta relativa en VS2013, así que tuve que combinarlo con $ (ProjectDir) para lograr el efecto deseado:
xcopy /y /d "$(ProjectDir)External/*.dll" "$(ProjectDir)$(OutDir)"
Por cierto, puede depurar fácilmente los scripts agregando ''echo'' al principio y observar el texto expandido en la ventana de salida de compilación.
(Esta respuesta solo se aplica a C #, no a C ++, lamento haber leído mal la pregunta original)
Ya he pasado por DLL infierno como este. Mi solución final fue almacenar los archivos DLL no administrados en el archivo DLL administrado como recursos binarios, y extraerlos a una carpeta temporal cuando el programa se inicia y eliminarlos cuando se elimina.
Esto debería ser parte de la infraestructura de .NET o pinvoke, ya que es muy útil ... Hace que su DLL administrada sea fácil de administrar, tanto utilizando Xcopy como una referencia de Proyecto en una solución más grande de Visual Studio. Una vez que haces esto, no tienes que preocuparte por los eventos posteriores a la construcción.
ACTUALIZAR:
Publiqué código aquí en otra respuesta https://.com/a/11038376/364818
Los detalles en la sección anterior de comentarios no me funcionaron (VS 2013) cuando intenté copiar el dll de salida de un proyecto C ++ a la carpeta de depuración y depuración de otro proyecto C # dentro de la misma solución.
Tuve que agregar la siguiente acción de creación posterior (haga clic con el botón derecho en el proyecto que tiene un resultado .dll), luego propiedades -> propiedades de configuración -> eventos de compilación -> evento post-compilación -> línea de comando
ahora agregué estas dos líneas para copiar el dll de salida en las dos carpetas:
xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller/bin/Release
xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller/bin/Debug
Use una acción posterior a la compilación en su proyecto y agregue los comandos para copiar la DLL ofensiva. La acción posterior a la construcción se escribe como un script por lotes.
El directorio de salida se puede referenciar como $(OutDir)
. El directorio del proyecto está disponible como $(ProjDir)
. Intente utilizar parientes relativos cuando corresponda, de modo que pueda copiar o mover su carpeta de proyecto sin romper la acción de creación posterior.