.NET Framework'leri hedefleyen programlama dilleri, uygulama derleme işlemini açıklamak ve denetlemek için MSBuild proje dosyalarını kullanır. MsBuild proje dosyası oluşturmak için Visual Studio kullandığınızda, dosyaya otomatik olarak uygun XML eklenir. Ancak, XML'nin nasıl düzenlendiğinden ve bir derlemeyi denetlemek için nasıl değiştirebileceğinizi anlamak yararlı olabilir.
Not
MSBuild'in herhangi bir SDK'dan bağımsız olarak nasıl çalıştığına ilişkin temel bilgileri öğrenmek istiyorsanız bu makale uygundur.
dotnet build kullandığınızda veya kök proje öğesine Sdk özniteliğini eklediğinizde olduğu gibi bir SDK ile derleme, bu makalede ele alınmamıştır. Bkz. .NET Proje SDK'ları.
Standart .csproj dosyaları tarafından içeri aktarılan derleme mantığı, bu örnekten çok daha fazla seçeneği ve çok daha karmaşık bir derleme işlemini destekler.
C++ projesi için proje dosyası oluşturma hakkında bilgi için bkz. MSBuild (C++).
Bu öğreticide, yalnızca bir metin düzenleyicisi kullanarak artımlı olarak temel bir proje dosyasının nasıl oluşturulacağı gösterilmektedir. İzlenecek yol şu adımları izler:
PATH ortam değişkenini genişletin.
En düşük uygulama kaynak dosyası oluşturun.
En düşük MSBuild proje dosyasını oluşturun.
Proje dosyasını kullanarak uygulamayı oluşturun.
Oluşturmayı kontrol etmek için özellikler ekleyin.
Özellik değerlerini değiştirerek yapıyı denetleyin.
Yapıya hedefler ekleyin.
Derlemeyi hedefleri belirleyerek yönetin.
Artımlı olarak oluşturun.
Bu öğreticide, komut isteminde projenin nasıl derlendiği ve sonuçların nasıl incelendiği gösterilir. MSBuild ve komut isteminde MSBuild'i çalıştırma hakkında daha fazla bilgi için bkz. MSBuildkullanma .
Öğreticiyi tamamlamak için, izlenecek yol için gereken MSBuild ve C# derleyicisini içerdiğinden Visual Studio'nun yüklü olması gerekir.
Yolu genişletme
MSBuild'i kullanabilmeniz için önce PATH ortam değişkenini gerekli tüm araçları içerecek şekilde genişletmeniz gerekir.
Windows'da çalıştırıyorsanız Visual Studio içinGeliştirici Komut İstemi'ni kullanabilirsiniz. Bunu Windows görev çubuğundaki Windows arama kutusunda arayın. Ortamı normal bir komut isteminde veya bir betik ortamında ayarlamak için, visual studio yüklemesinin Common7/Tools alt klasöründe VSDevCmd.bat çalıştırın.
En düşük uygulama oluşturma
Bu bölümde, bir metin düzenleyicisi kullanarak en düşük C# uygulama kaynak dosyasının nasıl oluşturulacağı gösterilmektedir.
Komut isteminde, uygulamayı oluşturmak istediğiniz klasöre gidin; örneğin, \Belgelerim\ veya \Desktop\ .
\HelloWorld\ adlı bir alt klasör oluşturun ve dizini içine gidecek şekilde değiştirin.
Metin düzenleyicisinde yeni bir dosya HelloWorld.cs oluşturun ve aşağıdaki kodu kopyalayıp yapıştırın:
C#
using System;
classHelloWorld
{
staticvoidMain()
{
#if DebugConfig
Console.WriteLine("WE ARE IN THE DEBUG CONFIGURATION");
#endif
Console.WriteLine("Hello, world!");
}
}
Komut istemine helloworld yazarak uygulamayı test edin.
Merhaba, dünya! ileti görüntülenmelidir.
Yürütülebilir dosyayı silin.
En düşük MSBuild proje dosyası oluşturma
Artık en az uygulama kaynak dosyanız olduğuna göre, uygulamayı oluşturmak için en düşük proje dosyasını oluşturabilirsiniz. Bu proje dosyası aşağıdaki öğeleri içerir:
Gerekli kök Project düğümü.
Öğe öğelerini içeren bir ItemGroup düğümü.
Uygulama kaynak dosyasına başvuran bir öğe öğesi.
Uygulamayı oluşturmak için gereken görevleri içeren bir Target düğümü.
Uygulamanın derlenmesi için C# derleyicisinin çalıştırılması amacıyla bir Task öğesi.
Minimal bir MSBuild proje dosyası oluşturmak için
Metin düzenleyicisinde HelloWorld.fromscratchproj yeni bir dosya oluşturun ve aşağıdaki kodu girin:
Derleme hedefindeki görevler ardışık olarak yürütülür. Bu durumda, tek görev C# derleyici Csc görevidir. Derlenecek kaynak dosyaların listesini bekler ve bu, Compile öğesinin değeri tarafından verilir.
Compile öğesi, Helloworld.cstek bir kaynak dosyaya başvurur.
Not
öğe öğesinde, .cs dosya adı uzantısına sahip tüm dosyalara başvurmak için yıldız joker karakterini (*) aşağıdaki gibi kullanabilirsiniz:
XML
<CompileInclude="*.cs" />
Uygulamayı oluşturma
Şimdi uygulamayı derlemek için yeni oluşturduğunuz proje dosyasını kullanın.
Bu, Helloworld uygulamasını oluşturmak için C# derleyicisini çağırarak Helloworld proje dosyasının Derleme hedefini oluşturur.
helloworld yazarak uygulamayı test edin.
Merhaba, dünya! ileti görüntülenmelidir.
Not
Ayrıntı seviyesini artırarak derleme hakkında daha fazla ayrıntı görebilirsiniz. Ayrıntı düzeyini "ayrıntılı" olarak ayarlamak için komut istemine şu komutu yazın:
Bu, C# derleyicisine AssemblyName özelliği tarafından adlandırılmış bir derleme oluşturmasını ve bunu OutputPath özelliği tarafından adlandırılan klasöre yerleştirmesini sağlar.
Csc görevinin OutputAssembly özniteliğine eklemek yerine, OutputPath öğesinde belirttiğinizde klasör adının sonuna ters eğik çizgi (\) yol sınırlayıcısını eklemenizi öneririz. Bu yüzden
Clean hedefi, uygulamayı silmek için Delete görevini çağırır. Yeniden Derleme hedefi, Clean ve Derleme hedefleri çalıştırılana kadar çalışmaz. Yeniden Derleme hedefinin hiçbir görevi olmasa da, Clean hedefinin Derleme hedefinden önce çalışmasına neden olur.
Bu DefaultTargets özniteliğini açılış Project öğesine ekleyin:
XML
<ProjectDefaultTargets="Build">
Bu, Derleme hedefini varsayılan hedef olarak ayarlar.
hedefi açıkça ayarlamak için -t anahtarını kullanmadığınızdan, MSBuild varsayılan Derleme hedefini çalıştırır.
-p anahtarı AssemblyName özelliğini geçersiz kılar ve Greetingsyeni değerini verir. Bu, \Bin\ klasöründe Greetings.exeyeni bir uygulamanın oluşturulmasına neden olur.
\Bin\ klasörünün hem MSBuildSample uygulamasını hem de yeni Greetings uygulamasını içerdiğini doğrulamak için dir Binyazın.
Greetings uygulamasını test edin (örneğin, Windows'da Bin\Greetings yazarak).
Bu, verilen AssemblyName özellik değeri Greetingsolan uygulamayı kaldırmak için Clean görevini çalıştırır.
\Bin\ klasörünün boş olduğunu doğrulamak için dir Binyazın.
msbuild yazın.
Bir proje dosyası belirtilmemiş olsa da MSBuild, geçerli klasörde yalnızca bir proje dosyası olduğundan helloworld.fromscratchproj dosyasını oluşturur. Bu, MSBuildSample uygulamasının \Bin\ klasöründe oluşturulmasına neden olur.
\Bin\ klasörünün MSBuildSample uygulamasını içerdiğini doğrulamak için dir Binyazın.
Kademeli inşa etme
MSBuild'e hedef oluşturmasını yalnızca hedefin bağımlı olduğu kaynak dosyalar veya hedef dosyalar değişmişse söyleyebilirsiniz. MSBuild, dosyanın değişip değişmediğini belirlemek için zaman damgasını kullanır.
Kademeli olarak inşa etmek için
Proje dosyasında, bu öznitelikleri açılış Build hedefine ekleyin.
Komut istemine msbuild -v:d yazarak Derleme hedefini test edin.
helloworld.fromscratchproj varsayılan proje dosyası olduğunu ve Derleme'nin varsayılan hedef olduğunu unutmayın.
-v:d anahtarı, daha önce kullandığınız -verbosity:detailed'nin bir kısaltmasıdır.
Çıkışı önceden oluşturmuşsanız, şu satırlar görüntülenmelidir:
Tüm çıkış dosyaları giriş dosyalarına göre up-to-date olduğundan hedef "Derleme" atlanıyor.
Uygulamanın son oluşturulmasından bu yana kaynak dosyalardan hiçbiri değişmediğinden MSBuild Derleme hedefini atlar.
C# örneği
Aşağıdaki örnekte, bir C# uygulamasını derleyen ve çıkış dosyası adını içeren bir iletiyi kaydeden bir proje dosyası gösterilmektedir.
Kod
XML
<ProjectDefaultTargets = "Compile"><!-- Set the application name as a property --><PropertyGroup><appname>HelloWorldCS</appname></PropertyGroup><!-- Specify the inputs by type and file name --><ItemGroup><CSFileInclude = "*.cs"/></ItemGroup><TargetName="Compile"><!-- Run the C# compilation using input files of type CSFile --><CSCSources = "@(CSFile)"OutputAssembly = "$(appname).exe"><!-- Set the OutputAssembly attribute of the CSC task
to the name of the executable file that is created --><OutputTaskParameter = "OutputAssembly"ItemName = "EXEFile" /></CSC><!-- Log the file name of the output file --><MessageText="The output file is @(EXEFile)"/></Target></Project>
Visual Basic örneği
Aşağıdaki örnek, bir Visual Basic uygulamasını derleyen ve çıkış dosyası adını içeren bir mesajı günlüğe kaydeden bir proje dosyasını göstermektedir.
Kod
XML
<ProjectDefaultTargets = "Compile"><!-- Set the application name as a property --><PropertyGroup><appname>HelloWorldVB</appname></PropertyGroup><!-- Specify the inputs by type and file name --><ItemGroup><VBFileInclude = "consolehwvb1.vb"/></ItemGroup><TargetName = "Compile"><!-- Run the Visual Basic compilation using input files of type VBFile --><VBCSources = "@(VBFile)"OutputAssembly= "$(appname).exe"><!-- Set the OutputAssembly attribute of the VBC task
to the name of the executable file that is created --><OutputTaskParameter = "OutputAssembly"ItemName = "EXEFile" /></VBC><!-- Log the file name of the output file --><MessageText="The output file is @(EXEFile)"/></Target></Project>
Sırada ne var?
Visual Studio, bu kılavuzda gösterilen işlerin çoğunu otomatik olarak gerçekleştirebilir. MSBuild proje dosyalarını oluşturmak, düzenlemek, derlemek ve test etmek için Visual Studio'yu kullanmayı öğrenmek için bkz. MSBuild kullanma.
Microsoft Build Engine (MSBuild) platformunun özellikler, öğeler, görevler ve hedeflerle derlemeleri denetlemek için XML şemasına sahip bir proje dosyasını nasıl sağladığını keşfedin.
MsBuild'de sağlanan ve programınızın derlemeler gerçekleştirmesini ve projeleri incelemesini sağlamak için kullanabileceğiniz genel API yüzeyini keşfedin.