2012-09-19 25 views
22

Estoy usando MSBuild desde un script para compilar mi proyecto. Me di cuenta de que solo hace una compilación y no una limpieza/reconstrucción.¿Cómo forzo a MSBuild a limpiarse o reconstruirse?

Tengo el siguiente:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0"> 
<Target Name="Build"> 
    <MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" Targets="Build" Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" /> 
</Target> 

¿Cómo fuerzo una limpieza/reconstruir?

Respuesta

29

Cambio

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" 
    Targets="Build" 
    Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" /> 

a

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" 
    Targets="Clean;Build" 
    Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" /> 

o

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" Targets="Rebuild" 
    Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" /> 

Para más detalles, ver el MSBuild Task documentation.

+0

Parece obvio cuando ve la respuesta. Debería haberlo tenido. Gracias por la respuesta – John

+0

¿Qué tal el nuevo _csproj_? – Shimmy

15

"% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild" Project.sln /p: Configuración = LANZAMIENTO/t: Reconstruir

+0

En la pregunta, msbuild se usa en un archivo de proyecto. No directamente en el símbolo del sistema. – warunapww

+0

En cuestión "Estoy usando msbuild desde un script para compilar mi proyecto" desde un script mejor use el símbolo del sistema – Geograph

+0

Responda o no a la pregunta original, el fragmento me ayudó a llegar a donde tenía que ir ... ¡gracias! – madannes

1

Siempre trate de usar

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" 
    Targets="Clean;Build" 
    Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" /> 

Porque según this MSDN article, cuando tiene varios proyectos en su solución usando "Reconstruir" como el objetivo, puede causar que la limpieza y la construcción sucedan en forma paralela. Lo cual puede causar problemas en las dependencias del proyecto.

Pero cuando usa "Limpiar y compilar" como objetivo, la compilación se iniciará solo después de que se hayan limpiado todos los proyectos.

Cuestiones relacionadas