2012-03-19 22 views
26

Necesito construir una solución pero excluyo un proyecto. ¿Cómo debería hacerlo? Busqué mucho sobre este tema, pero nada podría ayudar.¿Cómo excluir proyecto de compilación en MSBUILD?

sección

ItemGroup eleve la siguiente excepción:

elemento no válido. Tarea desconocida o tipo de datos.

PropertyGroup también son la excepción.

A continuación es mi ejemplo de código:

<project name="TI 8.1.6 build script"> 
    <ItemGroup> 
    <Solution Include="${ROOT}\Core\TI Core.sln" Exclude="${ROOT}\Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj"/> 
    </ItemGroup> 
... 
</project> 

Así podría alguien ayudarme?

Respuesta

44

Puede excluir proyectos a nivel de solución para un determinado build configuration utilizando el Configuration Manager Dialog en Visual Studio:

Configuration Manager Dialog

, entonces solo puede invocar msbuild en el archivo de solución especificar la configuración de generación de uso:

msbuild /property:Configuration=Release MySolution.sln 
+2

Esto no ayuda :( –

+0

¿Qué estoy tratando de lograr? –

+0

Establecí el modo "Depurar" en el proyecto que se excluirá. Todos los demás proyectos están configurados como "Liberar". En las propiedades ** msbuild ** configuré Configuración para Liberar. Y el proyecto excluido es construido con otros y se levanta la excepción. –

11

Una solución sugerida por Enrico es la solución más versátil que woul D trabajo siempre Una solución alternativa podría ser utilizar la tarea <MSBuild> directamente. Esto funcionará para usted si tiene todo el archivo del proyecto bajo un directorio particular, o puede enumerar fácilmente todos los proyectos que desea construir (es decir, el número de proyectos en su solución no es muy grande).

Por ejemplo, este archivo se msbuild la fabricación de cada proyecto bajo el directorio actual a excepción de un proyecto específico:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
    <MyProjectReferences Include="**\*.*proj" /> 
    <MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" /> 
    </ItemGroup> 

    <Target Name="BuildAllExceptWixProject"> 
    <MSBuild Projects="@(MyProjectReferences)" Targets="Build" /> 
    </Target> 

</Project> 

entonces usted puede construir que el uso de línea de comandos msbuild <myproject> /t:BuildAllExceptWixProject

+3

Tenía razón. Pero no ** ProjectReferences ** pero ** ProjectReference **. Y ** Incluir ** es propiedad necesaria para el elemento ** ProjectReference **, así que puse ** Include/Exclude ** en el mismo artículo. ¡Y funciona! El proyecto fue excluido con éxito. ¡¡Gracias!! –

+1

@LubochknAndrew, el nombre del grupo podría ser cualquier nombre de elemento XML válido. El grupo 'ProjectReference' solo uno de los grupos que ya se usa en los objetivos estándar de Microsoft, no hace que este nombre sea mejor que cualquier otro nombre que se pueda imaginar. Tenga en cuenta que el ejemplo en mi respuesta no usa los objetivos estándar de Microsoft. –

Cuestiones relacionadas