Aracılığıyla paylaş


MSBuild dönüşümler

Bire bir dönüştürme bir öğe listesi başka bir dönüşüm olur.Madde listeleri dönüştürmek bir proje etkinleştirmenin yanı sıra, giriş ve çıkış arasında doğrudan eşleme tanımlamak bir hedef Dönüşüm sağlar.Bu konuda dönüşümler açıklar ve nasıl MSBuild projeleri daha verimli bir şekilde oluşturmak için bunları kullanır.

Değiştiriciler Dönüştür

Dönüşümler rasgele değildir, ancak, tüm dönüşüm değiştirici biçimde olmalıdır %(özel bir sözdizimi ile sınırlıItemMetaDataName).Herhangi bir öğe meta Dönüşüm değiştiricisi olarak kullanılabilir.Bu oluşturulduğunda her maddeye atanan tanınmış öğe meta veriler içerir.Tanınmış bir öğe meta listesi için bkz: MSBuild tanınmış öğe meta.

Aşağıdaki örnekte, .resx dosyaların listesini .resources dosyalar listesine dönüştürülür.%(Filename) Dönüşüm değiştirici her .resources dosyası ilgili .resx dosyası olarak aynı dosya adına sahip olduğunu belirtir.

@(RESXFile->'%(filename).resources')

[!NOT]

Ayırıcı standart madde listesi için belirttiğiniz aynı biçimde dönüştürülmüş bir öğe listesi için özel bir ayırıcı belirtebilirsiniz.Örneğin, varsayılan noktalı virgül (;) yerine virgül (,) kullanarak dönüştürülen öğe listesini ayırmak için aşağıdaki xml kullanın.

@(RESXFile->'Toolset\%(filename)%(extension)', ',')

@(RESXFile) öğe listesindeki öğeler, örneğin, Form1.resx, Form2.resx, ve Form3.resx, dönüştürülmüş listesinde çıkışları olacaktır Form1.resources, Form2.resources, ve Form3.resources.

Birden fazla değiştiricilerini kullanarak

Transform deyimi herhangi bir sırayla birleştirilebilir ve yinelenebilir birden fazla değiştiriciler içerir.Aşağıdaki örnekte, dosyalarını içeren dizinin adını değiştirdim, ama orijinal adı ve dosya adı uzantısı dosyaları korur.

@(RESXFile->'Toolset\%(filename)%(extension)')

Örneğin maddeler ise bulunan RESXFile madde listesi Project1\Form1.resx, Project1\Form2.resx, ve Project1\Form3.text, dönüştürülmüş listesinde çıkışları olacaktır Toolset\Form1.resx, Toolset\Form2.resx, ve Toolset\Form3.text.

Bağımlılık çözümlemesi

Dönüşümler, dönüştürülmüş bir öğe listesi ve özgün öğe listesi arasında bire bir eşleme garanti.Bu nedenle, hedef olan dönüşümler, girişlerinin çıktıları oluşturur, MSBuild giriş ve çıkış zaman damgalarının çözümlemek ve atlamak, yapı veya kısmen hedef yeniden karar vermek.

De Görev kopyalama her dosyasında aşağıdaki örnekte BuiltAssemblies madde listesi eşleştiren bir dönüşüm kullanarak belirtilen görev, hedef klasörde bir dosyaya Outputs özniteliği.Bir dosyada, BuiltAssemblies öğe listesi değişiklikleri Copy görev için değiştirilen dosyası çalıştırılır ve diğer tüm dosyalar atlandı.Bağımlılık çözümlemesi ve dönüşümler kullanma hakkında daha fazla bilgi için bkz: Nasıl yapılır: artımlı olarak oluşturun.

<Target Name="CopyOutputs"
    Inputs="@(BuiltAssemblies)"
    Outputs="@(BuiltAssemblies -> '$(OutputPath)%(Filename)%(Extension)')">

    <Copy
        SourceFiles="@(BuiltAssemblies)"
        DestinationFolder="$(OutputPath)"/>

</Target>

Örnek

ms171476.collapse_all(tr-tr,VS.110).gifDescription

Aşağıdaki örnekte gösterildiği bir MSBuild dönüşümler kullanan proje dosyası.Bu örnek, c:\sub0\sub1\sub2\sub3 dizininde bir .xsd dosyası vardır ve çalışma dizini c:\sub0 olduğunu varsayar.

ms171476.collapse_all(tr-tr,VS.110).gifKod

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Schema Include="sub1\**\*.xsd"/>
    </ItemGroup>

    <Target Name="Messages">
        <Message Text="rootdir: @(Schema->'%(rootdir)')"/>
        <Message Text="fullpath: @(Schema->'%(fullpath)')"/>
        <Message Text="rootdir + directory + filename + extension: @(Schema->'%(rootdir)%(directory)%(filename)%(extension)')"/>
        <Message Text="identity: @(Schema->'%(identity)')"/>
        <Message Text="filename: @(Schema->'%(filename)')"/>
        <Message Text="directory: @(Schema->'%(directory)')"/>
        <Message Text="relativedir: @(Schema->'%(relativedir)')"/>
        <Message Text="extension: @(Schema->'%(extension)')"/>
    </Target>
</Project>

ms171476.collapse_all(tr-tr,VS.110).gifComments

Bu örnek aşağıdaki çıktıyı üretir.

rootdir: C:\
fullpath: C:\xmake\sub1\sub2\sub3\myfile.xsd
rootdir + directory + filename + extension: C:\xmake\sub1\sub2\sub3\myfile.xsd
identity: sub1\sub2\sub3\myfile.xsd
filename: myfile
directory: xmake\sub1\sub2\sub3\
relativedir: sub1\sub2\sub3\
extension: .xsd

Ayrıca bkz.

Görevler

Nasıl yapılır: artımlı olarak oluşturun

Diğer Kaynaklar

MSBuild kavramları

MSBuild başvurusu