MSBuild komut satırı başvurusu

Bir proje veya çözüm dosyası oluşturmak için MSBuild.exe kullandığınızda, işlemin çeşitli yönlerini belirtmek için çeşitli anahtarlar ekleyebilirsiniz.

Her anahtar iki biçimde kullanılabilir: -switch ve /switch. Belgelerde yalnızca -switch formu gösterilir. Anahtarlar büyük/küçük harfe duyarlı değildir. MSBuild'i Windows komut istemi dışında bir kabuktan çalıştırırsanız, listelerin kabuk tarafından yorumlanmasının yerine MSBuild'e geçirilmesini sağlamak için anahtara bağımsız değişken listeleri (noktalı virgül veya virgülle ayrılmış) tek veya çift tırnak işareti gerekebilir.

Söz dizimi

MSBuild.exe [Switches] [ProjectFile]

Bağımsız değişkenler

Bağımsız değişken Açıklama
ProjectFile Belirttiğiniz proje dosyasında hedefleri oluşturur. Proje dosyası belirtmezseniz, MSBuild geçerli çalışma dizininde proj ile biten ve bu dosyayı kullanan bir dosya adı uzantısı arar. Bu bağımsız değişken için bir Visual Studio çözüm dosyası da belirtebilirsiniz.

Anahtarlar

Switch Kısa biçim Açıklama
-detailedSummary[:True veya False] -ds[:True veya False] ise True, derleme günlüğünün sonunda oluşturulan yapılandırmalar ve bunların düğümlere nasıl zamanlandığı hakkında ayrıntılı bilgileri gösterin.
-getItem:itemName,... Değerlendirmeden sonra, derlemeyi yürütmeden öğenin veya öğelerin değerini yazın ya da seçenek ya da -targets-getTargetResult seçenek kullanılırsa, derlemeden sonra değerleri yazın.
-getProperty:propertyName,... Değerlendirmeden sonra derlemeyi yürütmeden özelliğin veya özelliklerin değerini yazın ya da -targets seçenek veya -getTargetResult seçenek kullanılıyorsa derlemeden sonra değerleri yazın.
-getTargetResult:targetName,... Belirtilen hedeflerin çıkış değerlerini yazın.
-graphBuild[:True veya False] -graph[:True veya False] MSBuild'in proje grafı oluşturmasına ve oluşturmasına neden olur. Grafik oluşturmak, form bağımlılıklarına yönelik proje başvurularını tanımlamayı içerir. Bu grafiğin oluşturulması, geleneksel MSBuild zamanlamasından farklı olarak, bunlara başvuran projelerden önce proje başvuruları derlemeyi içerir. MSBuild 16 veya üzerini gerektirir.
-Yardım /? veya -h Kullanım bilgilerini görüntüleme. Aşağıdaki komut bir örnektir:

