valido - Cómo ejecutar los eventos posteriores a la creación de Visual Studio solo para la compilación de depuración
visual studio code ajuste de linea (9)
Agrega tu evento de compilación como es normal. Luego guarde su proyecto, ábralo en el Bloc de notas (o su editor favorito) y agregue la condición al grupo de propiedades PostBuildEvent. Aquí hay un ejemplo:
<PropertyGroup Condition=" ''$(Configuration)'' == ''Debug'' ">
<PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
¿Cómo puedo limitar mis eventos posteriores a la compilación para que se ejecuten solo para un tipo de compilación? Estoy usando los eventos para copiar DLL en un directorio virtual local de IIS, pero no quiero que esto suceda en el servidor de compilación en modo de lanzamiento.
Al igual que cualquier configuración de proyecto, los buildevents se pueden configurar según la configuración, simplemente seleccione la configuración que desea cambiar en el menú desplegable del cuadro de diálogo Páginas de propiedades y edite el paso de compilación posterior
En VS 2012 tienes que usar (creo que también en VS 2010)
if $(Configuration) == Debug xcopy
$ (NombreDeConfiguración) fue listado como una macro, pero no fue asignado.
Compare: http://msdn.microsoft.com/en-us/library/c02as0cs(v=vs.110).aspx
Esto me funciona en Visual Studio 2015.
Copio todos los archivos dll de una carpeta ubicada en una carpeta lib en el mismo nivel que la carpeta de mi solución en el directorio de destino del proyecto que se está construyendo.
Utilizando una ruta relativa desde el directorio de mi proyecto y subiendo la estructura de carpetas dos pasos con .. / .. / lib
MySolutionFolder
....Mi proyecto
Lib
if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)../../lib/*.dll" "$(TargetDir)"
) ELSE (echo "Not Debug mode, no file copy from lib")
Para su información, no es necesario utilizar goto. El comando de shell IF se puede utilizar con paréntesis:
if $(ConfigurationName) == Debug (
copy "$(TargetDir)myapp.dll" "c:/delivery/bin" /y
copy "$(TargetDir)myapp.dll.config" "c:/delivery/bin" /y
) ELSE (
echo "why, Microsoft, why".
)
Puede pasar el nombre de la configuración a la secuencia de comandos posterior a la construcción y verificarlo allí para ver si debería ejecutarse.
Pase el nombre de configuración con $ (ConfigurationName)
La comprobación se basa en cómo está implementando el paso posterior a la compilación: será un argumento de línea de comandos
Visual studio 2015: la sintaxis correcta es (manténgala en una línea):
if "$(ConfigurationName)"=="My Debug CFG"
( xcopy "$(TargetDir)test1.tmp" "$(TargetDir)test.xml" /y)
else
( xcopy "$(TargetDir)test2.tmp" "$(TargetDir)test.xml" /y)
No hay error 255 aquí.
alternativamente (dado que los eventos se colocan en un archivo por lotes y luego se llaman), use lo siguiente. (en el cuadro Evento de creación, no en un archivo por lotes):
if $(ConfigurationName) == Debug goto :debug
:release
signtool.exe ....
xcopy ...
goto :exit
:debug
'' debug items in here
:exit
De esta manera, puede tener eventos para cualquier configuración, y aún así administrarlos con las macros en lugar de tener que pasarlos a un archivo por lotes y recuerde que% 1 es $ (OutputPath), etc.
Los eventos previos y posteriores a la compilación se ejecutan como un script por lotes. Puede hacer una declaración condicional en $(ConfigurationName)
.
Por ejemplo
if $(ConfigurationName) == Debug xcopy something somewhere