2012-05-09 6 views
13

que estoy haciendo lo siguiente:Antes y AfterBuild de destino en Visual Studio no disparar

  • he creado un proyecto de archivo de clase por defecto
  • de editar el fichero csproj incluir Pre y Post BuildEvents
  • de comentario la defecto comentado Destinos BeforeBuild y AfterBuild

Los destinos BeforeBuild y AfterBuild no se llaman en Visual Studio pero son de la línea de comandos de msbuild, ¿por qué?

Preferiría usar objetivos msbuild en lugar de PostBuildEvent, ya que me da más poder y flexibilidad, suponiendo que funcione.

Cheers,

Adam

que acorta algunos de los caminos en la salida, por lo que si son inconsistentes que es la razón por


ClassLibrary1.csproj cambia

mi generación de salida de VS 2010 es

------ Rebuild All started: Project: ClassLibrary1, Configuration: Debug Any CPU ------ 
PRE_BUILD 
ClassLibrary1 -> c:\ClassLibrary1\bin\Debug\ClassLibrary1.dll 
POST_BUILD 
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ========== 

y desde la línea de comandos

#>msbuild ClassLibrary1.sln 
Microsoft (R) Build Engine Version 4.0.30319.1 
[Microsoft .NET Framework, Version 4.0.30319.239] 
Copyright (C) Microsoft Corporation 2007. All rights reserved. 

Build started 09/05/2012 13:27:42. 
Project "c:.sln" on node 1 (default targets). 
ValidateSolutionConfiguration: 
    Building solution configuration "Debug|Any CPU". 
Project "c:.sln" (1) is building "c:\ClassLibrary1.csproj" (2) on node 1 (default targets). 
    BeforeBuild: 
     ### BeforeBuild ### 
PreBuildEvent: 
    echo PRE_BUILD 
    PRE_BUILD 
GenerateTargetFrameworkMonikerAttribute: 
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files. 
CoreCompile: 
Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files. 
CopyFilesToOutputDirectory: 
    ClassLibrary1 -> c:\bin\Debug\ClassLibrary1.dll 
PostBuildEvent: 
    echo POST_BUILD 
    POST_BUILD 
AfterBuild: 
    ### AfterBuild ### 
Done Building Project "c:\ClassLibrary1.csproj" (default targets). 

Done Building Project "c:.sln" (default targets). 

Build succeeded. 
    0 Warning(s) 
    0 Error(s) 

Time Elapsed 00:00:00.18 

Respuesta

44

Sus eventos de generación están disparando, simplemente no se está viendo en Visual Studio.

De forma predeterminada, VS establece la verbosidad de msbuild en minimal. Usted puede conseguir su mensaje a mostrar cambiando la importancia mensaje a high

<Target Name="BeforeBuild"> 
    <Message Text="### BeforeBuild ###" Importance="high" /> 
</Target> 
<Target Name="AfterBuild"> 
    <Message Text="### AfterBuild ###" Importance="high" /> 
</Target> 

También puede cambiar la configuración de VS bajo nivel de detalle Herramientas-> Opciones entonces bajo Proyectos y Soluciones> generar y ejecutar.

+0

gracias, yo era sólo en la fase de pruebas de que las cosas funcionaban antes de pasar al trabajo real que estaba esperando hacer Veré cómo cambiar la verbosidad predeterminada –

2

Solo para ayudar a los demás, cuando se encuentran con un problema similar, pero la razón podría ser diferente. Si ha importado después del objetivo, entonces también puede que After Build no funcione.

Asegúrese de que toda la importación que tiene debe ser antes de definición de objetivos, definición de objetivos debe ser al final

Cuestiones relacionadas