.net SDK projeleri için MSBuild başvurusu

bu sayfa, .net projelerini yapılandırmak için kullanabileceğiniz MSBuild özellikleri ve öğeleri için bir başvurudur.

Not

bu sayfa devam eden bir çalışmadır ve .net SDK için tüm kullanışlı MSBuild özelliklerini listelemez. ortak MSBuild özelliklerinin bir listesi için bkz. ortak MSBuild özellikleri.

Çerçeve özellikleri

aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

TargetFramework

TargetFrameworkÖzelliği, uygulamanın hedef Framework sürümünü belirtir. Geçerli hedef çerçeve takma adların listesi için bkz. SDK stili projelerde hedef çerçeveler.

<PropertyGroup>
  <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

Daha fazla bilgi için bkz. SDK stili projelerde hedef çerçeveler.

Targetçerçeveler

TargetFrameworksUygulamanızın birden çok platformu hedeflemesini istediğinizde özelliğini kullanın. Geçerli hedef çerçeve takma adların listesi için bkz. SDK stili projelerde hedef çerçeveler.

Not

TargetFramework(Tekil) belirtilmişse bu özellik yoksayılır.

<PropertyGroup>
  <TargetFrameworks>netcoreapp3.1;net462</TargetFrameworks>
</PropertyGroup>

Daha fazla bilgi için bkz. SDK stili projelerde hedef çerçeveler.

Netstandardımplicitpackageversion

Not

Bu özellik yalnızca kullanan projeler için geçerlidir netstandard1.x . Kullanan projeler için uygulanmaz netstandard2.x .

NetStandardImplicitPackageVersionMetapackage sürümünden daha düşük bir çerçeve sürümü belirtmek istediğinizde özelliğini kullanın. Aşağıdaki örnekteki proje dosyası hedefler, netstandard1.3 ancak 1.6.0 sürümünü kullanır NETStandard.Library .

<PropertyGroup>
  <TargetFramework>netstandard1.3</TargetFramework>
  <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>

Derleme özniteliği özellikleri

Generateassemblyınfo

GenerateAssemblyInfoÖzelliği AssemblyInfo proje için öznitelik oluşturmayı denetler. true varsayılan değerdir. falseDosya oluşturmayı devre dışı bırakmak için kullanın:

<PropertyGroup>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>

Generatedassemblyınfofile ayarı oluşturulan dosyanın adını denetler.

Değer olduğunda GenerateAssemblyInfo true , paketle ilgili proje özellikleri , derleme özniteliklerine dönüştürülür. Aşağıdaki tabloda, öznitelikleri üreten proje özellikleri listelenmektedir. Ayrıca, bu oluşturmayı öznitelik başına temelinde devre dışı bırakmak için kullanabileceğiniz özellikleri listeler, örneğin:

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild özelliği Derleme özniteliği Öznitelik oluşturmayı devre dışı bırakma özelliği
Company AssemblyCompanyAttribute GenerateAssemblyCompanyAttribute
Configuration AssemblyConfigurationAttribute GenerateAssemblyConfigurationAttribute
Copyright AssemblyCopyrightAttribute GenerateAssemblyCopyrightAttribute
Description AssemblyDescriptionAttribute GenerateAssemblyDescriptionAttribute
FileVersion AssemblyFileVersionAttribute GenerateAssemblyFileVersionAttribute
InformationalVersion AssemblyInformationalVersionAttribute GenerateAssemblyInformationalVersionAttribute
Product AssemblyProductAttribute GenerateAssemblyProductAttribute
AssemblyTitle AssemblyTitleAttribute GenerateAssemblyTitleAttribute
AssemblyVersion AssemblyVersionAttribute GenerateAssemblyVersionAttribute
NeutralLanguage NeutralResourcesLanguageAttribute GenerateNeutralResourcesLanguageAttribute

Bu ayarlarla ilgili notlar:

  • AssemblyVersion ve FileVersion sonek olmadan değerine varsayılan değer $(Version) . Örneğin, ise, $(Version) 1.2.3-beta.4 değer olacaktır 1.2.3 .
  • InformationalVersion Varsayılan değer olarak değeridir $(Version) .
  • $(SourceRevisionId)Özelliği varsa, öğesine eklenir InformationalVersion . Kullanarak bu davranışı devre dışı bırakabilirsiniz IncludeSourceRevisionInInformationalVersion .
  • Copyright``Descriptionayrıca NuGet meta verileri için de özellikler kullanılır.
  • Configuration, varsayılan olarak Debug , tüm MSBuild hedefleriyle paylaşılır. Bunu, --configuration dotnet Örneğin DotNet Packgibi komutlar seçeneği aracılığıyla ayarlayabilirsiniz.
  • bazı özelliklerden bazıları NuGet paketi oluşturulurken kullanılır. Daha fazla bilgi için bkz. paket özellikleri.

.NET Framework geçiş

.NET Framework proje şablonları, bu derleme bilgileri öznitelikleri ayarlanmış bir kod dosyası oluşturur. Dosya genellikle .\Properties\AssemblyInfo.cs veya .\Properties\AssemblyInfo.vb konumunda bulunur. SDK stili projeler, bu dosyayı proje ayarlarına göre sizin için oluşturur. Her ikisine birden sahip olamaz. Kodunuzu .NET 5 (veya .NET Core 3,1) veya sonraki bir sürüme taşırken, aşağıdakilerden birini yapın:

  • Derleme bilgisi özniteliklerini içeren geçici kod dosyasının oluşturulmasını GenerateAssemblyInfo proje dosyanızda olarak ayarlayarak devre dışı bırakın false . Bu, AssemblyInfo dosyanızı tutmanıza olanak sağlar.
  • AssemblyInfoDosyadaki ayarları proje dosyasına geçirin ve ardından AssemblyInfo dosyayı silin.

GeneratedAssemblyInfoFile

GeneratedAssemblyInfoFileÖzelliği, oluşturulan derleme bilgi dosyasının göreli veya mutlak yolunu tanımlar. Varsayılan olarak [proje-adı] adlı bir dosya olarak adlandırılır. AssemblyInfo. [CS | vb] $(IntermediateOutputPath) (genellikle obj) dizininde.

<PropertyGroup>
  <GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>

Paket özellikleri

PackageId PackageVersion PackageIcon Title Description Projenizden oluşturulan paketi betimleyen,,, ve gibi özellikleri belirtebilirsiniz. Bu ve diğer özellikler hakkında daha fazla bilgi için bkz. Pack Target.

<PropertyGroup>
  ...
  <PackageId>ClassLibDotNetStandard</PackageId>
  <Version>1.0.0</Version>
  <Authors>John Doe</Authors>
  <Company>Contoso</Company>
</PropertyGroup>

aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

AppendTargetFrameworkToOutputPath

AppendTargetFrameworkToOutputPathÖzelliği, hedef çerçeve adının (TFI) çıkış yolunun ( OutputPathtarafından tanımlanan) eklenip eklenmeyeceğini denetler. .NET SDK, hedef çerçeveyi otomatik olarak ekler ve varsa, çalışma zamanı tanımlayıcısını çıkış yoluna ekler. AppendTargetFrameworkToOutputPathİçin ayarı false , TFI 'nin çıkış yoluna eklenmesini engeller. Ancak, çıkış yolunda TFı olmadan, birden çok derleme yapıtları birbirinin üzerine yazılabilir.

