Hedef öğe (MSBuild)

MSBuild'in sıralı olarak yürütülmesi için bir dizi görev içerir.

<Proje><Hedefi>

Sözdizimi

<Target Name="Target Name"
        Inputs="Inputs"
        Outputs="Outputs"
        Returns="Returns"
        KeepDuplicateOutputs="true/false"
        BeforeTargets="Targets"
        AfterTargets="Targets"
        DependsOnTargets="DependentTarget"
        Condition="'String A' == 'String B'"
        Label="Label">
    <Task>... </Task>
    <PropertyGroup>... </PropertyGroup>
    <ItemGroup>... </ItemGroup>
    <OnError... />
</Target>

Öznitelikler ve öğeler

Öznitelikler, alt ve üst öğeler aşağıdaki bölümlerde açıklanmaktadır.

Öznitelikler

Öznitelik Tanım
Name Gerekli öznitelik.

Hedefin adı. Hedef adı dışında $@()%*?.herhangi bir karakter içerebilir.
Condition İsteğe bağlı öznitelik.

Değerlendirilecek koşul. Koşul olarak değerlendirilirse falsehedef, hedefin gövdesini veya özniteliğinde DependsOnTargets ayarlanan hedefleri yürütmez. Koşullar hakkında daha fazla bilgi için bkz . Koşullar.
Inputs İsteğe bağlı öznitelik.

Oluşturan dosyalar bu hedefe girer. Birden çok dosya noktalı virgülle ayrılır. dosyaların zaman damgaları, güncel olup olmadığını Target belirlemek için içindeki Outputs dosyaların zaman damgalarıyla karşılaştırılır. Daha fazla bilgi için bkz . Artımlı derlemeler, Nasıl yapılır: Artımlı derleme ve Dönüşümler.
Outputs İsteğe bağlı öznitelik.

Bu hedefe çıkış oluşturan dosyalar. Birden çok dosya noktalı virgülle ayrılır. dosyaların zaman damgaları, güncel olup olmadığını Target belirlemek için içindeki Inputs dosyaların zaman damgalarıyla karşılaştırılır. Daha fazla bilgi için bkz . Artımlı derlemeler, Nasıl yapılır: Artımlı derleme ve Dönüşümler.
Returns İsteğe bağlı öznitelik.

Bu hedefi çağıran görevler için kullanılabilir duruma getirilecek öğe kümesi, örneğin MSBuild görevleri. Birden çok hedef noktalı virgülle ayrılır. Dosyadaki hedeflerin öznitelikleri yoksa Returns , bu amaç yerine Outputs öznitelikleri kullanılır.
KeepDuplicateOutputs İsteğe bağlı Boole özniteliği.

ise true, hedefin Dönüşleri'nde aynı öğeye birden çok başvuru kaydedilir. Varsayılan olarak, bu öznitelik şeklindedir false.
BeforeTargets İsteğe bağlı öznitelik.

Hedef adların noktalı virgülle ayrılmış listesi. Belirtildiğinde, bu hedefin belirtilen hedef veya hedeflerden önce çalışması gerektiğini gösterir. Bu, proje yazarının mevcut bir hedef kümesini doğrudan değiştirmeden genişletmesine olanak tanır. Daha fazla bilgi için bkz . Hedef derleme sırası.
AfterTargets İsteğe bağlı öznitelik.

Hedef adların noktalı virgülle ayrılmış listesi. Belirtildiğinde, bu hedefin belirtilen hedef veya hedeflerden sonra çalıştırılması gerektiğini gösterir. Bu, proje yazarının mevcut bir hedef kümesini doğrudan değiştirmeden genişletmesine olanak tanır. Daha fazla bilgi için bkz . Hedef derleme sırası.
DependsOnTargets İsteğe bağlı öznitelik.

Bu hedef yürütülmeden önce yürütülmesi gereken hedefler veya üst düzey bağımlılık analizi gerçekleşebilir. Birden çok hedef noktalı virgülle ayrılır.
Label İsteğe bağlı öznitelik.

Sistem ve kullanıcı öğelerini belirleyebilen veya sıralayabilen bir tanımlayıcı.

Alt öğeleri

