Birden çok proje dosyasında aynı hedefi kullanma
Birkaç MSBuild proje dosyası yazdıysanız, aynı görevleri ve hedefleri farklı proje dosyalarında kullanmanız gerektiğini fark etmiş olabilirsiniz. Bu görevlerin veya hedeflerin tam açıklamasını her proje dosyasına eklemek yerine, hedefi ayrı bir proje dosyasına kaydedebilir ve ardından bu projeyi hedefi kullanması gereken başka bir projeye aktarabilirsiniz.
İçeri Aktar öğesini kullanma
Import
öğesi, bir proje dosyasını başka bir proje dosyasına eklemek için kullanılır. İçeri aktarılmakta olan proje dosyasının geçerli bir MSBuild proje dosyası olması ve iyi biçimlendirilmiş XML içermesi gerekir. özniteliği, Project
içeri aktarılan proje dosyasının yolunu belirtir. öğesi hakkında Import
daha fazla bilgi için bkz . İçeri aktarma öğesi (MSBuild).
Projeyi içeri aktarmak için
İçeri aktarılan proje dosyasında, içeri aktarılan projedeki özellikler ve öğeler için parametre olarak kullanılan tüm özellikleri ve öğeleri tanımlayın.
Import
öğesini kullanarak projeyi içeri aktarın. Örneğin:<Import Project="MyCommon.targets"/>
öğesinin ardından
Import
, içeri aktarılan projedeki özelliklerin ve öğelerin varsayılan tanımlarını geçersiz kılması gereken tüm özellikleri ve öğeleri tanımlayın.
Değerlendirme sırası
MSBuild bir Import
öğeye ulaştığında, içeri aktarılan proje, öğesinin konumundaki içeri aktarma projesine Import
etkili bir şekilde eklenir. Bu nedenle, öğesinin Import
konumu özelliklerin ve öğelerin değerlerini etkileyebilir. İçeri aktarılan proje tarafından ayarlanan özellikleri ve öğeleri ve içeri aktarılan projenin kullandığı özellikleri ve öğeleri anlamak önemlidir.
Proje oluşturulduğunda, önce tüm özellikler değerlendirilir, ardından öğeler eklenir. Örneğin, aşağıdaki XML içeri aktarılan MyCommon.targets proje dosyasını tanımlar:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyCommon</Name>
</PropertyGroup>
<Target Name="Go">
<Message Text="Name=$(Name)"/>
</Target>
</Project>
Aşağıdaki XML, MyCommon.targets dosyasını içeri aktaran MyApp.proj dosyasını tanımlar:
<Project
DefaultTargets="Go"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyApp</Name>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>
Proje oluşturulduğunda aşağıdaki ileti görüntülenir:
Name="MyCommon"
Özellik Name
MyApp.proj içinde tanımlandıktan sonra proje içeri aktarıldığından, MyCommon.targets içindeki tanımı Name
MyApp.proj içindeki tanımı geçersiz kılar. Proje Name özelliği tanımlanmadan önce içeri aktarılırsa, derleme aşağıdaki iletiyi görüntüler:
Name="MyApp"
Projeleri içeri aktarırken aşağıdaki yaklaşımı kullanın
Proje dosyasında, içeri aktarılan projedeki özellikler ve öğeler için parametre olarak kullanılan tüm özellikleri ve öğeleri tanımlayın.
Projeyi içeri aktarın.
proje dosyasında, içeri aktarılan projedeki özelliklerin ve öğelerin varsayılan tanımlarını geçersiz kılması gereken tüm özellikleri ve öğeleri tanımlayın.
Örnek 1
Aşağıdaki kod örneği, ikinci kod örneğinin içeri aktardığını MyCommon.targets dosyasını gösterir. .targets dosyası, derlemeyi yapılandırmak için içeri aktarılan projedeki özellikleri değerlendirir.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
<Optimize Condition="'$(Flavor)'=='RETAIL'">yes</Optimize>
<appname>$(MSBuildProjectName)</appname>
<PropertyGroup>
<Target Name="Build">
<Csc Sources="hello.cs"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe"/>
</Target>
</Project>
Örnek 2
Aşağıdaki kod örneği MyCommon.targets dosyasını içeri aktarır.
<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor>RETAIL</Flavor>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>