Artımlı oluşturur
Artımlı yapılar ilgili giriş dosyalarına göre güncel durumda çıktı dosyalarına sahip hedefleri yürütülmez olacak şekilde en iyi duruma getirilmiş yapılar var. Hedef öğe olabilir bir Inputs hangi hedef öğeler belirten öznitelik beklediği girdi olarak ve bir Outputs ne üretir çıktı öğeleri gösterir özniteliği. MSBuild, bu özniteliğin değerleri arasında 1-1 eşleştirme bulmaya çalışır. 1-1 Eşleştirme varsa, MSBuild giriş her zaman damgası öğesine karşılık gelen çıktı madde, zaman damgasını karşılaştırır. Yok 1-1 eşleştirme çıkış dosyaları, giriş dosyalarına karşılaştırılır. Aynı yaş kendi çıktı dosyası olan güncel veya eski kendi giriş dosyası veya dosyaları farklı bir madde olarak kabul edilir.
Tüm çıktı öğeleri güncel, MSBuild hedef atlar. Bu artan yapı hedefi oluşturma hızını önemli ölçüde artırabilir. Yalnızca bazı dosyaları güncel, MSBuild hedef çalıştırır ancak güncel maddeler atlar ve böylece güncel tüm öğeleri getirir. Bu olarak bilinen bir kısmi artan yapı.
1-1 eşlemeleri genelde madde dönüşümleri tarafından oluşturulur. Daha fazla bilgi için bkz. MSBuild dönüşümler.
Aşağıdaki hedef düşünün.
<Target Name="Backup" Inputs="@(Compile)"
Outputs="@(Compile->'$(BackupFolder)%(Identity).bak')">
<Copy SourceFiles="@(Compile)" DestinationFiles=
"@(Compile->'$(BackupFolder)%(Identity).bak')" />
</Target>
Tarafından temsil edilen dosya kümesi Compile madde türü yedekleme dizinine kopyalanır. Yedekleme dosyaları .bak dosya adı uzantısına sahiptir. Dosyaları tarafından temsil edilen, Compile öğe türü veya karşılık gelen yedek dosyalar değil silinmiş veya yedekleme hedef çalıştırdıktan sonra yedekleme hedefi sonraki yapılarında Atlanan sonra değiştirildi.
Çıkış kesmesi
MSBuild karşılaştırır Inputs ve Outputs özniteliklerini hedef yürütülecek olup olmadığını belirlemek için bir hedef. İdeal olarak, ilişkili hedefler yürütülür olup olmadığını artımlı bir yapı tamamlandıktan sonra var olan dosya kümesi aynı kalması gerekir. Özellikler ve oluşturulan veya görevler tarafından değiştirilen öğeler Yapı etkileyebileceğinden, MSBuild bile onları etkiler hedef atlanır değerlerine gerçekleştirip gerekir. Olarak bilinen bu çıktı kesmesi.
Üç durum vardır:
Hedefi olan bir Condition değerlendiren özniteliği false. Bu durumda, hedef değil çalıştırın ve yapı üzerinde hiçbir etkisi yoktur.
Hedef, güncel olmayan çıkışlar vardır ve bunları güncel duruma getirmek için çalıştırın.
Hedef, güncel olmayan çıkış var ve atlanır. MSBuild hedef değerlendirir ve hedef çalışsaydı gibi öğeleri ve özelliklerini değişiklikleri yapar.
Artımlı derlemeyi desteklemek için görevler emin olmanız gerekir TaskParameter öznitelik değeri herhangi bir Output öğesi görevi giriş parametresi eşittir. İşte birkaç örnek:
<CreateProperty Value="123">
<Output PropertyName="Easy" TaskParameter="Value" />
</CreateProperty>
Bu özelliği olmasa da hedef yürütülen atlandı veya değeri "123" kolay oluşturur.
<CreateItem Include="a.cs;b.cs">
<Output ItemName="Simple" TaskParameter="Include" />
</CreateItem>
Bu öğe türü hedef yürütülen veya atlamış olsun veya olmasın, iki öğe, "a.cs" ve "b.cs" olan basit oluşturur.
MSBuild 3,5 inç çıktı kesmesi bir hedef öğe ve özellik gruplarındaki otomatik olarak gerçekleştirilir. CreateItemGörev hedef içinde gerekli değil ve kaçınılmalıdır. Ayrıca, CreateProperty görevleri kullanılması hedef içinde yalnızca bir hedef yürütülen olup olmadığını belirlemek için.
Bir hedef çalıştırılmış olup olmadığını belirleme
Çıkış kesmesi nedeniyle eklemek zorunda bir CreateProperty görev hedef yürütülen olup olmadığını belirlemek için özellikleri ve öğeleri incelemek üzere bir hedef. Eklemek CreateProperty hedefe görev ve verin bir Output öğesi, TaskParameter "ValueSetByTask" olur.
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="CompileRan" />
</CreateProperty>
Bu özellik CompileRan oluşturur ve değerini verir true, ancak yalnızca hedef yürütülür. Hedef atlandığı takdirde CompileRan oluşturulmaz.