Örneğin, bir .NET 5 uygulaması için çıkış yolu, ' dan ' ı bin\Debug\net5.0 bin\Debug aşağıdaki ayarla olarak değişir:

<PropertyGroup>
  <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>

Appendruntimeıdentifiertooutputpath

AppendRuntimeIdentifierToOutputPathÖzelliği, çalışma zamanı TANıMLAYıCıSıNıN (RID) çıkış yolunun sonuna eklenip eklenmeyeceğini denetler. .NET SDK, hedef çerçeveyi otomatik olarak ekler ve varsa, çalışma zamanı tanımlayıcısını çıkış yoluna ekler. AppendRuntimeIdentifierToOutputPathİçin ayarı false , RID 'nin çıkış yoluna eklenmesini önler.

Örneğin, bir .NET 5 uygulaması ve bir RID 'si için win10-x64 çıkış yolu, ' dan ' ı bin\Debug\net5.0\win10-x64 bin\Debug\net5.0 aşağıdaki ayarla olarak değişir:

<PropertyGroup>
  <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>

CopyLocalLockFileAssemblies

CopyLocalLockFileAssembliesÖzelliği, diğer kitaplıklara bağımlılıkları olan eklenti projeleri için yararlıdır. bu özelliği olarak ayarlarsanız true , herhangi bir NuGet paket bağımlılığı çıkış dizinine kopyalanır. Diğer bir deyişle, dotnet build herhangi bir makinede kendi eklentisini çalıştırmak için çıkışını kullanabilirsiniz.

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

İpucu

Alternatif olarak, dotnet publish sınıf kitaplığını yayımlamak için kullanabilirsiniz. Daha fazla bilgi için bkz. DotNet Publish.

ErrorOnDuplicatePublishOutputFiles

özelliği, yayımlama çıkışında yinelenen dosyaları algılayan MSBuild SDK'nın NETSDK1148 hatası oluşturması ile ilgilidir, ancak kaldırılan ErrorOnDuplicatePublishOutputFiles dosyaları belirleye değildir. Hatanın ErrorOnDuplicatePublishOutputFiles false oluşturularak oluşturulmasını istemiyorsanız özelliğini olarak ayarlayın.

<PropertyGroup>
  <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>

Bu özellik .NET 6'da tanıtıldı.

EnablePackageValidation

EnablePackageValidationözelliği, görevden sonra pakette bir dizi doğrulamayı pack sağlar. Daha fazla bilgi için bkz. paket doğrulaması.

<PropertyGroup>
  <EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>

Bu özellik .NET 6'da tanıtıldı.

GenerateRuntimeConfigurationFiles

özelliği, GenerateRuntimeConfigurationFiles çalışma zamanı yapılandırma seçeneklerinin runtimeconfig.template.json dosyasından [appname].runtimeconfig.json dosyasına kopyalanmış olup olmadığını kontrol eder. Runtimeconfig.json dosyası gerektiren uygulamalar için, yani olan uygulamalar için bu OutputType özellik varsayılan olarak Exe true kullanılır.

<PropertyGroup>
  <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>

IsPublishable

özelliği IsPublishable hedefin Publish çalışmasına izin verir. Bu özellik yalnızca kullanan işlemleri etkiler. * proj dosyaları ve Publish hedef, örneğin dotnet publish. Bu, hedefi kullanan Visual Studio yayımlamayı PublishOnly etkilemez. true varsayılan değerdir.

Bu özellik, yayımlanacak dotnet publish projelerin otomatik seçimine izin veren bir çözüm dosyası üzerinde çalıştırmanız için kullanışlıdır.

<PropertyGroup>
  <IsPublishable>false</IsPublishable>
</PropertyGroup>

PreserveCompilationContext

özelliği, derleme zamanında kullanılan ayarları kullanarak çalışma zamanında daha fazla kod derlemek için PreserveCompilationContext derlenmiş veya yayımlanmış bir uygulama sağlar. Derleme zamanında başvurulan derlemeler, çıkış dizininin ref alt dizinine kopyalanır. Başvuru derlemelerinin adları, derleyiciye geçirilen seçeneklerle birlikte uygulamanın .deps.json dosyasında depolanır. Bu bilgileri ve özelliklerini kullanarak DependencyContext.CompileLibraries DependencyContext.CompilationOptions edinebilirsiniz.

Bu işlevsellik, Razor dosyalarının çalışma zamanı derlemesi ASP.NET Core MVC ve Razor sayfaları tarafından çoğunlukla dahili olarak kullanılır.

<PropertyGroup>
  <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>

PreserveCompilationReferences

özelliği PreserveCompilationReferences PreserveCompilationContext özelliğine benzer, ancak başvurulan derlemeleri .deps.json dosyasına değil yalnızca yayımlama dizinine kopyalar.

<PropertyGroup>
  <PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>

Daha fazla bilgi için bkz. Razor SDK özellikleri.

Rollforward

özelliği, RollForward birden çok çalışma zamanı sürümü kullanılabilir olduğunda uygulamanın çalışma zamanı seçmesini sağlar. Bu değer ayar olarak .runtimeconfig.json'a rollForward çıkıştır.

<PropertyGroup>
  <RollForward>LatestMinor</RollForward>
</PropertyGroup>

Aşağıdaki RollForward değerlerden biri olarak ayarlayın:

Değer Açıklama
Minor Belirtilmemişse varsayılan değer .
İstenen alt sürüm eksikse, en düşük düzeydeki sürüme ilet. İstenen ikincil sürüm varsa, LatestPatch ilke kullanılır.
Major İstenen ana sürüm eksikse, bir sonraki kullanılabilir yüksek büyük sürüme ve en düşük alt sürüme ilet. İstenen ana sürüm varsa, Minor ilke kullanılır.
LatestPatch En yüksek düzeltme eki sürümüne ilet. Bu değer, ikincil sürüm iletmeyi devre dışı bırakır.
LatestMinor İstenen alt sürüm mevcut olsa bile en yüksek düzeyde alt sürüme ilet.
LatestMajor İstenen ana mevcut olsa bile, en yüksek büyük ve en yüksek düzeydeki sürüme ilet.
Disable İletme, yalnızca belirtilen sürüme bağlama. En son düzeltme eklerine iletme özelliğini devre dışı bıraktığından bu ilke genel kullanım için önerilmez. Bu değer yalnızca test için önerilir.

Daha fazla bilgi için bkz. Ileri sarma davranışını denetleme.

RuntimeFrameworkVersion

RuntimeFrameworkVersionözelliği, yayımlarken kullanmak üzere çalışma zamanının sürümünü belirtir. Çalışma zamanı sürümünü belirtin:

<PropertyGroup>
  <RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>

Çerçeveye bağımlı bir uygulama yayımlarken bu değer gereken en düşük sürümü belirtir. Kendi içinde bir uygulama yayımlarken, bu değer gereken tam sürümü belirtir.

RuntimeIdentifier

özelliği, RuntimeIdentifier proje için tek bir çalışma zamanı tanımlayıcısı (RID) belirtmenize olanak sağlar. RID, kendi içinde dağıtım yayımlamayı sağlar.

<PropertyGroup>
  <RuntimeIdentifier>ubuntu.16.04-x64</RuntimeIdentifier>
</PropertyGroup>

RuntimeIdentifiers

