Aracılığıyla paylaş


dotnet build

Bu makale şunlar için geçerlidir: ✔️ .NET 6 SDK ve sonraki sürümler

Veri Akışı Adı

dotnet build - Proje, çözüm veya dosya tabanlı bir uygulama ve tüm bağımlılıklarını oluşturur.

Özet

dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
    [--artifacts-path <ARTIFACTS_DIR>]  [-bl|--binaryLogger:<FILE>]
    [-c|--configuration <CONFIGURATION>] [--disable-build-servers]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
    [--no-self-contained] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
    [-p|--property:<PROPERTYNAME>=<VALUE>] [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--sc|--self-contained] [--source <SOURCE>]
    [--tl:[auto|on|off]] [ --ucr|--use-current-runtime]
    [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

dotnet build -h|--help

Açıklama

dotnet build komutu projeyi, çözümü veya dosya tabanlı uygulamayı ve bağımlılıklarını bir ikili dosya kümesinde 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:

  • 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 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.

Örtük geri yükleme

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 restoreve dotnet newgibi dotnet builddotnet rundotnet testdotnet publishgeri yükleme gerektiren tüm komutlar tarafından örtük olarak çalıştırıldığından, komutunu çalıştırmanız dotnet pack 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, dotnet restore) seçenekleri destekler--source. gibi -skısa form seçenekleri desteklenmez.

Yürütülebilir dosya veya kitaplık çıktısı

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 Librarydeğiştirin. Bir kitaplığın IL DLL'i giriş noktaları içermez ve yürütülemez.

MSBuild

dotnet build projeyi, çözümü veya dosya tabanlı uygulamayı derlemek için MSBuild kullanır. 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 -p günlükçü tanımlama gibi -l 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 buildotomatik olarak çalıştırıldığında dotnet run gibi -property:property=value bağımsız değişkenlere uyulmuyor.

Çalıştırma dotnet build , çalıştırmaya dotnet msbuild -restoreeşdeğerdir; ancak çıktının varsayılan ayrıntı düzeyi farklıdır.

İş yükü bildirimi indirmeleri

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.

Bağımsız değişkenler

PROJECT | SOLUTION | FILE

Üzerinde çalışacak proje veya çözüm ya da C# (dosya tabanlı uygulama) dosyası. Bir dosya belirtilmezse, MSBuild geçerli dizinde bir proje veya çözüm arar.

  • PROJECT, C#, F# veya Visual Basic proje dosyasının yolu ve dosya adı ya da C#, F# veya Visual Basic proje dosyası içeren bir dizinin yoludur.

  • SOLUTION, çözüm dosyasının yolu ve dosya adıdır (.sln veya .slnx uzantısı) ya da çözüm dosyası içeren bir dizinin yoludur.

  • FILE , .NET 10'a eklenen bir bağımsız değişkendir. Dosya tabanlı bir uygulamanın yolu ve dosya adı. Dosya tabanlı uygulamalar, ilgili proje (.csproj) dosyası olmadan oluşturulan ve çalıştırılan tek bir dosyanın içinde yer alır. Daha fazla bilgi için bkz. Dosya tabanlı C# uygulamaları oluşturma.

Seçenekler

  • -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 olarak win-x86ayarlar. 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.

  • -bl|--binaryLogger:<FILE>

    İkili günlükçü'leri etkinleştirir ve isteğe bağlı olarak çıkış dosyası adını belirtir.
    Hiçbir dosya adı sağlanmadıysa, varsayılan değer geçerli dizindedir msbuild.binlog .

    İkili günlük ayrıntılı derleme bilgilerini içerir ve MSBuild Yapılandırılmış Günlük Görüntüleyicisi ile açılabilir.

    dotnet build -bl
    dotnet build -bl:build-log.binlog
    
  • -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.

  • --interactive

    Komutun durmasına ve kullanıcı girişini veya eylemini beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamak için.

  • --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

    Uygulamanızı çerçeveye bağımlı bir uygulama olarak yayımlayın. Uygulamanızı çalıştırmak için hedef makineye uyumlu bir .NET çalışma zamanı yüklenmelidir.

  • -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ığıyla TargetFrameworks ) 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--output için çözüm düzeyi 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 olarak linux-x64ayarlar. 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.

  • --sc|--self-contained

    Çalışma zamanının hedef makineye yüklenmesi gerekmemesi için .NET çalışma zamanını uygulamanızla yayımlayın.

  • --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çü'lerinin 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.

  • --ucr|--use-current-runtime

    Geçerli çalışma zamanını hedef çalışma zamanı olarak kullanın.

  • -v|--verbosity <LEVEL>

    Komutun ayrıntı düzeyini ayarlar. İzin verilen değerler , q[uiet], m[inimal], n[ormal]ve d[etailed]değerleridirdiag[nostic]. Daha fazla bilgi için bkz. LoggerVerbosity.

  • --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 $(VersionPrefix)ayrılmış olarak ayarlanır$(VersionSuffix).

  • -?|-h|--help

    komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.

Örnekler

  • Proje ve bağımlılıkları oluşturma:

    dotnet build
    
  • Dosya tabanlı uygulama oluşturma:

    dotnet build MyProject.cs
    

    .NET SDK 10.0.100'e dosya tabanlı uygulama desteği eklendi.

  • 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 -pprojeyi derleyin ve 1.2.3.4 sürümünü derleme parametresi olarak ayarlayın:

    dotnet build -p:Version=1.2.3.4