2011-10-19 20 views
5

Bir hiyerarşi olarak düzenlenen birçok projelerinin oluşturulmasını ve dağıtımını sürmek için bir MSBuild yapısını gerçekleştirerek ediyorum yapmadan @ (TargetOutputs) nasıl alınır. Uygun Temiz/Kemik Kıran mantığını uygulamak içinbir yapı

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

, bir yapı akım seçenekleri ile gerçekleştirildi eğer derlenmiş olacak dosya listesini almak istiyorum.

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

Ben gelen özellikler/öğeleri almak istediğiniz orijinal projesini ithal özel proje dosyası oluşturmak ettiği özel bir görev oluşturma gibi çeşitli yöntemler denedim. Ama bu bana güvenilir değerler vermiyor.

aslında bir yapı yapmadan bir MSBuild projenin TargetOutputs öğe grubu almak için bir yolu var mı?

cevap

5

Aldırma.

Ben the following similar question tökezledi ve ben, GetTargetPath hedefi kullanır şöyle zorunda düşündüm:

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