özelliği, RuntimeIdentifiers proje için çalışma zamanı tanımlayıcılarının (RID) noktalı virgülle ayrılmış listesini belirtmenize olanak sağlar. Birden çok çalışma zamanı için yayımlamanız gerekirse bu özelliği kullanın. RuntimeIdentifiers , grafikte doğru varlıkların olduğundan emin olmak için geri yükleme zamanında kullanılır.

İpucu

RuntimeIdentifier (tekil) yalnızca tek bir çalışma zamanı gerektiğinde daha hızlı derlemeler sağlar.

<PropertyGroup>
  <RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>

SatelliteResourceLanguages

özelliği, SatelliteResourceLanguages derleme ve yayımlama sırasında uydu kaynak derlemelerini korumak istediğiniz dilleri belirtmenize olanak sağlar. Birçok NuGet paketi, ana pakette yerelleştirilmiş kaynak uydu derlemelerini içerir. Yerelleştirilmiş kaynaklar gerektirmeyen bu NuGet projeleri için, yerelleştirilmiş derlemeler derlemeyi gereksiz yere şişirebilir ve çıkış boyutunu yayımlar. özelliğini proje dosyanıza ekleyerek, derleme ve yayımlama çıkışına yalnızca belirttiğiniz diller için SatelliteResourceLanguages yerelleştirilmiş derlemeler dahil edilir. Örneğin, aşağıdaki proje dosyasında yalnızca İngilizce (ABD) kaynak uydu derlemeleri korunur.

<PropertyGroup>
  <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
</PropertyGroup>

Not

Bu özelliği projesinde yerelleştirilmiş kaynak uydu derlemeleriyle NuGet paketine başvuracak şekilde belirtmeniz gerekir.

UseAppHost

özelliği, UseAppHost bir dağıtım için yerel yürütülebilir dosya oluşturulıp oluşturula olmadığını kontrol eder. Kendi içinde dağıtımlar için yerel yürütülebilir dosya gereklidir.

.NET Core 3.0 ve sonraki sürümlerinde, varsayılan olarak çerçeveye bağımlı bir yürütülebilir dosya oluşturulur. UseAppHostYürütülebilir dosyanın false neslini devre dışı bırakmak için özelliğini olarak ayarlayın.

<PropertyGroup>
  <UseAppHost>false</UseAppHost>
</PropertyGroup>

Dağıtım hakkında daha fazla bilgi için bkz. .NET uygulama dağıtımı.

Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

ve gibi C# derleyici LangVersion Nullable seçenekleri, proje dosyanıza MSBuild olarak da belirtilebilir. Daha fazla bilgi için bkz. C# derleyici seçenekleri.

DisableImplicitFrameworkDefines

özelliği, SDK'nın .NET projesi için hedef çerçeve ve platform için ön işlemci sembolleri üretip DisableImplicitFrameworkDefines oluşturmay olmadığını kontrol eder. Bu özellik olarak ayarlanmamış (varsayılan değerdir) önişlemci sembolleri false aşağıdakiler için oluşturulur:

  • Sürüm olmadan çerçeve ( NETFRAMEWORK , NETSTANDARD , NET )
  • Sürümü olan çerçeve ( NET48 , NETSTANDARD2_0 , NET6_0 )
  • En düşük sürüm sınırı olan çerçeve ( NET48_OR_GREATER , NETSTANDARD2_0_OR_GREATER , NET6_0_OR_GREATER )

Hedef çerçeve bilinen adlarına ve bu örtülü ön işlemci simgelerine ilişkin daha fazla bilgi için bkz. Hedef çerçeveler.

Ayrıca, projede işletim sistemine özgü bir hedef çerçeve belirtirsiniz net6.0-android (örneğin), aşağıdaki ön işlemci sembolleri oluşturulur:

  • Sürüm olmadan platform ( ANDROID , IOS , WINDOWS )
  • Sürümü olan platform ( IOS15_1 )
  • Sürüm alt sınırı olan platform ( IOS15_1_OR_GREATER )

İşletim sistemine özgü hedef çerçeve bilinen adlar hakkında daha fazla bilgi için bkz. İşletim sistemine özgü TFM'ler.

Son olarak, hedef çerçeveniz eski hedef çerçeveler için destek anlamına gelirse, bu eski çerçeveler için ön işlemci sembolleri yayımlar. Örneğin, net6.0 için destek anlamına gelir net5.0 ve bu nedenle geri dön. .netcoreapp1.0 Bu nedenle, bu hedef çerçevelerin her biri için sürüm alt sınırı simgesine sahip Çerçeve tanımlanır.

BelgelerDosyası

özelliği, DocumentationFile kitaplığınıza ilişkin belgeleri içeren XML dosyası için bir dosya adı belirtmenize olanak sağlar. IntelliSense'in belgeleriniz ile düzgün çalışması için dosya adı derleme adıyla aynı olmalı ve derlemeyle aynı dizinde olmalıdır. Bu özelliği belirtmezseniz ama GenerateDocumentationFile'i olarak ayarlarsanız, belge dosyasının adı varsayılan olarak derlemenizin adıyla ancak bir dosya true uzantısıyla.xml olur. Bu nedenle, bu özelliği atlamak ve bunun yerine GenerateDocumentationFile özelliğini kullanmak genellikle daha kolaydır.

Bu özelliği belirtir ancak GenerateDocumentationFile olarak false ayarlanırsa, derleyici bir belge dosyası oluşturmaz. Bu özelliği belirtir ve GenerateDocumentationFile özelliğini atlarsanız,derleyici bir belge dosyası oluşturmaz.

<PropertyGroup>
  <DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>

EmbeddedResourceUseDependentUponConvention

özelliği, kaynak bildirim dosyası adlarının kaynak dosyalarıyla birlikte bulunan kaynak dosyalarında tür EmbeddedResourceUseDependentUponConvention bilgilerinden oluşturulıp oluşturula olmadığını tanımlar. Örneğin, Form1.resx, Form1.cs ile aynı klasörde yer alıyorsa ve olarak ayarlanırsa, oluşturulan .resources dosyası adını EmbeddedResourceUseDependentUponConvention true Form1.cs içinde tanımlanan ilk türden alır. Örneğin, MyNamespace.Form1 Form1.cs içinde tanımlanan ilk tür ise, oluşturulan dosya adı MyNamespace.Form1.resources şeklindedir.

Not

Bir öğe için , veya meta verileri belirtilirse, bu kaynak dosyası için oluşturulan bildirim dosyası LogicalName adı bunun yerine bu meta verileri temel alan bir ManifestResourceName DependentUpon EmbeddedResource addır.

Varsayılan olarak, yeni bir .NET projesinde bu özellik olarak true ayarlanır. olarak ayarlanırsa ve proje dosyasındaki öğe için hiçbir , veya meta veri belirtilmezse, kaynak bildirimi dosya adı projenin kök ad alanını ve false LogicalName ManifestResourceName DependentUpon EmbeddedResource .resx dosyasının göreli dosya yolunu temel almaktadır. Daha fazla bilgi için bkz. Kaynak bildirimi dosyalarının adı.

<PropertyGroup>
  <EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>

EnablePreviewFeatures

özelliği, EnablePreviewFeatures projenizin özniteliğiyle birlikte tüm API'lere veya derlemelere bağlı olup olmadığını RequiresPreviewFeaturesAttribute tanımlar. Bu öznitelik, API'nin veya derlemenin, kullanmakta olan SDK sürümü için önizlemede olduğu düşünülen özellikleri kullandığını ifade etmek için kullanılır. Önizleme özellikleri desteklenmiyor ve gelecekteki bir sürümde kaldırılabilir. Önizleme özelliklerinin kullanımını etkinleştirmek için özelliğini olarak True ayarlayın.

