¿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 archivos DLL en un directorio virtual local de IIS, pero no quiero que esto suceda en el servidor de compilación en modo de lanzamiento.
Para su información, no necesita usar goto. El comando shell IF se puede usar con corchetes:
fuente
"$(ConfigurationName)"
(observe las comillas) si obtiene el código de error 255$(ConfigurationName)
está vacío (línea de comando del evento posterior a la compilación).if "$(Configuration)" == "Debug"
trabajó para mi. Por cierto, si quieres hacer algo en todas las demás configuraciones, úsaloif NOT "$(Configuration)" == "Debug"
.Agregue su evento de creación de publicaciones como de costumbre. 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:
fuente
cd "$(ProjectDir)"
expandido acd ""
.<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
. Las variables macro y todo funcionan normalmente.Alternativamente (dado que los eventos se colocan en un archivo por lotes y luego se llaman), use lo siguiente (en el cuadro de evento Generar, no en un archivo por lotes):
De esta manera, puede tener eventos para cualquier configuración, y aún así administrarlo con las macros en lugar de tener que pasarlos a un archivo por lotes, recuerde que
%1
es$(OutputPath)
, etc.fuente
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
y usargoto :$(ConfigurationName)
Visual Studio 2015: la sintaxis correcta es (mantenerla en una línea):
No hay error 255 aquí.
fuente
A partir de Visual Studio 2019, el
.csproj
formato moderno admite agregar una condición directamente en elTarget
elemento:La interfaz de usuario no proporciona una manera de configurar esto, pero parece dejar el
Configuration
atributo de forma segura si realiza cambios a través de la interfaz de usuario.fuente
Puede pasar el nombre de la configuración al script posterior a la compilación y verificarlo allí para ver si debe ejecutarse.
Pase el nombre de la configuración con
$(ConfigurationName)
.Verificarlo se basa en cómo está implementando el paso posterior a la compilación: será un argumento de línea de comandos.
fuente
Esto funciona para mí en Visual Studio 2015.
Copio todos los archivos DLL de una carpeta ubicada en una carpeta de biblioteca en el mismo nivel que mi carpeta de solución en el directorio de destino del proyecto que se está creando.
Usando una ruta relativa desde mi directorio de proyecto y subiendo la estructura de carpetas dos pasos con .. \ .. \ lib
MySolutionFolder
.... MyProject
Lib
fuente
Al igual que cualquier configuración de proyecto, los eventos se pueden configurar por 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 posterior a la compilación.
fuente
En Visual Studio 2012 tienes que usar (creo que también en Visual Studio 2010)
$(ConfigurationName)
fue catalogado como una macro, pero no fue asignado.Compare: Macros para compilar comandos y propiedades
fuente