Öğe Açıklama
Görev MSBuild görevinin bir örneğini oluşturur ve yürütür. Hedefte sıfır veya daha fazla görev olabilir.
Propertygroup Kullanıcı tanımlı Property bir öğe kümesi içerir. .NET Framework 3.5'den başlayarak, bir Target öğe öğeler içerebilir PropertyGroup .
Itemgroup Kullanıcı tanımlı Item bir öğe kümesi içerir. .NET Framework 3.5'den başlayarak, bir Target öğe öğeler içerebilir ItemGroup . Daha fazla bilgi için bkz . Öğeler.
Onerror Özniteliği başarısız bir görev için ErrorAndStop (veya ) ise bir veya falsedaha fazla hedefin ContinueOnError yürütülmesine neden olur. Hedefte sıfır veya daha fazla OnError öğe olabilir. Öğeler varsa OnError , öğedeki Target son öğeler olmalıdır.

Özniteliği hakkında ContinueOnError bilgi için bkz . Görev öğesi (MSBuild).

Üst öğeler

Öğe Tanım
Proje MSBuild proje dosyasının gerekli kök öğesi.

Açıklamalar

Yürütülecek ilk hedef çalışma zamanında belirtilir. Hedeflerin diğer hedeflere bağımlılıkları olabilir. Örneğin, dağıtım hedefi derleme hedeflerine bağlıdır. MSBuild altyapısı bağımlılıkları soldan sağa öznitelikte DependsOnTargets göründükleri sırayla yürütür. Daha fazla bilgi için bkz . Hedefler.

MSBuild içeri aktarma sırasına bağımlıdır ve belirli Name bir özniteliğe sahip bir hedefin son tanımı kullanılan tanımdır.

Birden fazla hedefin bir bağımlılığı olsa bile bir hedef derleme sırasında yalnızca bir kez yürütülür.

Özniteliği olarak değerlendirildiği falseiçin Condition bir hedef atlanırsa, daha sonra derlemede çağrılırsa ve Condition özniteliği o sırada değerlendirilirse true yine de yürütülebilir.

MSBuild 4'den önce özniteliğinde Target Outputs belirtilen tüm öğeleri döndürdü. Bunu yapmak için, MSBuild'in bu öğeleri derlemenin ilerleyen bölümlerindeki görevlerin istemesi durumunda kaydetmesi gerekiyordu. Hangi hedeflerin çağıranların gerektireceği çıkışlara sahip olduğunu belirtmenin bir yolu olmadığından, MSBuild çağrılan tüm öğelerden Outputs tüm öğeleri biriktirdi Target. Bu, çok sayıda çıkış öğesi olan derlemeler için ölçeklendirme sorunlarına yol açar.

Kullanıcı bir projedeki herhangi bir Returns Target öğede bir belirtirse, yalnızca özniteliği olan Returns öğeler Targetbu öğeleri kaydeder.

hem Target öznitelik Outputs hem de öznitelik Returns içerebilir. Outputs hedefin güncel olup olmadığını belirlemek için ile Inputs kullanılır. Returnsvarsa, çağıranlara hangi öğelerin döndürüleceğini belirlemek için değerini Outputs geçersiz kılar. Yoksa Returns , Outputs daha önce açıklanan durum dışında arayanların kullanımına sunulacaktır.

MSBuild 4'den önce, bir Target öğesinde Outputsaynı öğeye birden çok başvuru eklendiğinde, bu yinelenen öğeler kaydedilir. Çok sayıda çıkışı ve birçok proje bağımlılıkları olan çok büyük derlemelerde, yinelenen öğeler hiçbir kullanımda olmadığından bu büyük miktarda belleğin boşa harcanmasına neden olabilir. KeepDuplicateOutputs özniteliği olarak ayarlandığındatrue, bu yinelemeler kaydedilir.

Örnek

Aşağıdaki kod örneği, görevi yürüten bir Target öğeyi Csc gösterir.

<Target Name="Compile" DependsOnTargets="Resources" Returns="$(TargetPath)">
    <Csc Sources="@(CSFile)"
          TargetType="library"
          Resources="@(CompiledResources)"
          EmitDebugInformation="$(includeDebugInformation)"
          References="@(Reference)"
          DebugType="$(debuggingType)" >
        <Output TaskParameter="OutputAssembly"
                  ItemName="FinalAssemblyName" />
    </Csc>
</Target>

Ayrıca bkz.