İzlenecek yol: MSBuild proje dosyasını sıfırdan oluşturma
Programlama dilleri hedefleyen.net Framework, örneğin, Visual C# ve Visual Basic MSBuild proje dosyalarını açıklamak ve uygulama oluşturma işlemi denetlemek için kullanın. Visual Studio, MSBuild proje dosyası oluşturmak için kullandığınızda, uygun xml dosyasına otomatik olarak eklenir. Bununla birlikte, xml nasıl düzenlendiğini anlamak yararlı ve nasıl bir yapı denetlemek için değiştirebilirsiniz. Bu izlenecek yolda, yalnızca bir metin düzenleyicisi kullanarak temel proje dosyası artırarak, oluşturulması gösterilmiştir. İzlenecek yol şu adımlardan oluşur:
En düşük uygulama kaynak dosyayı oluşturun.
En az bir MSBuild proje dosyası oluşturun.
path ortam değişkeninde MSBuild içerecek şekilde genişletir.
Proje dosyasını kullanarak uygulamayı oluşturun.
Yapı Denetim için özellikler ekleyin.
Özellik değerlerini değiştirerek yapı kontrol eder.
Hedefleri yapı ekleyin.
Yapı hedefleri belirleyerek denetleyebilirsiniz.
Artımlı olarak oluşturun.
Bu izlenecek yolda, komut isteminde projeyi derleyin ve sonuçları incelemek gösterilmiştir. MSBuild ve MSBuild komut isteminde çalıştırın hakkında daha fazla bilgi için bkz: İzlenecek yol: MSBuild kullanma.
Bu izlenecek yolu tamamlamak için bilgisayarınızda yüklü olmalıdır.İzlenecek yol için gerekli olan MSBuild ve Visual C# derleyicisi, içerir, çünkü netframework (sürüm 2.0, 3.5 veya 4.0).
En az bir uygulama oluşturma
Bu bölümde en az Visual C# uygulama kaynak dosyası bir metin kullanarak düzenleyen oluşturulması gösterilmiştir.
En az bir uygulama oluşturmak için
Komut isteminde uygulamayı oluşturmak istediğiniz klasörü Örneğin, \My Documents\ veya \Desktop\ göz atın.
Tür md HelloWorld \HelloWorld\ adlı bir alt klasör oluşturmak için.
Tür cd HelloWorld yeni klasöre geçin.
Not Defteri'ni veya başka bir metin düzenleyicisini başlatın ve aşağıdaki kodu yazın.
using System; class HelloWorld { static void Main() { #if DebugConfig Console.WriteLine("WE ARE IN THE DEBUG CONFIGURATION"); #endif Console.WriteLine("Hello, world!"); } }
Bu kaynak kodu dosyasını kaydedin ve belgeye Helloworld.cs adını verin.
Yazarak yapı csc helloworld.cs komut isteminde.
Yazarak uygulamayı test helloworld komut isteminde.
Hello, world! İletisi görüntülenecek.
Yazarak uygulamayı silmek del helloworld.exe komut isteminde.
En az bir MSBuild proje dosyası oluşturma
En düşük uygulama kaynak dosyanız artık, uygulama oluşturmak için en az bir proje dosyası oluşturabilirsiniz. Bu proje dosyası aşağıdaki öğeleri içerir:
Gerekli kök Project düğüm.
Bir ItemGroup item öðesi içeren düğüm.
Uygulama kaynak dosyasına başvuran bir item öðesi.
A Target uygulama oluşturmak için gereken görevleri içeren düğüm.
A Task öğesi uygulama geliştirmek için Visual C# derleyicisi başlatmak için.
En az bir MSBuild proje dosyası oluşturmak için
Metin Düzenleyicisi'nde, bu iki satır kullanarak varolan metni değiştirin:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> </Project>
Bu Ekle ItemGroup düğümün bir alt öğesi olarak Project düğümü:
<ItemGroup> <Compile Include="helloworld.cs" /> </ItemGroup>
Dikkat edin, bu ItemGroup zaten bir item öðesi içerir.
Ekleme bir Target düğümün bir alt öğesi olarak Project düğüm. Düğüm adı Yapı.
<Target Name="Build"> </Target>
Bu görev öğesinin bir alt öğesi Ekle Target düğümü:
<Csc Sources="@(Compile)"/>
Bu proje dosyasını kaydedin ve belgeye Helloworld.csproj adını verin.
En az bir proje dosyanıza aşağıdaki kodu benzer olmalıdır:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Compile Include="helloworld.cs" />
</ItemGroup>
<Target Name="Build">
<Csc Sources="@(Compile)"/>
</Target>
</Project>
Yapı hedef görevleri sırayla yürütülür. Bu durumda, Visual C# derleyicisi Csc yalnızca görev görevdir. Derlemek için kaynak dosyaların listesini bekler ve bu değeri tarafından verilen Compile madde. Compile Madde yalnızca bir kaynak dosyası, Helloworld.cs başvuruyor.
Not
İtem öðesinin içinde yıldız joker karakter (*) gibi .cs dosya adı uzantısına sahip tüm dosyaları başvurmak için kullanabilirsiniz:
<Compile Include="*.cs" />
Hata ayıklama ve seçmeli hale getirir çünkü ancak, joker karakter kullanımını önermiyoruz kaynak dosyalar eklendiğinde veya silindiğinde, daha zor hedefleme.
Yol MSBuild içerecek şekilde genişletme
MSBuild erişmeden önce path ortam değişkeni eklemek için genişletmeniz gerekir.net Framework klasör.
MSBuild dahil etmek için yol genişletmek için
Komut istemine set PATH=%PATH%;%WINDIR%\Microsoft.Net\Framework\v4.0. Başka bir sürümüne sahipseniz.net Framework yüklü, sürüm numarası da buna göre değişir.
Not
Bilgisayarınızdaki MSBuild klasörünün adı v2.0.50727 gibi bir yapı numarasını içerebilir.Böyle bir durumda, örneğin, komut satırında yapı numarası dahil set PATH=%PATH%;%WINDIR%\Microsoft.Net\Framework\v2.0.50727.
Visual Studio'nun varsa, bunun yerine kullanabileceğiniz Visual Studio Command Prompt, MSBuild klasörü içeren bir yolu vardır.
Uygulamayı derlemek için proje dosyasını kullanma
Şimdi, uygulama oluşturmak için yeni oluşturduğunuz proje dosyasını kullanın.
Uygulama oluşturmak için
Komut istemine msbuild helloworld.csproj /t:Build.
Helloworld uygulamasını oluşturmak için Visual C# derleyicisi çağırarak bu Helloworld proje dosyası oluşturma hedefi oluşturur.
Yazarak uygulamayı test helloworld.
Hello, world! İletisi görüntülenecek.
Not
Oluşturma hakkında daha fazla ayrıntı ayrıntı düzeyini artırarak görebilirsiniz."Ayrıntılı" için ayrıntı düzeyini ayarlamak için komut isteminde aşağıdaki komutlardan birini yazın:
msbuild helloworld.csproj /t:Build /verbosity:detailed
Yapı özellikleri ekleme
Daha fazla denetim yapı proje dosyasına yapı özellikleri ekleyebilirsiniz. Artık bu özellikler ekleyin:
Bir AssemblyName uygulamanın adını belirtmek için özellik.
Bir OutputPath uygulama içeren bir klasör belirtmek için özellik.
Yapı özellikleri eklemek için
Yazarak varolan uygulamayı silmek del helloworld.exe komut isteminde.
Bu proje dosyasına eklemek PropertyGroup öğesinden hemen sonra açılış Project öğesi:
<PropertyGroup> <AssemblyName>MSBuildSample</AssemblyName> <OutputPath>Bin\</OutputPath> </PropertyGroup>
Bu görevi yapı hedefe hemen öncesine ekleyin Csc görev:
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
MakeDir Görev tarafından adlı bir klasör oluşturur OutputPath özelliği, bu adı taşıyan bir klasör yok şimdilik sağlanan.
Bu OutputAssembly için öznitelik Csc görev:
<Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
Bu tarafından adlı bir derleme oluşturmak için Visual C# derleyicisi söyler AssemblyName özelliği tarafından adlı klasöre koymak ve OutputPath özelliği.
Değişikliklerinizi kaydedin.
Proje dosyanıza aşağıdaki kodu şimdi benzer olmalıdır:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AssemblyName>MSBuildSample</AssemblyName>
<OutputPath>Bin\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="helloworld.cs" />
</ItemGroup>
<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
</Target>
</Project>
Not
İçinde belirttiğiniz zaman klasör adının sonuna ters eğik çizgi (\) yol sınırlayıcı eklemenizi öneririz OutputPath içine eklemek yerine öğesi, OutputAssembly özniteliği Csc görevi.Bu nedenle,
<OutputPath>Bin\</OutputPath>
OutputAssembly=="$(OutputPath)$(AssemblyName).exe" />
daha iyidir
<OutputPath>Bin</OutputPath>
OutputAssembly=="$(OutputPath)\$(AssemblyName).exe" />
Yapı özelliklerini sınama
Şimdi uygulama çıktı klasörü ve uygulamanın adını belirtmek için yapı özellikleri kullanılır proje dosyasını kullanarak oluşturabilirsiniz.
Yapı özelliklerini sınamak için
Komut istemine msbuild helloworld.csproj /t:Build.
Bu \Bin\ klasörü oluşturur ve sonra MSBuildSample uygulaması oluşturmak için Visual C# derleyicisi çağırır ve \Bin\ klasörüne yerleştirir.
\Bin\ klasörü oluşturuldu ve MSBuildSample uygulama içerdiğini doğrulamak için aşağıdakileri yazın dir Bin.
Yazarak uygulamayı test Bin\MSBuildSample.
Hello, world! İletisi görüntülenecek.
Yapı hedefler ekleme
Daha sonra iki daha fazla hedefleri gibi proje dosyasına ekleyin:
Eski dosyaları siler temiz bir hedef.
Kullanan bir Rebuild hedef DependsOnTargets önce yapı görevi çalıştırmak için temiz görev zorlamak için öznitelik.
Birden çok hedefi sahip olduğunuz yapı hedef varsayılan hedef olarak ayarlayabilirsiniz.
Yapı eklemek için hedefler
Proje dosyasında yalnızca yapı hedef sonra bu iki hedefleri ekleyin:
<Target Name="Clean" > <Delete Files="$(OutputPath)$(AssemblyName).exe" /> </Target> <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
Temiz hedef uygulamayı silmek için Delete görev çağırır. Rebuild hedef temiz hedef hem de oluşturma hedefi gerçekleştirene kadar çalışmaz. Hiçbir görev Rebuild hedef olmasına karşın, önce yapı hedef çalıştırmak temiz hedef neden olur.
Bu DefaultTargets özniteliği için açılış Project öğesi:
<Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
Bu yapı hedef varsayılan hedef olarak ayarlar.
Proje dosyanıza aşağıdaki kodu şimdi benzer olmalıdır:
<Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AssemblyName>MSBuildSample</AssemblyName>
<OutputPath>Bin\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="helloworld.cs" />
</ItemGroup>
<Target Name="Build">
<MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" />
<Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" />
</Target>
<Target Name="Clean" >
<Delete Files="$(OutputPath)$(AssemblyName).exe" />
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
</Project>
Yapı hedefleri sınama
Bu özellikler proje dosyasının sınamak için yeni yapı hedefleri alýþtýrma:
Varsayılan yapı oluşturma.
Uygulama adı komut satırında ayarlama.
Başka bir uygulama üretilmiştir önce uygulaması siliniyor.
Uygulama, başka bir uygulama oluşturma olmadan siliniyor.
Yapı hedefleri sınamak için
Komut istemine msbuild helloworld.csproj /p:AssemblyName=Greetings.
Kullanmak çünkü /t açıkça hedef ayarlamak için geçiş, MSBuild varsayılan oluşturma hedefi çalışır. /p Geçersiz kılmaları geçiş AssemblyName özelliği ve yeni değeri verir Tebrik. Bu \Bin\ klasörde oluşturulacak yeni bir uygulama, Greetings.exe, neden olur.
\Bin\ klasörü MSBuildSample uygulama hem de yeni Greetings uygulaması içerdiğini doğrulamak için aşağıdakileri yazın dir Bin.
Greetings uygulaması yazarak test Bin\Greetings.
Hello, world! İletisi görüntülenecek.
Yazarak MSBuildSample uygulamayı silmek msbuild helloworld.csproj /t:clean.
Bu varsayılan uygulamayı kaldırmak için temiz görevin çalıştırdığı AssemblyName özellik değeri MSBuildSample.
Greetings uygulaması yazarak silmek msbuild helloworld.csproj /t:clean /p:AssemblyName=Greetings.
Bu olan uygulamayı kaldırmak için temiz görevin çalıştırdığı verilen AssemblyName özellik değeri Tebrik.
\Bin\ klasörü şimdi boş olduğunu doğrulamak için aşağıdakileri yazın dir Bin.
msbuild yazın.
Proje dosyası belirtilmemiş olsa da, geçerli klasörde yalnızca bir proje dosyası olduğundan MSBuild helloworld.csproj dosyasını oluşturur. Bu \Bin\ klasörde oluşturulacak MSBuildSample uygulama neden olur.
\Bin\ klasörü MSBuildSample uygulama içerdiğini doğrulamak için aşağıdakileri yazın dir Bin.
Artımlı oluşturma
MSBuild yalnızca kaynak dosyalarını veya hedef bağlıdır hedef dosyalarını değiştirdiyseniz, bir hedef oluşturmak için söyleyebilirsiniz. MSBuild dosyanın zaman damgası, değişip değişmediğini belirlemek için kullanır.
Artımlı olarak oluşturmak için
Proje dosyasında bu öznitelikler açýlýþ yapı hedef ekleyin:
Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe"
Bu yapı hedef belirtilen girdi dosyası bağlı olduğunu belirtir Compile madde grubu ve çıktı hedefi uygulama dosyası olduğunu.
Sonuçta ortaya çıkan yapı hedef aşağıdaki kod benzer olmalıdır:
<Target Name="Build" Inputs="@(Compile)" Outputs="$(OutputPath)$(AssemblyName).exe"> <MakeDir Directories="$(OutputPath)" Condition="!Exists('$(OutputPath)')" /> <Csc Sources="@(Compile)" OutputAssembly="$(OutputPath)$(AssemblyName).exe" /> </Target>
Yapı hedef yazarak test msbuild /v:d komut isteminde.
HelloWorld.csproj varsayılan proje dosyası olduğunu ve o yapı varsayılan hedef olduğunu unutmayın.
/v:d Anahtar oluşturma işlemi için ayrıntılı bir açıklama belirtir.
Bu satırlar görüntülenir:
Skipping target "Build" because all output files are up-to-date with respect to the input files.
Input files: HelloWorld.cs
Output files: Bin\MSBuildSample.exe
En son uygulama üretilmiştir bu yana kaynak dosyalardan hiçbiri değişmiş olduğundan MSBuild yapı hedef atlar.
Örnek
Description
Derler bir proje dosyasını aşağıdaki örnekte gösterilmektedir bir Visual C# uygulama ve çıkış dosyası adını içeren bir ileti kaydeder.
Kod
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files of type CSFile -->
<CSC
Sources = "@(CSFile)"
OutputAssembly = "$(appname).exe">
<!-- Set the OutputAssembly attribute of the CSC task
to the name of the executable file that is created -->
<Output
TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Örnek
Description
Derler bir proje dosyasını aşağıdaki örnekte gösterilmektedir bir Visual Basic uygulama ve çıkış dosyası adını içeren bir ileti kaydeder.
Kod
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldVB</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<VBFile Include = "consolehwvb1.vb"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual Basic compilation using input files of type VBFile -->
<VBC
Sources = "@(VBFile)"
OutputAssembly= "$(appname).exe">
<!-- Set the OutputAssembly attribute of the VBC task
to the name of the executable file that is created -->
<Output
TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</VBC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Sonraki adım nedir?
Visual Studio Bu izlenecek yolda gösterilen iş çoğunu otomatik olarak yapabilirsiniz. Visual Studio oluşturma, düzenleme, oluşturma ve MSBuild proje dosyalarını sınamak için nasıl kullanılacağını öğrenmek için bkz: İzlenecek yol: MSBuild kullanma.