2011-10-19 10 views
5

Estoy implementando un marco de MSBuild para dirigir la construcción y la implementación de muchos proyectos organizados como una jerarquía.Cómo recuperar @ (TargetOutputs) sin realizar una compilación

<Target Name="_CoreBuild"> 
    <MSBuild Projects="@(Project)" Targets="Build" Properties="Configuration=$(Configuration)"> 
    <Output TaskParameter="TargetOutputs" ItemName="CompiledAssemblies" /> 
    </MSBuild> 
</Target> 

Con el fin de poner en práctica la lógica adecuada limpio/Clobber, me gustaría recuperar la lista de archivos que se compilan si la acumulación se realiza con las opciones actuales.

<Target Name="_CoreClobber" DependsOnTargets="_CoreClean"> 
    <!-- How to retrieve @(CompiledAssemblies) as if we were 
     building @(Project) and retrieving the @(TargetOutputs) item group. 
    --> 
</Target> 

He intentado varios métodos, incluyendo la creación de una tarea personalizada, en la que construyo un archivo de proyecto personalizado que importa el proyecto original que quiero para recuperar las propiedades/artículos de. Pero eso no me da valores confiables.

¿Hay alguna manera de recuperar el grupo de elementos TargetOutputs de un proyecto MSBuild sin realizar realmente una compilación?

Respuesta

5

No importa.

yo nos topamos con the following similar question, y pensé que tenía que usar el objetivo GetTargetPath, así:

<Target Name="_CoreBuild"> 
    <MSBuild Projects="@(Project)" Targets="GetTargetPath" Properties="Configuration=$(Configuration)"> 
    <Output TaskParameter="TargetOutputs" ItemName="CompiledAssemblies" /> 
    </MSBuild> 
</Target> 
Cuestiones relacionadas