¿Hay alguna manera en que pueda decirle a MSBuild 4.0 que cree un objetivo, pero ignore las dependencias? Solo quiero construir ese objetivo en sí, nada más.Compilación de destino MSBuild sin dependencias
Respuesta
me gustaría reiterar @ solución de EMP (y no lo puedo votar debido a mi reputación insignificante).
La forma correcta de evitar el comportamiento predeterminado de MSBuild de reconstruir todas las dependencias enumeradas en el archivo de proyecto es establecer la propiedad BuildProjectReferences
en false.
En su respuesta, invoca MSBuild desde dentro de una secuencia de comandos de MSBuild; aquí hay un ejemplo de la línea de comandos:
MSBuild myproj.csproj /p:Configuration=Debug /p:BuildProjectReferences=false /t:Build
Depende del objetivo que desea construir.
Si el destino está incorporado y tiene dependencias (como "Crear"), no puede eliminar dependencias.
Si es su propio objetivo se puede implementar fácilmente:
<Target Name="YourTargetWithDependencies"
DependsOnTargets="YourTargetDependencies;YourTarget">
</Target>
<Target Name="YourTarget" >
</Target>
Para CorePublish en proyecto de computación Azure nube, así como cualquier otra de las metas DependsOn personalizables se puede tratar de cambiar el proyecto para modificar por defecto lista de dependencias:
<Target Name=CallPublish>
<!-- Modified list of dependencies. Build is skipped here. -->
<PropertyGroup>
<CustomCorePublishDependsOn>
PrepareForPackaging;
CheckRoleInstanceCount;
CopyServiceDefinitionAndConfiguration;
ConfigureWebDeploy;
IntelliTrace;
</CustomCorePublishDependsOn>
</PropertyGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="CorePublish"
Properties="CorePublishDependsOn=$(CustomCorePublishDependsOn);Configuration=$(Configuration);Platform=$(Platform)">
</Target>
Por lo general, las dependencias de un destino se especifican con una propiedad, por ejemplo:
<Target Name="Foo" DependsOnTargets="$(FooDependsOn)">..</Target>
En tal caso puede invocar msbuild como
msbuild bar.proj /p:FooDependsOn=
que establece que la propiedad de nada, y así que no hay dependencias.
Es posible anular el objetivo incorporado, agregar su propia condición y hacer que su destino duplique el original, pero esto puede complicarse bastante. Si puede rastrear un solo objetivo integrado dependiente, esto puede mantenerse. A veces, estos objetivos "centrales" consisten en nada más que una lista de DependsOnTargets, y en ocasiones incluso se definen en una propiedad, por lo que anularla y agregar una condición en la que faltan es trivial. A veces, aunque necesitas hacer un gran corte y pegar para hacerlo bien.
Básicamente, MSBuild solo mantendrá el último destino definido de cualquier nombre dado, así que encuentre dónde su proyecto está importando el archivo .target que incluye el objetivo que desea sobrescribir, luego coloque su propio archivo .target que contiene la importación anular después de eso.
Por ejemplo, la adición de una condición a la meta "CoreBuild" de Microsoft.Common.targets es tan fácil como esto, mientras se mantiene el mismo comportamiento en caso contrario (la condición de destino con la $ (SkipCoreBuild) del siguiente listado):
<Target
Name="CoreBuild"
Condition="'$(SkipCoreBuild)' != 'true'"
DependsOnTargets="$(CoreBuildDependsOn)">
<OnError ExecuteTargets="_TimeStampAfterCompile;PostBuildEvent"
Condition="'$(RunPostBuildEvent)'=='Always' or
'$(RunPostBuildEvent)'=='OnOutputUpdated'"
/>
<OnError ExecuteTargets="_CleanRecordFileWrites" />
</Target>
Colocación de la anterior en su propio archivo de objetivos y la importación en un proyecto de C# después de la norma ...
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
... va a sustituir la implementación predeterminada que no tenga la condición que necesita para deshabilitarlo selectivamente.
En cualquier caso, si encuentra un objetivo que no le permite modificar la condición, me gustaría presentar un error en Connect que describe lo que está tratando de hacer, la gente de MSBuild puede ser muy sensible a este tipo de cosa (con el tiempo).
Resulta que el objetivo incorporado Build
comprueba una propiedad llamada BuildProjectReferences
para saber si se deben construir referencias o no. Necesito ejecutar Build en el proyecto mismo (de lo contrario, no funciona), simplemente no en sus dependencias.Terminé llamando:
<MSBuild Projects="MyCloudProject.ccproj" Targets="CorePublish" Properties="Configuration=$(Configuration); BuildProjectReferences=false" />
- 1. Paquete de destino de MSBuild no encontrado
- 2. ejecutar un destino personalizado msbuild desde VisualStudio
- 3. Ver dependencias de proyectos de MSBuild
- 4. ¿Dependencias de compilación de proyectos de Visual Studio sin referencias?
- 5. Cómo llamar a un destino MSBuild anulado
- 6. Tarea personalizada de MSBuild con dependencias
- 7. MSBuild - Obteniendo el destino llamado desde la línea de comando
- 8. proceso msbuild parada si un destino falla
- 9. ¿Cómo agregar el marco privado a las dependencias de destino?
- 10. host de destino compilación cruzada y construir
- 11. mvn limpio sin dependencias
- 12. Versión específica de destino de .NET con MSBuild
- 13. ¿Cómo excluir proyecto de compilación en MSBUILD?
- 14. msbuild, definiendo símbolos de compilación condicional
- 15. MSBuild: especificando un destino desde la línea de comando
- 16. Cómo detener MSBuild _WPPCopyWebApplication limpieza de destino carpeta App_Data
- 17. ¿Funciona correctamente mi secuencia de comandos de compilación para orientar varios marcos de destino?
- 18. Guiones de compilación Ant, antcall, dependencias, etc.
- 19. Cómo recuperar @ (TargetOutputs) sin realizar una compilación
- 20. Módulo de fusión de compilación sin Devenv desde .vdproj
- 21. ¿Cómo construir un proyecto de C# sin verificar las dependencias?
- 22. Cómo configurar la ruta de acceso de SGEN en Msbuild al framework de destino 3.5
- 23. MSBuild - Agregar archivos para ser "limpiados" en una compilación
- 24. Estilo WPF sin tipo de destino?
- 25. Plataforma/procesador de destino en tiempo de compilación
- 26. ¿Puedo cancelar una compilación de TeamCity desde mi script msbuild?
- 27. tiempo de compilación vista MVC comprobar con msbuild
- 28. ¿Cómo hacer una compilación condicional basada en nombres de destino?
- 29. eliminar el directorio 'destino' después de la compilación
- 30. ¿Mover elementos de compilación en msbuild a un archivo separado?
Sí, está integrado, por supuesto. – EMP
@Evgeny, ¿puedes especificarlo? –
Es el objetivo de CorePublish en un proyecto .ccproj. Por supuesto, puedo hacer lo que hace internamente de forma manual, solo me preguntaba si hay una mejor manera. – EMP