what visual virtualstudio studio online microsoft code visual-studio build post-build-event

visual-studio - virtualstudio - visual studio light



Evento VS Build Build (7)

Me gustaría implementar un evento de compilación posterior que realice las siguientes acciones

  1. Una copia de ruta relativa de la salida de DLL (1 archivo, no todo el depuración de jazz)
  2. Un registro de la salida DLL a GAC

¿Cómo se hace esto?


¿Eso es lo que quieres?

copy $(TargetPath) $(TargetDir)../../someFolder/myoutput.dll regasm $(TargetPath)

(Ingresado en el campo para el paso posterior a la construcción en las propiedades del proyecto)



Ingrese lo siguiente en "Propiedades del proyecto-> Eventos de compilación-> Publicar línea de comando de eventos de compilación:"

xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"

o agregue el siguiente fragmento de código al archivo de proyecto (por ejemplo, csproj)

<PropertyGroup> <PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent> </PropertyGroup>

Tenga en cuenta que se recomienda agregar "" alrededor de los argumentos del comando de copia para evitar problemas con las rutas que contienen espacios en blanco. También tenga en cuenta que múltiples comandos se pueden combinar usando &&


¿Estás seguro de que quieres hacer esto como parte de una compilación? Recomendaría utilizar referencias de proyecto en soluciones en lugar de GAC si puede evitarlo. Copiar archivos es una cosa, pero registrarse en el GAC es bastante intrusivo y es posible que desee considerar los otros entornos en los que se compila su código. Cosas como máquinas de otros desarrolladores, entornos de prueba / servidores de compilación etc. Si tiene un servidor de compilación realmente deberías estar usando algo como NAnt con algún tipo de servidor de integración continua.



Se encontró con un problema relacionado. Las respuestas aquí ayudaron (¡gracias!).

Mi escenario estaba en la depuración de una aplicación dependiente de MEF que necesitaba para tener los archivos DLL relacionados en una ubicación determinada. Me encontré con el problema de sobrescribir la versión anterior, así que necesité agregar una eliminación al script.

delete $(SolutionDir)FileService/$(ProjectName).dll copy $(TargetPath) $(SolutionDir)FileService/$(ProjectName).dll

¡Espero que ayude a alguien también!


Tuve el mismo problema y luché un poco para que funcione.

En mi caso, quise hacer a la inversa, lo cual es copiar el DLL de SDL en mi carpeta de salida.

copy "$(SolutionDir)SDL/lib/x86/SDL.dll" "$(SolutionDir)$(Configuration)/"

Tenga en cuenta que $(Configuration) será su carpeta de salida (por ejemplo, Depurar o Liberar).

Las citas eran lo que me faltaba, aparentemente las necesitas cuando el lado derecho termina con un / . Por lo tanto, podría ser más seguro usarlos siempre.

¡Espero salvar a alguien más en 5 minutos!

PD: uso Visual Studio 2010