msbuild.exe -?
-ignoreProjectExtensions: extensions -Yoksay: extensions Hangi proje dosyasının derlenmek üzere olduğunu belirlerken belirtilen uzantıları yoksayın. Aşağıdaki örnekte gösterildiği gibi, birden çok uzantıyı ayırmak için noktalı virgül veya virgül kullanın:

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:cacheFile[;cacheFile2] -irc[:cacheFile[;cacheFile2] MSBuild'in derleme sonuçlarını okuyacağı giriş önbelleği dosyalarının noktalı virgülle ayrılmış listesi. olarak ayarlanırsa -isolateProjectsFalse, bunu olarak Trueayarlar.
-interactive[:True veya False] - Derlemedeki eylemlerin kullanıcıyla etkileşim kurmasına izin verildiğini gösterir. Etkileşimin beklenmediği otomatik bir senaryoda bu bağımsız değişkeni kullanmayın. -interactive değerini belirtmek, -interactive:true değerini belirtmekle aynıdır. Bir yanıt dosyasından gelen değeri geçersiz kılmak için parametresini kullanın.
-isolateProjects[:True veya MessageUponIsolationViolationFalse] -isolate[:True veya MessageUponIsolationViolationFalse] MSBuild'in her projeyi yalıtarak oluşturmasına neden olur. (veya kısa biçimiMessage) olarak ayarlandığında MessageUponIsolationViolation , anahtar sağlandığında yalnızca en üst düzey hedeflerden elde edilen sonuçlar serileştirilir-outputResultsCache. Bu seçenek, yan etkileri hesaba katılmayan önbelleğe alınmış bir hedefe bağımlılığı nedeniyle yanlış durum kullanan bir bağımlılık projesinde yalıtım ihlaline neden olan bir hedefin olasılığını azaltmaktır. (Örneğin, bir özelliğin tanımı.) Bu mod, proje grafiğinin değerlendirme zamanında statik olarak bulunabilir olmasını gerektirdiğinden daha kısıtlayıcıdır, ancak büyük bir proje kümesi oluştururken zamanlamayı iyileştirebilir ve bellek yükünü azaltabilir.
-lowPriority[:True veya False] -low[:True veya False] MSBuild'in düşük işlem önceliğine göre çalışmasına neden olur. belirtme -lowPriority , belirtmekle -lowPriority:Trueaynıdır.
-maxCpuCount[:number] -m[:number] Derleme sırasında kullanılacak en fazla eşzamanlı işlem sayısını belirtir. Bu anahtarı eklemezseniz, varsayılan değer 1'dir. Bu anahtarı bir değer belirtmeden eklerseniz, MSBuild bilgisayardaki işlemci sayısına kadar kullanır. Daha fazla bilgi için bkz . Paralel olarak birden çok proje oluşturma.

Aşağıdaki örnek, MSBuild'e üç MSBuild işlemini kullanarak derlemesini ve üç projenin aynı anda derlenmesine olanak tanır:

msbuild myproject.proj -maxcpucount:3
-noAutoResponse -noautorsp MsBuild.rsp veya Directory.Build.rsp dosyalarını otomatik olarak eklemeyin.
-nodeReuse:value -Nr:value MSBuild düğümlerinin yeniden kullanılmasını etkinleştirin veya devre dışı bırakın. Aşağıdaki değerleri belirtebilirsiniz:

- Doğru'yu seçin. Sonraki derlemelerin bunları kullanabilmesi için düğümler derleme tamamlandıktan sonra kalır (varsayılan).
- Yanlış. Derleme tamamlandıktan sonra düğümler kalmaz.

Düğüm, yürütülen bir projeye karşılık gelir. -maxcpucount anahtarını eklerseniz, birden çok düğüm eşzamanlı olarak yürütülebilir.
-nologo Başlangıç başlığını veya telif hakkı iletisini görüntülemeyin.
-preprocess[:filepath] -pp[:filepath] Bir derleme sırasında içeri aktarılacak tüm dosyaların sınırlarını işaretleyerek tek bir toplanmış proje dosyası oluşturun. Hangi dosyaların içeri aktarıldığını, hangi dosyaların içeri aktarıldığını ve derlemeye katkıda bulunan dosyaları daha kolay belirlemek için bu anahtarı kullanabilirsiniz. Bu anahtarı kullandığınızda proje oluşturulmaz.

bir filepathbelirtirseniz, toplanan proje dosyası dosyanın çıktısı olur. Aksi takdirde, çıkış konsol penceresinde görüntülenir.

öğesini kullanarak Import başka bir proje dosyasına proje dosyası ekleme hakkında bilgi için bkz . Öğeyi içeri aktarma (MSBuild) ve Nasıl yapılır: Aynı hedefi birden çok proje dosyasında kullanma.
-outputResultsCache[:cacheFile] -orc[:cacheFile] MSBuild'in derlemenin sonunda derleme sonucu önbelleklerinin içeriğini yazdığı çıktı önbellek dosyası. olarak ayarlanırsa -isolateProjectsFalse, bunu olarak Trueayarlar.
-profileEvaluation:<file> - MSBuild değerlendirmesinin profilini oluşturur ve sonucu belirtilen dosyaya yazar. Belirtilen dosyanın uzantısı '.md' ise, sonuç Markdown biçiminde oluşturulur. Aksi takdirde, sekmeyle ayrılmış bir dosya oluşturulur.
-Özellik:name=value -P:name=value Belirtilen proje düzeyi özelliklerini ayarlayın veya geçersiz kılın; burada name özellik adı ve value özellik değeridir. Aşağıdaki örnekte gösterildiği gibi her özelliği ayrı olarak belirtin veya birden çok özelliği ayırmak için noktalı virgül veya virgül kullanın:

-property:WarningLevel=2;OutDir=bin\Debug
-Geri yükleme -r Restore Gerçek hedefleri oluşturmadan önce hedefi çalıştırır.
-restoreProperty:name=value -Rp:name=value Bu proje düzeyindeki özellikleri yalnızca geri yükleme sırasında ayarlayın veya geçersiz kılın ve -property bağımsız değişkeniyle belirtilen özellikleri kullanmayın. name özellik adıdır ve value özellik değeridir. Birden çok özelliği ayırmak için noktalı virgül veya virgül kullanın veya her özelliği ayrı ayrı belirtin.
-Hedef:targets -T:targets Projede belirtilen hedefleri oluşturun. Aşağıdaki örnekte gösterildiği gibi her hedefi ayrı ayrı belirtin veya birden çok hedefi ayırmak için noktalı virgül veya virgül kullanın:

-target:PrepareResources;Compile

Bu anahtarı kullanarak herhangi bir hedef belirtirseniz, bunlar proje dosyasındaki öznitelikteki DefaultTargets hedefler yerine çalıştırılır. Daha fazla bilgi için bkz . Hedef derleme sırası ve Nasıl yapılır: Önce hangi hedefin derleneceğini belirtme.

Hedef, bir görev grubudur. Daha fazla bilgi için bkz . Hedefler.
-targets[:file] -ts[:file] Derleme işlemini gerçekten yürütmeden, kullanılabilir hedeflerin listesini belirtilen dosyaya (veya herhangi bir dosya belirtilmemişse çıkış cihazına) yazın.
-Toolsversion:version -Tv:version Özel bir araç takımı belirtir. Araç takımı, uygulama oluşturmak için kullanılan görevlerden, hedeflerden ve araçlardan oluşur. Bkz . Araç Takımı (ToolsVersion) ve Standart ve özel araç takımı yapılandırmaları.
-validate:[schema] -val[schema] Proje dosyasını doğrulayın ve doğrulama başarılı olursa projeyi oluşturun.

belirtmezseniz schema, proje varsayılan şemaya göre doğrulanır.

belirtirseniz schema, proje belirttiğiniz şemaya göre doğrulanır.

Aşağıdaki ayar bir örnektir: -validate:MyExtendedBuildSchema.xsd
-Ayrıntı:level -V:level Derleme günlüğünde görüntülenecek bilgi miktarını belirtir. Her günlükçü, olayları ilgili günlükçü için ayarladığınız ayrıntı düzeyine göre görüntüler.

Aşağıdaki ayrıntı düzeylerini belirtebilirsiniz: q[uiet], m[inimal], n[ormal] (varsayılan), d[etailed]ve diag[nostic].

Aşağıdaki ayar bir örnektir: -verbosity:quiet
-Sürüm -Ver Yalnızca sürüm bilgilerini görüntüleyin. Proje derlenmemiş.
@file Metin dosyasından komut satırı anahtarları ekleme. Birden çok dosyanız varsa, bunları ayrı olarak belirtirsiniz. Daha fazla bilgi için bkz . Yanıt dosyaları.
-warnAsError[:code[;code2] -err[:code[;code2] Hata olarak ele almak için uyarı kodlarının listesi. Birden çok uyarı kodunu ayırmak için noktalı virgül veya virgül kullanın. Tüm uyarıları hata olarak ele almak için anahtarı hiçbir değer olmadan kullanın. Bir uyarı hata olarak ele alınırsa, hedef bir uyarıymış gibi yürütülmeye devam eder, ancak genel derleme başarısız olur.

Örnek: -err:MSB4130
-warnNotAsError[:code[;code2] -noerr[:code[;code2] Hatalara yükseltilmemesi gereken uyarı kodlarının listesi. Özellikle, warnAsError anahtarı tüm uyarıları hatalara yükseltecek şekilde ayarlandıysa, warnNotAsError ile belirtilen hata kodları yükseltilmez. WarnAsError tüm uyarıları hatalara yükseltecek şekilde ayarlı değilse, bunun hiçbir etkisi olmaz. Birden çok uyarı kodunu ayırmak için noktalı virgül veya virgül kullanın.

Örnek: -noerr:MSB4130
-warnAsMessage[:code[;code2] -noWarn[:code[;code2] Düşük öneme ait iletiler olarak ele alan uyarı kodlarının listesi. Birden çok uyarı kodunu ayırmak için noktalı virgül veya virgül kullanın.

Örnek: -noWarn:MSB3026

Günlükçüler için anahtarlar

Switch Kısa biçim Açıklama
-binaryLogger[:[LogFile=]output.binlog
[; ProjectImports=[None,Embed,ZipFile]]]
-Bl Tüm derleme olaylarını sıkıştırılmış ikili dosyaya seri hale getirir. Varsayılan olarak dosya geçerli dizindedir ve msbuild.binlog olarak adlandırılır. İkili günlük, daha sonra metin günlüklerini yeniden oluşturmak için kullanılabilecek ve diğer çözümleme araçları tarafından kullanılabilen derleme işleminin ayrıntılı bir açıklamasıdır. İkili günlük genellikle en ayrıntılı metin tanılama düzeyi günlüğünden 10-20 kat daha küçüktür, ancak daha fazla bilgi içerir.

İkili günlükçü varsayılan olarak, içeri aktarılan tüm projeler ve derleme sırasında karşılaşılan hedef dosyalar dahil olmak üzere proje dosyalarının kaynak metnini toplar. İsteğe bağlı ProjectImports anahtar şu davranışı denetler:

- ProjectImports=None. Proje içeri aktarmalarını toplama.
- ProjectImports=Embed. Proje içeri aktarmalarını günlük dosyasına ekleme (varsayılan).
- ProjectImports=ZipFile. Proje dosyalarını çıkışa <>kaydedin.projectimports.zip burada <çıktı> ikili günlük dosyası adıyla aynı addır.

ProjectImports için varsayılan ayar Ekle'dir.
Not: Günlükçü .cs, .cpp vb. MSBuild dışı kaynak dosyaları toplamaz.
.binlog dosyası, bir proje/çözüm yerine bağımsız değişken olarak msbuild.exe geçirilerek "oynatılabilir". Diğer günlüğe kaydedenler, günlük dosyasındaki bilgileri özgün derleme yapılıyormuş gibi alır. İkili günlük ve kullanımları hakkında daha fazla bilgiyi şu konumdan okuyabilirsiniz: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

Örnekler:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:

parameters
-Clp:parameters Belirttiğiniz parametreleri konsol penceresinde derleme bilgilerini görüntüleyen konsol günlükçüsne geçirin. Aşağıdaki parametreleri belirtebilirsiniz:

- PerformanceSummary. Görevler, hedefler ve projelerde harcanan zamanı gösterin.
- Özet. Hata ve uyarı özetini sonunda gösterin.
- NoSummary. Sonunda hata ve uyarı özetini göstermeyin.
- ErrorsOnly. Yalnızca hataları göster.
- UyarılarOnly. Yalnızca uyarıları göster.
- NoItemAndPropertyList. Ayrıntı düzeyi olarak ayarlanırsa diagnostic, her proje derlemesinin başında görünecek öğe ve özelliklerin listesini göstermeyin.
- ShowCommandLine. İletileri göster TaskCommandLineEvent .
- ShowProjectFile. Tanılama iletilerinde proje dosyasının yolunu gösterin. Bu ayar varsayılan olarak açıktır.
- ShowTimestamp. Zaman damgasını herhangi bir iletiye ön ek olarak gösterin.
- ShowEventId. Başlatılan her olay, tamamlanmış olay ve ileti için olay kimliğini gösterin.
- ForceNoAlign. Metni konsol arabelleğinin boyutuna hizalamayın.
- DisableConsoleColor. Tüm günlük iletileri için varsayılan konsol renklerini kullanın.
- DisableMPLogging. Çok işlemcili olmayan modda çalışırken çıkışın çok işlemcili günlük stilini devre dışı bırakın.
- EnableMPLogging. Çok işlemcili olmayan modda çalışırken bile çok işlemcili günlük stilini etkinleştirin. Bu günlük stili varsayılan olarak açıktır.
- ForceConsoleColor. Konsol desteklemese bile ANSI konsol renklerini kullanın.
- Ayrıntı düzeyi. Bu günlükçü için -verbosity ayarını geçersiz kılın.

Aşağıdaki örnekte gösterildiği gibi, birden çok parametreyi ayırmak için noktalı virgül kullanın:

-consoleloggerparameters:PerformanceSummary;NoSummary -verbosity:minimal

Varsayılan konsol günlükçü normal ayrıntı düzeyindedir ve bir Summaryiçerir.
-Distributedfilelogger -Dfl Her MSBuild düğümünün derleme çıkışını kendi dosyasına günlükleyin. Bu dosyaların ilk konumu geçerli dizindir. Varsayılan olarak, dosyalar MSBuild<NodeId>.log olarak adlandırılır. Dosyaların konumunu ve fileLogger için diğer parametreleri belirtmek için -fileLoggerParameters anahtarını kullanabilirsiniz.

Bir günlük dosyasını -fileLoggerParameters anahtarını kullanarak adlandırdığınızda, dağıtılmış günlükçü bu adı şablon olarak kullanır ve her düğüm için bir günlük dosyası oluştururken düğüm kimliğini bu ada ekler.
-distributedLogger:

central logger

forwarding logger
-Dl:central loggerforwarding logger Her düğüme farklı bir günlükçü örneği ekleyerek MSBuild'den olayları günlüğe kaydetme. Birden çok günlükçü belirtmek için günlükçüleri ayrı ayrı belirtin.

Günlükçü söz dizimini bir günlükçü belirtmek için kullanırsınız. Günlükçü söz dizimi için -logger anahtarına bakın.

Aşağıdaki örneklerde bu anahtarın nasıl kullanılacağı gösterilmektedir:

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger

[number]
-fl[number] Derleme çıkışını geçerli dizindeki tek bir dosyaya günlüğe kaydeder. belirtmezseniznumber, çıkış dosyası msbuild.log olarak adlandırılır. belirtirseniznumber, çıkış dosyası msbuild<n>.log olarak adlandırılır; burada <n> olurnumber. Number 1'den 9'a kadar bir basamak olabilir.

Dosyanın konumunu ve fileLogger için diğer parametreleri belirtmek için -fileLoggerParameters anahtarını kullanabilirsiniz.
-fileLoggerParameters[number]:

parameters
-flp[ number]: parameters Dosya günlükçü ve dağıtılmış dosya günlükçü için ek parametreleri belirtir. Bu anahtarın varlığı, karşılık gelen -filelogger[number] anahtarının mevcut olduğunu gösterir. Number 1'den 9'a kadar bir basamak olabilir.

-consoleloggerparameters için listelenen tüm parametreleri kullanabilirsiniz. Aşağıdaki parametrelerden birini veya daha fazlasını da kullanabilirsiniz:

- LogFile. Derleme günlüğünün yazıldığı günlük dosyasının yolu. Dağıtılmış dosya günlükçü bu yolu günlük dosyalarının adlarına ön ek olarak ekler.
- Ekle'ye bakın. Derleme günlüğünün günlük dosyasına eklenip eklenmeyeceğini veya üzerine yazılmasını belirler. Anahtarı ayarladığınızda, derleme günlüğü günlük dosyasına eklenir. Anahtar mevcut olmadığında, var olan bir günlük dosyasının içeriğinin üzerine yazılır.
Örnek: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Açık true bir ayar veya false ayar eklerseniz, ayardan bağımsız olarak günlük eklenir. Ekleme anahtarını eklemezseniz, günlüğün üzerine yazılır.
Bu durumda dosyanın üzerine yazılır: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
Bu durumda, dosya eklenir: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
Bu durumda, dosya eklenir: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- Kodlama. Dosyanın kodlamasını belirtir (örneğin, UTF-8, Unicode veya ASCII).

Aşağıdaki örnek, uyarılar ve hatalar için ayrı günlük dosyaları oluşturur:

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

Aşağıdaki örneklerde diğer olasılıklar gösterilmektedir:

-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8

-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

-flp1:warningsonly;logfile=msbuild.wrn

-flp2:errorsonly;logfile=msbuild.err
-Günlükçü:

logger
-L:logger MSBuild'den olayları günlüğe kaydetmek için kullanılacak günlükçü'leri belirtir. Birden çok günlükçü belirtmek için günlükçüleri ayrı ayrı belirtin.

için loggeraşağıdaki söz dizimini kullanın: [``LoggerClass``,]``LoggerAssembly``[;``LoggerParameters``]

için LoggerClassaşağıdaki söz dizimini kullanın: [``PartialOrFullNamespace``.]``LoggerClassName

Derlemede tam olarak bir günlükçü varsa günlükçü sınıfını belirtmeniz gerekmez.

için LoggerAssemblyaşağıdaki söz dizimini kullanın: {``AssemblyName``[,``StrongName``] &#124;AssemblyFile``}

Günlükçü parametreleri isteğe bağlıdır ve tam olarak girdiğiniz gibi günlükçüye geçirilir.

Aşağıdaki örneklerde -logger anahtarı kullanılır.

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger -noconlog Varsayılan konsol günlükçüsüsü'nü devre dışı bırakın ve konsolda olayları günlüğe kaydetmeyin.
-terminalLogger[:auto,on,off] -tl[:auto,on,off] Terminal günlükçüsüsü'ni etkinleştirin veya devre dışı bırakın. Terminal günlükçü, konsolda gerçek zamanlı olarak, projeye göre mantıksal olarak düzenlenmiş ve eyleme dönüştürülebilir bilgileri vurgulamak için tasarlanmış gelişmiş derleme çıkışı sağlar. Terminal günlükçü'lerini yalnızca standart çıkış yeniden yönlendirilmediyse kullanmak için belirtin auto (veya bağımsız değişken olmadan seçeneğini kullanın). Çıktıyı ayrıştırmayın veya başka bir şekilde sonraki sürümlerde değişmeden kalmasına güvenmeyin. Bu seçenek MSBuild 17.8 ve sonraki sürümlerde kullanılabilir.

Örnek 1

Aşağıdaki örnek, MyProject.proj projesinin hedefini oluştururrebuild.

MSBuild.exe MyProject.proj -t:rebuild

Örnek 2

daha karmaşık derlemeler gerçekleştirmek için MSBuild.exe kullanabilirsiniz. Örneğin, bir çözümde belirli projelerin belirli hedeflerini oluşturmak için bunu kullanabilirsiniz. Aşağıdaki örnek projeyi NotInSolutionFolder yeniden oluşturur ve NewFolder çözüm klasöründeki projesini InSolutionFoldertemizler.

msbuild SlnFolders.sln -t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean

Ayrıca bkz.