İç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>