<PropertyGroup>
  <EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>

Bir proje olarak ayarlanmış bu özelliği True içerdiğinde, AssemblyInfo.cs dosyasına aşağıdaki derleme düzeyi özniteliği eklenir:

[assembly: RequiresPreviewFeatures]

Çözümleyici, bu özniteliğin olarak ayarlanmaz projelerin bağımlılıkları üzerinde EnablePreviewFeatures mevcut olması durumuyla ilgili olarak uyarıyor. True

Önizleme derlemelerini gönderen kitaplık yazarlarının bu özelliği olarak ayarlaması True gerekir. Bir derlemenin önizleme ve önizleme dışı API'ler karışımıyla birlikte sevki yapılması gerekirse aşağıdaki GenerateRequiresPreviewFeaturesAttribute bölümüne bakın.

GenerateDocumentationFile

özelliği, GenerateDocumentationFile derleyicinin kitaplığınız için bir XML belge dosyası oluşturıp oluşturmay olmadığını kontrol eder. Bu özelliği olarak ayarlasanız ve DocumentationFile özelliği aracılığıyla bir dosya adı belirtmezseniz, oluşturulan XML dosyası derlemeniz ile aynı çıkış dizinine yerleştirilir ve aynı dosya adına (ancak bir.xmluzantısına true sahip).

<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

