dotnet build
Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler
dotnet build
- Bir projeyi ve tüm bağımlılıklarını oluşturur.
dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
[--disable-build-servers]
[--force] [--interactive] [--no-dependencies] [--no-incremental]
[--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
[-o|--output <OUTPUT_DIRECTORY>]
[-p|--property:<PROPERTYNAME>=<VALUE>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[--self-contained [true|false]] [--source <SOURCE>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
komutu, dotnet build
projeyi ve bağımlılıklarını bir ikili dosya kümesi halinde oluşturur. İkili dosyalar, projenin kodunu .dll uzantısına sahip Ara Dil (IL) dosyalarında içerir. Proje türüne ve ayarlarına bağlı olarak, aşağıdakiler gibi başka dosyalar da dahil edilebilir:
- Proje türü .NET Core 3.0 veya üzerini hedefleyen bir yürütülebilir dosyaysa, uygulamayı çalıştırmak için kullanılabilecek yürütülebilir dosya.
- .pdb uzantısıyla hata ayıklama için kullanılan sembol dosyaları.
- Uygulamanın veya kitaplığın bağımlılıklarını listeleyen bir .deps.json dosyası.
- Bir uygulama için paylaşılan çalışma zamanını ve sürümünü belirten bir .runtimeconfig.json dosyası.
- Projenin bağımlı olduğu diğer kitaplıklar (proje başvuruları veya NuGet paket başvuruları aracılığıyla).
.NET Core 3.0'dan önceki sürümleri hedefleyen yürütülebilir projeler için, NuGet'ten kitaplık bağımlılıkları genellikle çıkış klasörüne KOPYALANMAZ. Bunlar, çalışma zamanında NuGet genel paketler klasöründen çözümlenir. Bunu göz önünde bulundurarak ürününün dotnet build
çalışması için başka bir makineye aktarılmaya hazır değildir. Dağıtılabilir bir uygulama sürümü oluşturmak için uygulamayı yayımlamanız gerekir (örneğin, dotnet publish komutuyla). Daha fazla bilgi için bkz . .NET Uygulama Dağıtımı.
.NET Core 3.0 ve üzerini hedefleyen yürütülebilir projeler için kitaplık bağımlılıkları çıkış klasörüne kopyalanır. Bu, yayımlamaya özgü başka bir mantık (web projeleri gibi) yoksa derleme çıkışının dağıtılabilir olması gerektiği anlamına gelir.
Derleme için uygulamanızın bağımlılıklarını listeleyen project.assets.json dosyası gerekir. Dosya yürütülürken dotnet restore
oluşturulur. Varlıklar dosyası yerinde olmadığında, araçlar başvuru derlemelerini çözümleyemez ve bu da hatalara neden olur.
, , dotnet publish
ve dotnet pack
gibi dotnet test
dotnet run
dotnet build
dotnet new
geri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığından, komutunu çalıştırmanız dotnet restore
gerekmez. Örtük geri yüklemeyi devre dışı bırakmak için seçeneğini kullanın --no-restore
.
Komutudotnet restore
, Azure DevOps Services'teki sürekli tümleştirme derlemeleri veya geri yüklemenin ne zaman gerçekleştiğini açıkça denetlemesi gereken derleme sistemleri gibi açıkça geri yüklemenin anlamlı olduğu bazı senaryolarda hala yararlıdır.
NuGet akışlarını yönetme hakkında bilgi için belgelere dotnet restore
bakın.
Bu komut, uzun biçimde geçirildiğinde (örneğin, --source
) seçenekleri desteklerdotnet restore
. gibi -s
kısa form seçenekleri desteklenmez.
Projenin yürütülebilir olup olmadığı proje dosyasındaki <OutputType>
özelliği tarafından belirlenir. Aşağıdaki örnekte yürütülebilir kod üreten bir proje gösterilmektedir:
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
Kitaplık oluşturmak için özelliğini atla <OutputType>
veya değerini olarak Library
değiştirin. Bir kitaplığın IL DLL'i giriş noktaları içermez ve yürütülemez.
dotnet build
projeyi derlemek için MSBuild kullanır, böylece hem paralel hem de artımlı derlemeleri destekler. Daha fazla bilgi için bkz . Artımlı Derlemeler.
komutu, seçeneklerine ek olarak, dotnet build
özellikleri ayarlama veya -l
günlükçü tanımlama gibi -p
MSBuild seçeneklerini kabul eder. Bu seçenekler hakkında daha fazla bilgi için bkz . MSBuild Komut Satırı Başvurusu. İsterseniz dotnet msbuild komutunu da kullanabilirsiniz.
Not
tarafından dotnet run
otomatik olarak çalıştırıldığında dotnet build
gibi -property:property=value
bağımsız değişkenlere uyulmuyor.
Çalıştırma dotnet build
, çalıştırmaya dotnet msbuild -restore
eşdeğerdir; ancak çıktının varsayılan ayrıntı düzeyi farklıdır.
Bu komutu çalıştırdığınızda, iş yükleri için reklam bildirimlerini zaman uyumsuz bir arka plan indirme işlemi başlatır. Bu komut tamamlandığında indirme işlemi hala çalışıyorsa indirme durdurulur. Daha fazla bilgi için bkz . Reklam bildirimleri.
PROJECT | SOLUTION
Derlenecek proje veya çözüm dosyası. Bir proje veya çözüm dosyası belirtilmezse, MSBuild geçerli çalışma dizininde proj veya sln ile biten dosya uzantısına sahip bir dosya arar ve bu dosyayı kullanır.
-a|--arch <ARCHITECTURE>
Hedef mimariyi belirtir. Bu, sağlanan değerin varsayılan RID ile birleştirildiği Çalışma Zamanı Tanımlayıcısı'nı (RID) ayarlamak için bir kısaltma söz dizimidir. Örneğin, bir
win-x64
makinede, belirterek--arch x86
RID değerini olarakwin-x86
ayarlar. Bu seçeneği kullanırsanız, seçeneğini kullanmayın-r|--runtime
. .NET 6 Preview 7 sürümünden itibaren kullanılabilir.
--artifacts-path <ARTIFACTS_DIR>
Yürütülen komuttaki tüm derleme çıktı dosyaları, projeyle ayrılmış olarak belirtilen yolun altındaki alt klasörlere gider. Daha fazla bilgi için bkz . Yapıt Çıktı Düzeni. .NET 8 SDK'sı ile kullanılabilir.
-c|--configuration <CONFIGURATION>
Derleme yapılandırmasını tanımlar. Çoğu proje için varsayılan değer şeklindedir
Debug
, ancak projenizdeki derleme yapılandırma ayarlarını geçersiz kılabilirsiniz.
--disable-build-servers
Komutu kalıcı derleme sunucularını yoksaymaya zorlar. Bu seçenek, derleme önbelleğinin tüm kullanımını devre dışı bırakmak için tutarlı bir yol sağlar ve bu da bir derlemeyi sıfırdan zorlar. Önbelleklere güvenmeyen bir derleme, önbellekler herhangi bir nedenle bozulduğunda veya yanlış olduğunda kullanışlıdır. .NET 7 SDK'sı ile kullanılabilir.
-f|--framework <FRAMEWORK>
Belirli bir çerçeve için derlenir. Çerçeve proje dosyasında tanımlanmalıdır. Örnekler:
net7.0
,net462
.--force
Son geri yükleme başarılı olsa bile tüm bağımlılıkların çözümlenmesine zorlar. Bu bayrağın belirtilmesi, project.assets.json dosyasını silmekle aynıdır.
-?|-h|--help
komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.
--interactive
Komutun durmasına ve kullanıcı girişini veya eylemini beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamak için. .NET Core 3.0 SDK'sı ile kullanılabilir.
--no-dependencies
Projeden projeye (P2P) başvuruları yoksayar ve yalnızca belirtilen kök projeyi oluşturur.
--no-incremental
Derlemeyi artımlı derleme için güvenli değil olarak işaretler. Bu bayrak artımlı derlemeyi kapatır ve projenin bağımlılık grafiğinin temiz bir şekilde yeniden derlenmesini zorlar.
--no-restore
Derleme sırasında örtük geri yükleme yürütmez.
--nologo
Başlangıç başlığını veya telif hakkı iletisini görüntülemez.
--no-self-contained
Uygulamayı çerçeveye bağımlı bir uygulama olarak yayımlar. Uygulamayı çalıştırmak için hedef makineye uyumlu bir .NET çalışma zamanı yüklenmelidir. .NET 6 SDK'sı ile kullanılabilir.
-o|--output <OUTPUT_DIRECTORY>
Yerleşik ikili dosyaların yerleştirildiği dizin. Belirtilmezse, varsayılan yol şeklindedir
./bin/<configuration>/<framework>/
. Birden çok hedef çerçeveye sahip projeler için (özelliği aracılığıylaTargetFrameworks
) bu seçeneği ne zaman belirttiğinizi de tanımlamanız--framework
gerekir..NET 7.0.200 SDK ve üzeri
Bu komutu bir çözümde çalıştırırken seçeneğini belirtirseniz
--output
, CLI çıkış yolunun belirsiz semantiği nedeniyle bir uyarı (7.0.200'de bir hata) yayar.--output
Tüm yerleşik projelerin tüm çıkışları, hem çok hedefli projelerle hem de doğrudan ve geçişli bağımlılıkların farklı sürümlerine sahip projelerle uyumlu olmayan belirtilen dizine kopyalandığından bu seçeneğe izin verilmez. Daha fazla bilgi için bkz. Derlemeyle ilgili komutlar için çözüm düzeyi--output
seçeneği artık geçerli değil.
--os <OS>
Hedef işletim sistemini (OS) belirtir. Bu, sağlanan değerin varsayılan RID ile birleştirildiği Çalışma Zamanı Tanımlayıcısı'nı (RID) ayarlamak için bir kısaltma söz dizimidir. Örneğin, bir
win-x64
makinede, belirterek--os linux
RID değerini olaraklinux-x64
ayarlar. Bu seçeneği kullanırsanız, seçeneğini kullanmayın-r|--runtime
. .NET 6'dan itibaren kullanılabilir.
-p|--property:<PROPERTYNAME>=<VALUE>
Bir veya daha fazla MSBuild özelliği ayarlar. Noktalı virgülle sınırlandırılmış birden çok özellik belirtin veya şu seçeneği yineleyerek:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
-r|--runtime <RUNTIME_IDENTIFIER>
Hedef çalışma zamanını belirtir. Çalışma Zamanı Tanımlayıcılarının (RID) listesi için RID kataloğuna bakın. Bu seçeneği .NET 6 SDK
--self-contained
ile kullanıyorsanız veya--no-self-contained
kullanın. Belirtilmezse, varsayılan değer geçerli işletim sistemi ve mimari için derlemedir.--self-contained [true|false]
Çalışma zamanının hedef makineye yüklenmesi gerekmemesi için .NET çalışma zamanını uygulamayla yayımlar. Varsayılan değer,
true
çalışma zamanı tanımlayıcısının belirtilip belirtilmediğindedir. .NET 6'dan itibaren kullanılabilir.--source <SOURCE>
Geri yükleme işlemi sırasında kullanılacak NuGet paket kaynağının URI'sini.
--tl:[auto|on|off]
Derleme çıkışı için terminal günlükçüsunun kullanılıp kullanılmayacağını belirtir. Varsayılan değer, terminal günlüğünü etkinleştirmeden önce ortamı doğrulayan değeridir
auto
. Ortam denetimi, terminalin modern çıkış özelliklerini kullanabileceğini ve yeni günlükçü'leri etkinleştirmeden önce yeniden yönlendirilmiş standart çıkış kullanmadığını doğrular.on
ortam denetimini atlar ve terminal günlüğünü etkinleştirir.off
ortam denetimini atlar ve varsayılan konsol günlükçüsüsü kullanır.Terminal günlükçü, geri yükleme aşamasını ve ardından derleme aşamasını gösterir. Her aşamada, şu anda oluşturulan projeler terminalin en altında görünür. Derlemeye alınan her proje, hem şu anda derlenen MSBuild hedefini hem de bu hedefe harcanan süreyi oluşturur. Derleme hakkında daha fazla bilgi edinmek için bu bilgileri arayabilirsiniz. Bir projenin oluşturulması tamamlandığında, şunları yakalayan tek bir "derleme tamamlandı" bölümü yazılır:
- Oluşturulan projenin adı.
- Hedef çerçeve (çok hedefliyse).
- Bu derlemenin durumu.
- Bu derlemenin birincil çıkışı (köprüdür).
- Bu proje için oluşturulan tüm tanılamalar.
Bu seçenek .NET 8'den itibaren kullanılabilir.
-v|--verbosity <LEVEL>
Komutun ayrıntı düzeyini ayarlar. İzin verilen değerler ,
m[inimal]
,n[ormal]
,d[etailed]
vediag[nostic]
değerleridirq[uiet]
. Varsayılan değer:minimal
. Varsayılan olarak, MSBuild tüm ayrıntı düzeylerinde uyarılar ve hatalar görüntüler. Uyarıları dışlamak için kullanın/property:WarningLevel=0
. Daha fazla bilgi için bkz LoggerVerbosity . ve WarningLevel.--use-current-runtime, --ucr [true|false]
öğesini
RuntimeIdentifier
makinenizden birine göre taşınabilirRuntimeIdentifier
bir platforma ayarlar. Bu, vePublishReadyToRun
gibiPublishSingleFile
PublishSelfContained
PublishAot
SelfContained
birRuntimeIdentifier
gerektiren özelliklerde örtük olarak gerçekleşir. Özelliği false olarak ayarlanırsa, bu örtük çözüm artık gerçekleşmez.--version-suffix <VERSION_SUFFIX>
Projeyi oluştururken kullanılacak özelliğin
$(VersionSuffix)
değerini ayarlar. Bu yalnızca özellik ayarlanmadıysa$(Version)
çalışır. Ardından,$(Version)
ile birleştirilmiş olarak, tireyle$(VersionSuffix)
ayrılmış olarak ayarlanır$(VersionPrefix)
.
Proje ve bağımlılıkları oluşturma:
dotnet build
Release yapılandırmasını kullanarak bir proje ve bağımlılıkları oluşturun:
dotnet build --configuration Release
Belirli bir çalışma zamanı için bir proje ve bağımlılıkları oluşturun (bu örnekte Linux):
dotnet build --runtime linux-x64
Geri yükleme işlemi sırasında projeyi derleyin ve belirtilen NuGet paket kaynağını kullanın:
dotnet build --source c:\packages\mypackages
MSBuild seçeneğini kullanarak
-p
projeyi derleyin ve 1.2.3.4 sürümünü derleme parametresi olarak ayarlayın:dotnet build -p:Version=1.2.3.4
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: