İçeri aktarma öğesi (MSBuild)

Bir proje dosyasının içeriğini başka bir proje dosyasına aktarır.

<Proje><İçeri Aktarma>

Sözdizimi

<Import Project="ProjectPath"
    Condition="'String A'=='String B'" />

Öznitelikler ve öğeler

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

Öznitelikler

Öznitelik Tanım
Project Gerekli öznitelik.

İçeri aktaracak proje dosyasının yolu. Yol joker karakterler içerebilir. Eşleşen dosyalar sıralı olarak içeri aktarılır. Bu özelliği kullanarak, kod dosyasını bir dizine ekleyerek projeye kod ekleyebilirsiniz.
Condition İsteğe bağlı öznitelik.

Değerlendirilecek bir koşul. Daha fazla bilgi için bkz . Koşullar.
Label İsteğe bağlı öznitelik.

Bu içeri aktarma öğesine bir tanımlayıcı uygular.
Sdk İsteğe bağlı öznitelik.

Proje SDK'sı başvurur.

Alt öğeleri

None

Üst öğeler

Öğe Tanım
Proje MSBuild proje dosyasının gerekli kök öğesi.
ImportGroup İsteğe bağlı bir koşul altında gruplandırılmış bir öğe koleksiyonu Import içerir.

Açıklamalar

öğesini kullanarak Import , birçok proje dosyasında ortak olan kodu yeniden kullanabilirsiniz. paylaşılan kodda yaptığınız tüm güncelleştirmeler içeri aktaran tüm projelere yayıldığından, içeri aktarmaları kullanmak kodun bakımını kolaylaştırır.

Kural gereği, paylaşılan içeri aktarılan proje dosyaları dosya olarak .targets kaydedilir, ancak standart MSBuild proje dosyalarıdır. MSBuild, farklı bir dosya adı uzantısına sahip bir projeyi içeri aktarmanızı engellemez, ancak tutarlılık için uzantıyı .targets kullanmanızı öneririz.

İçeri aktarılan projelerdeki göreli yollar, içeri aktarılan projenin dizinine göre yorumlanır (bu paragrafın ilerleyen bölümlerinde açıklanan birkaç özel durumla). Bu nedenle, bir proje dosyası farklı konumlardaki birkaç proje dosyasına aktarılırsa, içeri aktarılan proje dosyasındaki göreli yollar içeri aktarılan her proje için farklı yorumlanır. İki özel durum vardır. Bir özel durum, öğelerde Import yolun her zaman öğesini içeren Import projeye göre yorumlanmış olmasıdır. Bir diğer özel durum da özniteliğin UsingTask göreli yolunu AssemblyFile öğesini içeren dosyaya göre her zaman yorumlamasıdır UsingTask .

İçeri aktarılan bir projede (örneğin ve MSBuildProjectFile) başvuruda bulunılan proje dosyasıyla ilgili tüm MSBuild ayrılmış özelliklerine, MSBuildProjectDirectory içeri aktarılan proje dosyası temelinde değerler atanır.

İçeri aktarılan projenin özniteliği DefaultTargets yoksa, içeri aktarılan projeler içeri aktarıldıkları sırayla incelenir ve bulunan DefaultTargets ilk özniteliğin değeri kullanılır. Örneğin, ProjectA ProjectB ve ProjectC'yi (bu sırada) içeri aktarırsa ve ProjectB ProjectD'yi içeri aktarırsa, MSBuild önce DefaultTargets ProjectA'da, sonra ProjectB'de, sonra ProjectD'de ve son olarak ProjectC'de belirtilir.

İçeri aktarılan projenin şeması, standart projenin şemasıyla aynıdır. MSBuild içeri aktarılan bir proje oluşturabilse de, içeri aktarılan bir proje genellikle hangi özelliklerin ayarlanacağı veya hedeflerin çalıştırılacağı sıra hakkında bilgi içermediği için olası değildir. İçeri aktarılan proje, bu bilgileri sağlamak için içeri aktarıldığı projeye bağlıdır.

Joker karakterler

.NET Framework 4'te MSBuild, Project özniteliğinde joker karakterlere izin verir. Joker karakterler olduğunda, bulunan tüm eşleşmeler sıralanır (yeniden üretilebilirlik için) ve sonra sıra açıkça ayarlanmış gibi bu sırayla içeri aktarılır.

Başka birinin içeri aktarılan dosyaya dosya adını açıkça eklemenize gerek kalmadan dosyayı içeri aktarabilmesi için bir genişletilebilirlik noktası sunmak istiyorsanız bu yararlı olur. Bu amaçla, Microsoft.Common.Targets dosyanın en üstünde aşağıdaki satırı içerir.

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>

Örnek

Aşağıdaki örnekte, çeşitli öğeler ve özelliklere sahip olan ve genel bir proje dosyasını içeri aktaran bir proje gösterilmektedir.

<Project DefaultTargets="Compile"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <resourcefile>Strings.resx</resourcefile>

        <compiledresources>
            $(O)\$(MSBuildProjectName).Strings.resources
        </compiledresources>
    </PropertyGroup>

    <ItemGroup>
        <CSFile Include="*.cs" />

        <Reference Include="System" />
        <Reference Include="System.Data" />
    </ItemGroup>

    <Import Project="$(CommonLocation)\General.targets" />
</Project>

Ayrıca bkz.