Kod açıklamalarından belge oluşturma hakkında daha fazla bilgi için bkz. XML belge açıklamalarını (C#), KODUNUZU XML (Visual Basic)ile belgeleme veya KODUNUZU XML (F#) ile belgeleme.

GenerateRequiresPreviewFeaturesAttribute

özelliği GenerateRequiresPreviewFeaturesAttribute EnablePreviewFeatures özelliğiyle yakından ilişkili. Kitaplığınız önizleme özellikleri kullanıyorsa ancak derlemenin tamamının önizleme özelliklerini etkinleştirmesini gerektiren özniteliğiyle işaretlenirse, bu özelliği RequiresPreviewFeaturesAttribute olarak False ayarlayın.

<PropertyGroup>
    <EnablePreviewFeatures>True</EnablePreviewFeatures>
    <GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>

Önemli

özelliğini olarak GenerateRequiresPreviewFeaturesAttribute ayariyorsanız, önizleme özelliklerine güvenen tüm genel False API'leri ile dekore etmek istediğinizden emin RequiresPreviewFeaturesAttribute olun.

OptimizeImplicitlyTriggeredBuild

Derleme sürelerini hızlandırmak için, boş değer atlanabilir analiz dahil olmak üzere kod analizini Visual Studio örtülü olarak tetiklenen derlemeler. Visual Studio, testleri çalıştırarak örtülü derlemeyi tetikler. Ancak, örtülü derlemeler yalnızca olduğunda TreatWarningsAsErrors true iyileştirilmiştir. olarak ayarlamış ancak yine de örtülü olarak tetiklenen derlemelerin iyileştirilmiş olması TreatWarningsAsErrors true için olarak OptimizeImplicitlyTriggeredBuild True ayarlanmıştır. Örtülü olarak tetiklenen derlemeler için derleme iyileştirmeyi kapatmak için olarak OptimizeImplicitlyTriggeredBuild False ayarlayın.

<PropertyGroup>
    <OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>

Varsayılan öğe ekleme özellikleri

Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

Daha fazla bilgi için bkz. Varsayılan dahil ve dışlar.

DefaultItemExcludes

Globların dahil, dışlama ve kaldırma dışında tutulacak dosya ve klasörlere ait glob desenlerini tanımlamak DefaultItemExcludes için özelliğini kullanın. Varsayılan olarak, ./bin ve ./obj klasörleri glob desenlerinden dışlanmış olur.

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>

DefaultExcludesInProjectFolder

proje klasöründeki dahil, hariç ve kaldır globların dışında tutulacak dosya ve klasörler için glob desenlerini tanımlamak üzere DefaultExcludesInProjectFolder özelliğini kullanın. Varsayılan olarak, .git ve .vs gibi nokta ( ) ile başlanan klasörler . glob desenlerinden dışlanmaz.

Bu özellik, yalnızca proje klasöründeki dosya ve klasörleri göz önünde DefaultItemExcludes bulundurarak özelliğine çok benzer. Bir glob deseni, proje klasörünün dışındaki öğeleri göreli bir yol ile kasten eşleyene zaman özelliği DefaultExcludesInProjectFolder yerine özelliğini DefaultItemExcludes kullanın.

<PropertyGroup>
  <DefaultExcludesInProjectFolder>$(DefaultExcludesInProjectFolder);**/myprefix*/**</DefaultExcludesInProjectFolder>
</PropertyGroup>

EnableDefaultItems

özelliği EnableDefaultItems derleme öğelerinin, katıştırılmış kaynak öğelerinin ve öğelerin None projeye örtülü olarak dahil olup olmadığını kontrol eder. true varsayılan değerdir. Tüm örtülü EnableDefaultItems dosya ekleme özelliğini devre dışı bırakmak için özelliğini olarak false ayarlayın.

<PropertyGroup>
  <EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>

EnableDefaultCompileItems

özelliği, EnableDefaultCompileItems derleme öğelerinin projeye örtülü olarak dahil olup olmadığını kontrol eder. true varsayılan değerdir. EnableDefaultCompileItems*.cs ve diğer dil uzantısı dosyalarının örtülü false eklenmesini devre dışı bırakmak için özelliğini olarak ayarlayın.

<PropertyGroup>
  <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>

EnableDefaultEmbeddedResourceItems

özelliği, EnableDefaultEmbeddedResourceItems eklenmiş kaynak öğelerinin projeye örtülü olarak dahil olup olmadığını kontrol eder. true varsayılan değerdir. Ekli EnableDefaultEmbeddedResourceItems kaynak dosyalarının örtülü olarak false eklenmesini devre dışı bırakmak için özelliğini olarak ayarlayın.

<PropertyGroup>
  <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>

EnableDefaultNoneItems

özelliği, EnableDefaultNoneItems öğelerin (derleme sürecinde rolü olan dosyalar) projeye örtülü olarak dahil None olup olmadığını kontrol eder. true varsayılan değerdir. Öğelerin örtülü EnableDefaultNoneItems olarak false eklenmesini devre dışı bırakmak için özelliğini olarak None ayarlayın.

<PropertyGroup>
  <EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>

Kod analizi özellikleri

Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

AnalysisLevel

özelliği, AnalysisLevel bir .NET sürümüne göre çalıştıracak bir dizi kod çözümleyicisi belirtmenize olanak sağlar. .NET 5'te başlayan her .NET sürümü bir dizi kod analizi kuralına sahip. Bu kümede, bu sürüm için varsayılan olarak etkin olan kurallar kodunuzu analiz eder.

Örneğin, .NET 6'ya yükseltin ancak varsayılan kod analizi kuralları kümesinde değişiklik yapmak istemiyorsanız olarak AnalysisLevel 5 ayarlayın.

<PropertyGroup>
  <AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>

İsteğe bağlı olarak, .NET 6'dan başlayarak, bu özellik için kuralların ne kadar agresif bir şekilde etkinleştireceklerini belirten bir bileşik değer belirtabilirsiniz. Bileşik değerler, <version>-<mode> <mode> değerin AnalysisMode değerlerinden biri olduğu formunu alır. Aşağıdaki örnek, kod çözümleyicilerinin önizleme sürümünü kullanır ve önerilen kural kümesine olanak sağlar.

<PropertyGroup>
  <AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>

Not

veya olarak ayarlanır AnalysisLevel 5-<mode> ve ardından .NET 6 SDK'sı yüklenir ve projenizi yeniden derlemeniz gerekirse 5.0-<mode> beklenmeyen yeni derleme uyarılarıyla karşılaşabilirsiniz. Daha fazla bilgi için bkz. dotnet/roslyn-analyzers#5679.

Varsayılan değer:

  • Projeniz .NET 5 veya sonraki bir 5 veya sonraki bir imtiyazını hedeflerse veya AnalysisMode özelliğini eklediyebilirsiniz, varsayılan değer latest olur.
  • Aksi takdirde, açıkça proje dosyasına eklemedikçe bu özellik atlanır.

Aşağıdaki tabloda belirtebilirsiniz değerleri gösterir.

Değer Anlamı
latest Yayımlanan en son kod çözümleyicileri kullanılır. Bu varsayılan seçenektir.
latest-<mode> Yayımlanan en son kod çözümleyicileri kullanılır. değeri, <mode> hangi kuralların etkinleştiril olduğunu belirler.
preview En son kod çözümleyicileri, önizlemede olsalar bile kullanılır.
preview-<mode> En son kod çözümleyicileri, önizlemede olsalar bile kullanılır. değeri, <mode> hangi kuralların etkinleştiril olduğunu belirler.
6.0 .NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır.
6.0-<mode> .NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır. değeri, <mode> hangi kuralların etkinleştiril olduğunu belirler.
6 .NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır.
6-<mode> .NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır. değeri, <mode> hangi kuralların etkinleştiril olduğunu belirler.
5.0 .NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır.
5.0-<mode> .NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır. değeri, <mode> hangi kuralların etkinleştiril olduğunu belirler.
5 .NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır.
5-<mode> .NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar mevcut olsa bile kullanılır. değeri, <mode> hangi kuralların etkinleştiril olduğunu belirler.

Not

  • .NET 5 ve önceki sürümlerde bu özellik yalnızca kod kalitesini (CAXXXX) etkiler. .NET 6'dan başlayarak EnforceCodeStyleInBuild olarak ayarlanırsa, bu özellik kod stili true (IDEXXXX) kurallarını da etkiler.
  • için bileşik değer ayarsanız AnalysisLevel AnalysisMode belirtmenize gerek yoktur. Ancak, bunu AnalysisLevel yaptıysanız, üzerinde AnalysisMode önceliklidir.
  • Bu özelliğin bir proje SDK'sı başvurusunda yer alan projelerde kod analizi üzerinde etkisi yoktur; örneğin, Microsoft.CodeAnalysis.NetAnalyzers .NET Framework eski NuGet paketi.

AnalysisLevel<Category>

.NET 6'da tanıtılmıştır, bu özellik AnalysisLevelile aynıdır, ancak yalnızca belirli bir kod analizi kuralları kategorisi için geçerlidir. Bu özellik, belirli bir kategori için kod çözümleyicilerinin farklı bir sürümünü veya diğer kural kategorilerine göre farklı bir düzeyde kuralları etkinleştirme veya devre dışı bırakmanızı sağlar. Belirli bir kural kategorisi için bu özelliği atlarsanız, varsayılan olarak AnalysisLevel değeri kullanılır. Kullanılabilir değerler AnalysisLevelile aynıdır.

<PropertyGroup>
  <AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
  <AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>

Aşağıdaki tabloda her kural kategorisi için özellik adı listelemektedir.

Özellik adı Kural kategorisi
<AnalysisLevelDesign> Tasarım kuralları
<AnalysisLevelDocumentation> Belge kuralları
<AnalysisLevelGlobalization> Genelleştirme kuralları
<AnalysisLevelInteroperability> Taşınabilirlik ve birlikte çalışabilirlik kuralları
<AnalysisLevelMaintainability> Bakım kuralları
<AnalysisLevelNaming> Adlandırma kuralları
<AnalysisLevelPerformance> Performans kuralları
<AnalysisLevelSingleFile> Tek dosyalı uygulama kuralları
<AnalysisLevelReliability> Güvenilirlik kuralları
<AnalysisLevelSecurity> Güvenlik kuralları
<AnalysisLevelStyle> Kod stili (IDEXXXX) kuralları
<AnalysisLevelUsage> Kullanım kuralları

AnalysisMode

.NET 5'den başlayarak , .NET SDK'sı tüm "CA" kod kalitesi kurallarıyla birlikte gelir. Varsayılan olarak, her .NET yayında yalnızca bazı kurallar derleme uyarıları olarak etkinleştirilir. AnalysisModeözelliği, varsayılan olarak etkin olan kural kümelerini özelleştirmenize olanak sağlar. Kuralları tek tek geri çıkararak daha agresif bir analiz moduna veya belirli kuralları kabul etmek için daha tutucu bir analiz moduna geçebilirsiniz. Örneğin, tüm kuralları derleme uyarıları olarak etkinleştirmek için değerini olarak All ayarlayın.

<PropertyGroup>
  <AnalysisMode>All</AnalysisMode>
</PropertyGroup>

Aşağıdaki tabloda .NET 5 ve .NET 6'daki kullanılabilir seçenek değerleri yer alır. Etkinleştirecekleri kural sayısına göre artan düzende listelenir.

.NET 6+ değeri .NET 5 değeri Anlamı
None AllDisabledByDefault Tüm kurallar devre dışı bırakılır. Bunları etkinleştirmek için tek tek kuralları seçerek kabul etmek.
Default Default Bazı kuralların derleme uyarıları olarak etkinleştirildikten sonra IDE önerileri Visual Studio varsayılan mod, kalanları ise devre dışı bırakılır.
Minimum Yok Moddan daha agresif Default bir mod. Derleme zorlaması için kesinlikle önerilen bazı öneriler, derleme uyarıları olarak etkinleştirilir.
Recommended Yok Derleme uyarıları olarak daha fazla Minimum kuralın etkinleştiril olduğu moddan daha agresif mod.
All AllEnabledByDefault Tüm kurallar derleme uyarıları olarak etkinleştirilir. Bunları devre dışı bırakmak için tek tek kuralları seçmeli olarak devre dışı 3.

Not

  • .NET 5'te bu özellik yalnızca kod kalitesi (CAXXXX) kurallarını etkiler. .NET 6'dan başlayarak EnforceCodeStyleInBuild olarak ayarlanırsa, bu özellik kod stili true (IDEXXXX) kurallarını da etkiler.
  • AnalysisLeveliçin bileşik değer kullanırsanız (örneğin, <AnalysisLevel>5-recommended</AnalysisLevel> ) bu özelliği tamamen atabilirsiniz. Ancak, her iki özelliği de AnalysisLevel belirtirsiniz, üzerinde AnalysisMode önceliklidir.
  • olarak ayarlanırsa ve veya olarak ayarlanırsa AnalysisMode AllEnabledByDefault ve ardından AnalysisLevel 5 .NET 6 SDK'yı yükp projenizi yeniden derlemeniz gerekirse beklenmeyen yeni 5.0 derleme uyarılarıyla karşılaşabilirsiniz. Daha fazla bilgi için bkz. dotnet/roslyn-analyzers#5679.
  • Bu özelliğin bir proje SDK'sı başvurusunda yer alan projelerde kod analizi üzerinde etkisi yoktur; örneğin, Microsoft.CodeAnalysis.NetAnalyzers .NET Framework eski NuGet paketi.

AnalysisMode<Category>

.NET 6'da tanıtılmıştır, bu özellik AnalysisModeile aynıdır, ancak yalnızca belirli bir kod analizi kuralları kategorisi için geçerlidir. Bu özellik, kuralları diğer kural kategorilerine göre farklı bir düzeyde etkinleştirmeniz veya devre dışı bırakmanızı sağlar. Belirli bir kural kategorisi için bu özelliği atlarsanız varsayılan olarak AnalysisMode değeri kullanılır. Kullanılabilir değerler AnalysisModeile aynıdır.

<PropertyGroup>
  <AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>

Aşağıdaki tabloda her kural kategorisi için özellik adı listelemektedir.

Özellik adı Kural kategorisi
<AnalysisModeDesign> Tasarım kuralları
<AnalysisModeDocumentation> Belge kuralları
<AnalysisModeGlobalization> Genelleştirme kuralları
<AnalysisModeInteroperability> Taşınabilirlik ve birlikte çalışabilirlik kuralları
<AnalysisModeMaintainability> Bakım kuralları
<AnalysisModeNaming> Adlandırma kuralları
<AnalysisModePerformance> Performans kuralları
<AnalysisModeSingleFile> Tek dosyalı uygulama kuralları
<AnalysisModeReliability> Güvenilirlik kuralları
<AnalysisModeSecurity> Güvenlik kuralları
<AnalysisModeStyle> Kod stili (IDEXXXX) kuralları
<AnalysisModeUsage> Kullanım kuralları

CodeAnalysisTreatWarningsAsErrors

özelliği, CodeAnalysisTreatWarningsAsErrors kod kalitesi analizi uyarılarının (CAxxxx) uyarı olarak kabul edip edip derlemeyi bozması gerekip gerek olmadığını yapılandırmaya olanak sağlar. Projelerinizi derleme -warnaserror sırasında bayrağını kullanırsanız, .NET kod kalitesi analiz uyarıları da hata olarak kabul edilir. Kod kalitesi analizi uyarılarının hata olarak kabul edilebilir olması istemiyorsanız proje CodeAnalysisTreatWarningsAsErrors dosyanıza MSBuild false özelliğini olarak ayarlayın.

<PropertyGroup>
  <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>

EnableNETAnalyzers

.NET 5 veya sonraki bir sürümü hedef alan projeler için .NET kod kalitesi analizi varsayılan olarak etkindir. .NET 5+ SDK kullanarak geliştiriyorsanız, özelliğini olarak ayarerek .NET'in önceki sürümlerini hedef alan SDK stili projeler için .NET kod EnableNETAnalyzers analizini true etkinleştirebilirsiniz. Herhangi bir projede kod analizini devre dışı bırakmak için bu özelliği olarak false ayarlayın.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Not

Bu özellik özellikle .NET 5+ SDK'sı yerleşik çözümleyicileri için geçerlidir. Bir kod analizi paketi NuGet kullanılmamalı.

EnforceCodeStyleInBuild

.NET kod stili analizi, tüm .NET projeleri için derlemede varsayılan olarak devre dışıdır. özelliğini olarak ayarerek .NET projeleri için kod stili EnforceCodeStyleInBuild analizini true etkinleştirebilirsiniz.

<PropertyGroup>
  <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>

Uyarı veya hata olarak yapılandırılan tüm kod stili kuralları derleme ve rapor ihlalleri üzerinde yürütülür.

Not

.NET 6 (veya .NET 6 içeren Visual Studio 2022) yüklüyse ancak projenizi Visual Studio 2019 kullanarak derlemek istiyorsanız, özelliği olarak ayarlanmışsa yeni CS8032 uyarıları EnforceCodeStyleInBuild true görebilir. Uyarıları çözmek için, 5.0.404 global.jsongirdisi ekleyerek projenizi derlemek için .NET SDK sürümünü belirtebilirsiniz (bu durumda, gibi bir şey).

_SkipUpgradeNetAnalyzersNuGetWarning

özelliği, en son .NET SDK'sı kod çözümleyicileriyle karşılaştırıldığında güncel olmayan bir NuGet paketinden kod çözümleyicileri kullanıyorsanız bir uyarı aıp almama durumu _SkipUpgradeNetAnalyzersNuGetWarning yapılandırmaya olanak sağlar. Uyarı aşağıdakine benzer:

.NET SDK'sı, 'Microsoft.CodeAnalysis.NetAnalyzers' paketinin '5.0.3' sürümünden daha yeni '6.0.0' sürümüne sahip çözümleyicilere sahip. Bu paket başvurularını güncelleştirin veya kaldırın.

Bu uyarıyı kaldırmak ve NuGet paketinde kod çözümleyicilerinin sürümünü kullanmaya devam etmek için proje _SkipUpgradeNetAnalyzersNuGetWarning true dosyanıza olarak ayarlayın.

<PropertyGroup>
  <_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>

Çalışma zamanı yapılandırma özellikleri

Bazı çalışma zamanı davranışlarını, uygulamanın proje dosyasında MSBuild özellikleri belirterek yapılandırabilirsiniz. Çalışma zamanı davranışını yapılandırmanın diğer yolları hakkında bilgi için bkz. Çalışma zamanı yapılandırma ayarları.

ConcurrentGarbageCollection

özelliği ConcurrentGarbageCollection arka plan (eşzamanlı) çöp toplamanın etkin olup olmadığını yapılandırıyor. Arka plan çöp toplamayı false devre dışı bırakmak için değerini olarak ayarlayın. Daha fazla bilgi için bkz. Arka Plan GC.

<PropertyGroup>
  <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>

InvariantGlobalization

özelliği, InvariantGlobalization uygulamanın genelleştirme-sabit modunda çalıştırıp çalışmay olmadığını yapılandırarak kültüre özgü verilere erişimi olmadığı anlamına gelir. Değeri true genelleştirme sabit modunda çalıştıracak şekilde ayarlayın. Daha fazla bilgi için bkz. Sabit mod.

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

PredefinedCulturesOnly

.NET 6 ve sonraki sürümlerde özelliği, genelleştirme sabit modu etkinleştirildiğinde uygulamaların sabit kültür dışında kültürler oluşturıp PredefinedCulturesOnly oluşturamaycazı yapılandırmaktadır. Varsayılan değer: true. Genelleştirme sabit modunda yeni bir kültür oluşturulmasına izin false vermek için değerini olarak ayarlayın.

<PropertyGroup>
  <PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>

Daha fazla bilgi için bkz. Genelleştirme-sabit modunda kültür oluşturma ve büyük/küçük harf eşleme.

RetainVMGarbageCollection

özelliği, silinen bellek kesimlerini gelecekte kullanmak veya serbest bırakmak üzere bekleme listesine koymak için atık RetainVMGarbageCollection toplayıcıyı yapılandırmaktadır. değeri olarak true ayarlanıyor, atık toplayıcıya kesimleri bekleme listesine koymalarını söyler. Daha fazla bilgi için bkz. VM'yi koruma.

<PropertyGroup>
  <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>

ServerGarbageCollection

özelliği, ServerGarbageCollection uygulamanın iş istasyonu çöp toplama mı yoksa sunucu çöp toplama mı kullandığını yapılandırıyor. Sunucu çöp toplamayı true kullanmak için değerini olarak ayarlayın. Daha fazla bilgi için bkz. İş istasyonu ve sunucu.

<PropertyGroup>
  <ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>

ThreadPoolMaxThreads

özelliği, ThreadPoolMaxThreads çalışan iş parçacığı havuzu için en fazla iş parçacığı sayısını yapılandırıyor. Daha fazla bilgi için bkz. En fazla iş parçacığı.

<PropertyGroup>
  <ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>

ThreadPoolMinThreads

özelliği, ThreadPoolMinThreads çalışan iş parçacığı havuzu için en az iş parçacığı sayısını yapılandırıyor. Daha fazla bilgi için bkz. Minimum iş parçacıkları.

<PropertyGroup>
  <ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>

TieredCompilation

özelliği, TieredCompilation tam zamanında (JIT) derleyicinin katmanlı derlemeyi kullandığını yapılandırmaktadır. Katmanlı derlemeyi devre false dışı bırakmak için değerini olarak ayarlayın. Daha fazla bilgi için bkz. Katmanlı derleme.

<PropertyGroup>
  <TieredCompilation>false</TieredCompilation>
</PropertyGroup>

TieredCompilationQuickJit

özelliği, TieredCompilationQuickJit JIT derleyicinin hızlı JIT kullandığını yapılandırıyor. Hızlı false JIT'yi devre dışı bırakmak için değerini olarak ayarlayın. Daha fazla bilgi için bkz. Hızlı JIT.

<PropertyGroup>
  <TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>

TieredCompilationQuickJitForLoops

özelliği, TieredCompilationQuickJitForLoops JIT derleyicinin döngüler içeren yöntemlerde hızlı JIT'yi kullandığını yapılandırıyor. Döngü içeren true yöntemlerde hızlı JIT'yi etkinleştirmek için değerini olarak ayarlayın. Daha fazla bilgi için bkz. Döngüler için Hızlı JIT.

<PropertyGroup>
  <TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>

Başvuru özellikleri

Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

AssetTargetFallback

özelliği, AssetTargetFallback proje başvuruları ve proje paketleri için ek uyumlu çerçeve sürümleri NuGet sağlar. Örneğin, kullanarak bir paket bağımlılığı belirtirsiniz ancak bu paket projenizin ile uyumlu varlıklar içermezse PackageReference TargetFramework özelliği devreye AssetTargetFallback gelir. Başvurulan paketin uyumluluğu, içinde belirtilen her hedef çerçeve kullanılarak yeniden AssetTargetFallback denetlendi. Bu özellik kullanım dışı özelliğinin yerini PackageTargetFallback almaktadır.

özelliğini bir veya AssetTargetFallback daha fazla hedef çerçeve sürümüne ayarlayabilirsiniz.

<PropertyGroup>
  <AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>

DisableImplicitFrameworkReferences

özelliği, DisableImplicitFrameworkReferences FrameworkReference .NET Core 3.0 ve sonraki sürümlerini hedeflerken örtülü öğeleri kontrol eder. .NET Core 2.1 veya .NET Standard 2.0 ve önceki sürümleri hedeflerken, bir meta pakette paketler için örtülü PackageReference öğelerini kontrol eder. (Meta paket, yalnızca diğer paketlere bağımlılıklardan oluşan çerçeve tabanlı bir pakettir.) Bu özellik ayrıca ve gibi örtülü başvuruları da System System.Core .NET Framework.

Örtülü veya true PackageReference öğelerini devre dışı FrameworkReference bırakmak için bu özelliği olarak ayarlayın. Bu özelliği olarak true ayarsanız, yalnızca ihtiyacınız olan çerçevelere veya paketlere açık başvurular abilirsiniz.

<PropertyGroup>
  <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>

Başvurulan bir paketi geri yüklemek tüm doğrudan bağımlılıklarını ve bu bağımlılıkların tüm bağımlılıklarını yüklenir. ve gibi özellikleri belirterek paket geri yükleme özelliklerini RestorePackagesPath RestoreIgnoreFailedSources özelleştirebilirsiniz. Bu özellikler ve diğer özellikler hakkında daha fazla bilgi için bkz. hedefi geri yükleme.

<PropertyGroup>
  <RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>

ValidateExecutableReferencesMatchSelfContained

özelliği, ValidateExecutableReferencesMatchSelfContained yürütülebilir proje başvurularıyla ilgili hataları devre dışı bırakmak için kullanılabilir. .NET, kendi içinde bulunan yürütülebilir bir projenin çerçeveye bağımlı yürütülebilir bir projeye başvurdu veya tam tersi algılarsa sırasıyla NETSDK1150 ve NETSDK1151 hataları üretir. Başvuru kasıtlı olduğunda bu hataları önlemek için özelliğini ValidateExecutableReferencesMatchSelfContained olarak false ayarlayın.

<PropertyGroup>
  <ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>

WindowsSdkPackageVersion

özelliği, Windows SDK hedefleme WindowsSdkPackageVersion paketinin sürümünü geçersiz kılmak için kullanılabilir. Bu özellik .NET 5'te tanıtıldı ve bu amaç için FrameworkReference öğenin kullanımının yerini aldı.

<PropertyGroup>
  <WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>

Not

Windows SDK hedefleme paketleri .NET 5+ SDK'ya dahil olduğundan, Windows SDK sürümünü geçersiz kılmanız önerilmez. Bunun yerine, en son Windows SDK paketine başvuru yapmak için .NET SDK sürümünü güncelleştirin. Bu özellik yalnızca önizleme paketlerini kullanma veya C#/WinRT sürümünü geçersiz kılma gibi nadir durumlarda kullanılmalıdır.

Aşağıdaki özellikler, komutuyla bir uygulama başlatmak için dotnet run kullanılır:

RunArguments

RunArgumentsözelliği, çalıştırıldıkları zaman uygulamaya geçirilen bağımsız değişkenleri tanımlar.

<PropertyGroup>
  <RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>

İpucu

için seçeneğini kullanarak uygulamaya geçirilen ek bağımsız değişkenler -- belirtebilirsiniz. dotnet run

RunWorkingDirectory

RunWorkingDirectoryözelliği, içinde başlatıla uygulama işleminin çalışma dizinini tanımlar. Mutlak bir yol veya proje dizinine göre bir yol olabilir. Bir dizin belirtmezseniz, OutDir çalışma dizini olarak kullanılır.

<PropertyGroup>
  <RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>

Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:

EnableComHosting

özelliği, EnableComHosting bir derlemenin bir COM sunucusu sağladığını gösterir. olarak EnableComHosting ayarı, true EnableDynamicLoading'in olduğunu da ifade true eder.

<PropertyGroup>
  <EnableComHosting>True</EnableComHosting>
</PropertyGroup>

Daha fazla bilgi için bkz. .NET bileşenlerini COM'da açığa çıkarma.

EnableDynamicLoading

özelliği, EnableDynamicLoading bir derlemenin dinamik olarak yüklenen bir bileşen olduğunu gösterir. Bileşen, yerel bir konaktan veya eklenti olarak kullanılan bir COM kitaplığı veya COM dışı bir kitaplık olabilir. Bu özelliği olarak true ayarlamanın aşağıdaki etkileri vardır:

  • Bir .runtimeconfig.json dosyası oluşturulur.
  • RollForward olarak LatestMinor ayarlanır.
  • NuGet başvurular yerel olarak kopyalanır.
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

Oluşturulan dosya özellikleri

Aşağıdaki özellikler, oluşturulan dosyalarda kodu ilgilendirir:

DisableImplicitNamespaceImports

özelliği, .NET 6 veya sonraki bir sürümü hedef alan projelerinde Visual Basic ad alanı içeri aktarmalarını DisableImplicitNamespaceImports devre dışı bırakmak için kullanılabilir. Örtülü ad alanları, bir Visual Basic projesinde genel olarak içe aktarılan varsayılan ad alanlarıdır. Örtülü ad alanı içeri true aktarmalarını devre dışı bırakmak için bu özelliği olarak ayarlayın.

<PropertyGroup>
  <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>

ÖrtülüUsings

özelliği, .NET 6 veya sonraki bir sürümü ve ImplicitUsings C# 10 veya sonraki bir sürümü hedef alan C# projelerinde örtülü yönergeleri etkinleştirmek ve devre dışı bırakmak global using için kullanılabilir. Özellik etkinleştirildiğinde, .NET SDK'sı proje SDK'sı türüne göre varsayılan global using ad alanları kümesi için yönergeler ekler. Örtülü yönergeleri etkinleştirmek true için bu özelliği veya olarak enable global using ayarlayın. Örtülü yönergeleri devre dışı global using bırakmak için özelliğini kaldırın veya veya olarak false disable ayarlayın.

<PropertyGroup>
  <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

Not

.NET 6 veya sonraki bir sonrakini hedef alan yeni C# projeleri için şablonlar varsayılan ImplicitUsings olarak enable olarak ayarlanmıştır.

Açık bir yönerge global using tanımlamak için Using öğesi ekleyin.

Öğeler

MSBuild öğeleri derleme sistemine giriştir. Öğeler, öğe adı olan türüne göre belirtilir. Örneğin, Compile ve Reference iki yaygın öğe türü vardır. Aşağıdaki ek öğe türleri .NET SDK tarafından kullanılabilir yapılır:

Bu öğelerde ve gibi standart öğeözniteliklerini Include Update kullanabilirsiniz. Yeni Include bir öğe eklemek için kullanın ve var olan bir öğeyi değiştirmek için Update kullanın. Örneğin, Update genellikle .NET SDK tarafından örtülü olarak eklenmiş bir öğeyi değiştirmek için kullanılır.

Assemblymetadata

öğesi AssemblyMetadata bir anahtar-değer çifti derleme AssemblyMetadataAttribute özniteliğini belirtir. Meta Include veriler anahtar olur ve meta veriler de değer Value olur.

<ItemGroup>
  <AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>

InternalsVisibleTo

öğesi, InternalsVisibleTo belirtilen arkadaş InternalsVisibleToAttribute derlemesi için bir derleme özniteliği üretir.

<ItemGroup>
  <InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>

Arkadaş derlemesi imzalandı ise, tam ortak anahtarını belirtmek için Key isteğe bağlı bir meta veri belirtsiniz. Meta veriler belirtmezseniz Key ve kullanılabilir bir $(PublicKey) varsa, bu anahtar kullanılır. Aksi takdirde, özniteliğine ortak anahtar eklenmez.

PackageReference

Öğesi, PackageReference bir paket için bir NuGet tanımlar.

özniteliği Include paket kimliğini belirtir. özniteliği Version sürüm veya sürüm aralığını belirtir. En düşük sürüm, en yüksek sürüm, aralık veya tam eşleşme belirtme hakkında bilgi için bkz. Sürüm aralıkları.

Aşağıdaki örnekte yer alan proje dosya parçacığı System.Runtime paketine başvurur.

<ItemGroup>
  <PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>

Gibi meta verileri kullanarak bağımlılık varlıklarını da kontrol edersiniz. PrivateAssets

<ItemGroup>
  <PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
    <PrivateAssets>all</PrivateAssets>
  </PackageReference>
</ItemGroup>

Daha fazla bilgi için bkz. Proje dosyalarında paket başvuruları.

TrimmerRootAssembly

öğesi, TrimmerRootAssembly bir derlemeyi kırpmanın dışında tutabilirsiniz. Kırpma, çalışma zamanının kullanılmayan bölümlerini paketlenmiş bir uygulamadan kaldırma işlemidir. Bazı durumlarda kırpma yanlış bir şekilde gerekli başvuruları kaldırabilir.

Aşağıdaki XML, derlemeyi System.Security kırpmanın dışında tut.

<ItemGroup>
  <TrimmerRootAssembly Include="System.Security" />
</ItemGroup>

Kullanma

Öğesi, kaynak dosyalarınızın en üstüne ad alanı için bir yönerge eklemek zorunda olmadığınız şekilde, C# projenize genel olarak bir ad Using alanı using eklemenize olanak sağlar. Bu öğe, Import projelerde aynı amaçla kullanılan öğeye Visual Basic benzer. Bu özellik .NET 6'dan başlayarak kullanılabilir.

<ItemGroup>
  <Using Include="My.Awesome.Namespace" />
</ItemGroup>

Öğeyi genel ve yönergeleri Using tanımlamak için de using <alias> using static <type> kullanabilirsiniz.

<ItemGroup>
  <Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>

Örneğin:

  • <Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" /> Gösterir global using Results = global::Microsoft.AspNetCore.Http.Results;
  • <Using Include="Microsoft.AspNetCore.Http.Results" Static="True" /> Gösterir global using static global::Microsoft.AspNetCore.Http.Results;

Diğer ad yönergeleri ve yönergeleri hakkında using daha fazla bilgi için using static <type> bkz. using yönergesi.

Öğe meta verileri

Standart öğe özniteliklerine MSBuild,aşağıdaki öğe meta veri etiketleri .NET SDK tarafından kullanılabilir hale getiri:

CopyToPublishDirectory

Bir CopyToPublishDirectory öğenin meta MSBuild öğenin yayımlama dizinine ne zaman kopyalanır olduğunu kontrol eder. İzin verilebilir değerler, yalnızca öğeyi değiştirmişse kopyalanan ve öğeyi hiçbir zaman kopyalaymayacak şekilde kopyalanan PreserveNewest Always Never değerleridir. Performans açısından, PreserveNewest artımlı derlemeyi olanaklı olduğundan tercih edilir.

<ItemGroup>
  <None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

LinkBase

Proje dizininin ve alt dizinlerinin dışında yer alan bir öğe için yayımlama hedefi öğenin Bağlantı meta verilerini kullanarak öğenin nereye kopyalanır? Linkayrıca proje ağacı dışındaki öğelerin, proje ağacının Çözüm Gezgini penceresinde nasıl Visual Studio.

Proje Link külahı dışındaki bir öğe için belirtilmezse, varsayılan olarak %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension) kullanılır. LinkBase , proje külahı dışındaki öğeler için mantıklı bir temel klasör belirtmenize olanak sağlar. Temel klasör altındaki klasör hiyerarşisi aracılığıyla RecursiveDir korunur. LinkBaseBelirtilmezse, yoldan Link atlanır.

<ItemGroup>
  <Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>

Aşağıdaki görüntüde, önceki öğe glob aracılığıyla dahil edilen bir dosyanın aşağıdaki Include görüntüde nasıl görüntü Çözüm Gezgini.

Çözüm Gezgini LinkBase meta verileriyle gösteriliyor.

Ayrıca bkz.