.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:
AssemblyVersionveFileVersionsonek olmadan değerine varsayılan değer$(Version). Örneğin, ise,$(Version)1.2.3-beta.4değer olacaktır1.2.3.InformationalVersionVarsayılan değer olarak değeridir$(Version).$(SourceRevisionId)Özelliği varsa, öğesine eklenirInformationalVersion. Kullanarak bu davranışı devre dışı bırakabilirsinizIncludeSourceRevisionInInformationalVersion.Copyright``Descriptionayrıca NuGet meta verileri için de özellikler kullanılır.Configuration, varsayılan olarakDebug, tüm MSBuild hedefleriyle paylaşılır. Bunu,--configurationdotnetÖ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ı
GenerateAssemblyInfoproje dosyanızda olarak ayarlayarak devre dışı bırakınfalse. Bu, AssemblyInfo dosyanızı tutmanıza olanak sağlar. AssemblyInfoDosyadaki ayarları proje dosyasına geçirin ve ardındanAssemblyInfodosyayı 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>
Yayınla ilgili özellikler
aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- Appendruntimeıdentifiertooutputpath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- EnablePackageValidation
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigurationFiles
- Ipublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- Ileri alınmaya
- RuntimeFrameworkVersion
- Runtimeıdentifier
- Runtimetanımlayıcıtanımlayıcıları
- SatelliteResourceLanguages
- UseAppHost
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
ErrorOnDuplicatePublishOutputFilesözelliği, MSBuild yayımlama çıktısında yinelenen dosyaları algıladığında SDK 'nın hata NETSDK1148 oluşturup oluşturmadığını, ancak hangi dosyaların kaldırılacağını belirleyemeyeceğini ifade eder. ErrorOnDuplicatePublishOutputFiles false Hatanın oluşturulmasını istemiyorsanız özelliğini olarak ayarlayın.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Bu özellik .NET 6 ' da tanıtılmıştır.
EnablePackageValidation
EnablePackageValidationÖzelliği, görev sonrasında pakette bir dizi doğrulama yapılmasını mümkün pack . Daha fazla bilgi için bkz. paket doğrulaması.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
Bu özellik .NET 6 ' da tanıtılmıştır.
GenerateRuntimeConfigurationFiles
GenerateRuntimeConfigurationFilesÖzelliği, çalışma zamanı yapılandırma seçeneklerinin runtimeconfig. Template. JSON dosyasından [AppName]. runtimeconfig. JSON dosyasına kopyalanıp kopyalanmayacağını denetler. Bir runtimeconfig. JSON dosyası gerektiren uygulamalar için, diğer bir deyişle, OutputType Exe Bu özellik varsayılan olarak olarak ayarlanır true .
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
Ipublishable
IsPublishableÖzelliği, Publish hedefin çalışmasına izin verir. Bu özellik yalnızca kullanan süreçler etkiler . * DotNet Publish komutu gibi proj dosyaları ve Publish hedefi. bu, hedefi kullanan Visual Studio yayımlamayı etkilemez PublishOnly . true varsayılan değerdir.
Bu özellik dotnet publish , yayımlanması gereken projelerin otomatik seçimine izin verdiği için bir çözüm dosyasında çalıştırırsanız yararlıdır.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
PreserveCompilationContextÖzelliği, derleme zamanında kullanılan ayarların aynısını kullanarak, oluşturulmuş veya yayımlanmış bir uygulamanın çalışma zamanında daha fazla kod derlemesine izin verir. Derleme zamanında başvurulan derlemeler, çıkış dizininin ref alt dizinine kopyalanacak. Başvuru derlemelerinin adları, uygulamanın . Deps. JSON dosyasında ve derleyiciye geçirilen seçeneklerle birlikte depolanır. Ve özelliklerini kullanarak bu bilgileri alabilirsiniz DependencyContext.CompileLibraries DependencyContext.CompilationOptions .
bu işlevsellik çoğunlukla, razor dosyalarının çalışma zamanı derlemesini desteklemek için ASP.NET Core MVC ve Razor sayfaları tarafından dahili olarak kullanılır.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
PreserveCompilationReferencesÖzelliği Preservecompilationcontext özelliğine benzerdir, ancak yalnızca başvurulan derlemeleri . Deps. JSON dosyasına değil yayımlama dizinine kopyalar.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
Daha fazla bilgi için bkz. Razor SDK özellikleri.
Ileri alınmaya
RollForwardÖzelliği, birden fazla çalışma zamanı sürümü kullanılabilir olduğunda uygulamanın çalışma zamanını nasıl seçdiğini denetler. Bu değer, ayar olarak . runtimeconfig. JSON ' a çıkış olur rollForward .
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
RollForwardAşağıdaki değerlerden birine 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. denetimi alma-iletme davranışı.
RuntimeFrameworkVersion
RuntimeFrameworkVersionÖzelliği, yayımlarken kullanılacak çalışma zamanının sürümünü belirtir. Çalışma zamanı sürümü 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 kendine içerilen bir uygulama yayımlarken, bu değer gereken tam sürümü belirtir.
Runtimeıdentifier
RuntimeIdentifierÖzelliği, proje için tek bir çalışma zamanı tanımlayıcısı (RID) belirtmenize olanak tanır. RID, kendi kendine içerilen bir dağıtımı yayımlamayı mümkün.
<PropertyGroup>
<RuntimeIdentifier>ubuntu.16.04-x64</RuntimeIdentifier>
</PropertyGroup>
Runtimetanımlayıcıtanımlayıcıları
RuntimeIdentifiersÖzelliği, proje için bir çalışma zamanı tanımlayıcıları (RID 'ler) için noktalı virgülle ayrılmış bir liste belirtmenize olanak tanır. Birden çok çalışma zamanı için yayımlamanız gerekiyorsa bu özelliği kullanın. RuntimeIdentifiers , doğru varlıkların grafikte 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ğlayabilir.
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
SatelliteResourceLanguagesÖzelliği, derleme ve yayımlama sırasında için uydu kaynak derlemelerini korumak istediğiniz dilleri belirtmenize olanak tanır. birçok NuGet paket, ana paketteki yerelleştirilmiş kaynak uydu derlemelerini içerir. yerelleştirilmiş kaynaklar gerektirmeyen bu NuGet paketlerine başvuran projeler için, yerelleştirilmiş derlemeler, derleme ve yayımlama çıkış boyutunu gereksiz yere alabilir. SatelliteResourceLanguagesÖzelliği proje dosyanıza ekleyerek, derleme ve yayımlama çıktısına yalnızca belirttiğiniz dillerin yerelleştirilmiş derlemeleri dahil edilir. Örneğin, aşağıdaki proje dosyasında yalnızca Ingilizce (US) kaynak uydu derlemeleri korunur.
<PropertyGroup>
<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
</PropertyGroup>
Not
bu özelliği, yerelleştirilmiş kaynak uydu derlemeleriyle NuGet paketine başvuran projede belirtmeniz gerekir.
UseAppHost
UseAppHostÖzelliği, bir dağıtım için yerel yürütülebilir dosyanın oluşturulup oluşturulmayacağını denetler. Kendi kendine kapsanan dağıtımlar için yerel bir yürütülebilir dosya gereklidir.
.NET Core 3,0 ve sonraki sürümlerinde, çerçeveye bağlı bir yürütülebilir dosya varsayılan olarak oluşturulur. UseAppHost false Yürütülebilir dosyanın üretilmesini 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ı.
Derlemeden ilgili özellikler
aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- Belgetationfile
- Embeddedresourceusebağımlıtuponconvention
- Enableönizleme özellikleri
- Generatebelgetationfile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
ve gibi C# derleyici seçenekleri LangVersion Nullable de proje dosyanızda MSBuild özellikler olarak belirtilebilir. Daha fazla bilgi için bkz. C# derleyici seçenekleri.
Embeddedresourceusebağımlıtuponconvention
Özelliği, kaynak dosyaları EmbeddedResourceUseDependentUponConvention ile birlikte bulunan kaynak dosyalardaki tür bilgilerden kaynak bildirim dosyası adlarının oluşturulup oluşturulmayacağını tanımlar. Örneğin, Form1. resx Form1. cs ile aynı klasörssa ve olarak EmbeddedResourceUseDependentUponConvention ayarlanırsa true , oluşturulan . resources dosyası, adını Form1. cs dosyasında 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 olur.
Not
LogicalName,, ManifestResourceName Veya DependentUpon meta veriler bir öğe için belirtilmişse EmbeddedResource , bu kaynak dosyası için oluşturulan bildirim dosyası adı bu meta verileri temel alır.
Varsayılan olarak, yeni bir .NET projesinde, bu özellik olarak ayarlanır true . false, Ve öğesi için, LogicalName ManifestResourceName Proje dosyasındaki öğe için, veya olarak ayarlanırsa,, DependentUpon EmbeddedResource kaynak bildirim dosyası adı projenin kök ad alanını ve . resx dosyasının göreli dosya yolunu temel alan olur. Daha fazla bilgi için bkz. kaynak bildirim dosyalarının adlandırılması.
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
Enableönizleme özellikleri
EnablePreviewFeaturesÖzelliği, projenizin, özniteliğiyle donatılmış tüm API 'lere veya derlemelere bağlı olup olmadığını tanımlar RequiresPreviewFeaturesAttribute . Bu öznitelik, bir API veya derlemenin, kullanmakta olduğunuz SDK sürümü için Önizleme aşamasında olduğu kabul edilen özellikleri kullandığını belirtmek için kullanılır. Önizleme özellikleri desteklenmez ve gelecek bir sürümde kaldırılabilir. Önizleme özelliklerinin kullanımını etkinleştirmek için özelliğini olarak ayarlayın True .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Bir proje, olarak ayarlanmış bu özelliği içerdiğinde True , AssemblyInfo. cs dosyasına aşağıdaki derleme düzeyi özniteliği eklenir:
[assembly: RequiresPreviewFeatures]
Bir çözümleyici, bu öznitelik olarak ayarlanmamış projeler için bağımlılıklarda mevcutsa uyarır EnablePreviewFeatures True .
Önizleme derlemelerini teslim etmek isteyen kitaplık yazarları bu özelliği olarak ayarlanmalıdır True . Bir derlemenin önizleme ve önizleme dışı API 'Ler ile birlikte verilmesi gerekiyorsa, aşağıdaki GenerateRequiresPreviewFeaturesAttribute bölümüne bakın.
Belgetationfile
DocumentationFileÖzelliği, kitaplığınızın belgelerini IÇEREN XML dosyası için bir dosya adı belirtmenize olanak sağlar. IntelliSense 'in belgelerinizle doğru çalışması için dosya adı, derleme adı ile aynı olmalıdır ve derlemeyle aynı dizinde olmalıdır. Bu özelliği belirtmezseniz ancak Generatebelgelerimfile öğesini olarak ayarlarsanız true belge dosyasının adı, derleme adınızın adı, ancak bir .xml dosya uzantısıyla varsayılan olarak ayarlanır. Bu nedenle, bu özelliği atlamak ve bunun yerine Generatebelgetalandosyası özelliğini kullanmak daha kolay olur.
Bu özelliği belirtirseniz ancak generatebelgelertationfile öğesini olarak ayarlarsanız false , derleyici bir belge dosyası oluşturmaz. Bu özelliği belirtir ve Generatebelgeleriyle Tationfile özelliğiniatlarsanız , derleyici bir belge dosyası oluşturur.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
Generatebelgetationfile
GenerateDocumentationFileÖzelliği, derleyicinin kitaplığınız için BIR XML belge dosyası oluşturup üretmediğini denetler. Bu özelliği olarak ayarlarsanız true ve BelgeAdı \ dosya özelliğiaracılığıyla bir dosya adı belirtmezseniz oluşturulan XML dosyası derlemeinizle aynı çıkış dizinine yerleştirilir ve aynı dosya adına sahiptir (ancak bir .xml Uzantısı ile).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
kod açıklamalarından belge oluşturma hakkında daha fazla bilgi için bkz. xml belgeleri yorumları (C#), kodunuzu xml ile belgeleme (Visual Basic)veya kodunuzu xml ile belgeleme (F #).
GenerateRequiresPreviewFeaturesAttribute
GenerateRequiresPreviewFeaturesAttributeÖzelliği, Enableönizleme özellikleri özelliğiyle yakından ilgilidir. Kitaplığınız Önizleme özellikleri kullanıyorsa ancak tüm derlemenin, RequiresPreviewFeaturesAttribute Önizleme özelliklerini etkinleştirmekiçin herhangi bir tüketiciye gerek duyduğu özniteliğiyle işaretlenmesini istemiyorsanız, bu özelliği olarak ayarlayın False .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Önemli
GenerateRequiresPreviewFeaturesAttributeÖzelliğini olarak ayarlarsanız False , önizleme özelliklerine bağlı olan tüm genel API 'leri süslemeniz gerekir RequiresPreviewFeaturesAttribute .
OptimizeImplicitlyTriggeredBuild
derleme süresini hızlandırmak için, Visual Studio tarafından örtük olarak tetiklenen yapılar, null yapılabilir analiz dahil olmak üzere kod analizini atlayın. Visual Studio, testleri çalıştırdığınızda örtük bir derlemeyi tetikler. Ancak örtük derlemeler yalnızca olmadığında iyileştirilir TreatWarningsAsErrors true . Olarak TreatWarningsAsErrors ayarladıysanız true ancak örtülü olarak tetiklenen derlemelerin iyileştirilmeye devam etmek istiyorsanız, öğesini OptimizeImplicitlyTriggeredBuild olarak ayarlayabilirsiniz True . Örtük olarak tetiklenen derlemeler için derleme iyileştirmesini devre dışı bırakmak için, OptimizeImplicitlyTriggeredBuild olarak ayarlayın False .
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
Varsayılan öğe içerme özellikleri
aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- DefaultExcludesInProjectFolder
- DefaultItemExcludes
- Enabledefaultcompileıtems
- Enabledefaultembeddedresourceıtems
- Enabledefaultıtems
- Enabledefaultnoneıtems
Daha fazla bilgi için bkz. varsayılan içerme ve dışladığı.
DefaultItemExcludes
DefaultItemExcludesInclude, exclude ve Remove genelleştirmeler dışında tutulması gereken dosya ve klasörler için glob desenleri tanımlamak üzere özelliğini kullanın. Varsayılan olarak, ./bin ve ./obj klasörleri, glob desenlerinden çıkarılır.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
DefaultExcludesInProjectFolder
DefaultExcludesInProjectFolderDahil etme, hariç tutma ve kaldırma genelleştirmeler dışında tutulacak proje klasöründeki dosya ve klasörler için glob desenlerini tanımlamak üzere özelliğini kullanın. Varsayılan olarak, . . git ve . vs gibi bir noktayla başlayan klasörler, glob desenlerinden çıkarılır.
Bu özellik, DefaultItemExcludes yalnızca proje klasöründeki dosya ve klasörleri dikkate almak dışında özelliğine çok benzer. Bir glob deseninin proje klasörü dışındaki öğeleri bir göreli yol ile istenmeden eşleşmesi durumunda, özelliği DefaultExcludesInProjectFolder yerine özelliğini kullanın DefaultItemExcludes .
<PropertyGroup>
<DefaultExcludesInProjectFolder>$(DefaultExcludesInProjectFolder);**/myprefix*/**</DefaultExcludesInProjectFolder>
</PropertyGroup>
Enabledefaultıtems
EnableDefaultItemsÖzelliği derleme öğelerinin, katıştırılmış kaynak öğelerinin ve None öğelerin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. EnableDefaultItems false Tüm örtük dosya dahil edilmesini devre dışı bırakmak için özelliğini olarak ayarlayın.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
Enabledefaultcompileıtems
EnableDefaultCompileItemsÖzelliği, derleme öğelerinin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. EnableDefaultCompileItems false *. Cs ve diğer dil uzantısı dosyalarının örtük olarak eklenmesini devre dışı bırakmak için özelliğini olarak ayarlayın.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
Enabledefaultembeddedresourceıtems
EnableDefaultEmbeddedResourceItemsÖzelliği, katıştırılmış kaynak öğelerinin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. EnableDefaultEmbeddedResourceItems false Gömülü kaynak dosyalarının örtük olarak eklenmesini devre dışı bırakmak için özelliğini olarak ayarlayın.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
Enabledefaultnoneıtems
EnableDefaultNoneItemsÖzelliği, None öğelerin (yapı işleminde rolü olmayan dosyalar) örtük olarak projeye dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. EnableDefaultNoneItemsÖzelliği false örtük olarak öğelerin dahil edilmesini devre dışı bırakmak için olarak ayarlayın None .
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Kod Analizi özellikleri
aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- AnalysisLevel
- AnalysisLevel<Category>
- AnalysisMode
- AnalysisMode<Category>
- CodeAnalysisTreatWarningsAsErrors
- Enablenetçözümleyiciler
- Enforcecodestyleınbuild
AnalysisLevel
AnalysisLevelÖzelliği, .NET sürümüne göre çalıştırılacak bir kod Çözümleyicileri kümesi belirtmenizi sağlar. .NET 5 ' te başlayan her .NET sürümünde bir kod analizi kuralları kümesi vardır. Bu ayar için varsayılan olarak etkinleştirilen kurallar kodunuzu analiz eder.
Örneğin, .NET 6 sürümüne yükseltirsiniz ancak varsayılan kod analizi kuralları kümesinin değiştirilmesini istemiyorsanız, AnalysisLevel olarak ayarlayın 5 .
<PropertyGroup>
<AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>
İsteğe bağlı olarak, .NET 6 ' dan başlayarak, bu özellik için kuralların nasıl etkinleştirileceğini de belirten bir bileşik değer belirtebilirsiniz. Bileşik değerler, <version>-<mode> <mode> değeri bir analysismode değerlerinden biri olduğunda formu alır. Aşağıdaki örnek, kod Çözümleyicileri 'nin önizleme sürümünü kullanır ve önerilen kurallar kümesini sunar.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Not
' AnalysisLevel 5-<mode> 5.0-<mode> İ veya ' a ayarlarsanız ve sonra da projenizi yeniden derleyeceksiniz, beklenmeyen yeni derleme uyarıları görebilirsiniz. Daha fazla bilgi için bkz. DotNet/Roslyn-çözümleyiciler # 5679.
Varsayılan değer:
- Projeniz .NET 5 veya üstünü hedefliyorsa veya Analysismode özelliğini eklediyseniz, varsayılan değer olur
latest. - Aksi takdirde, açıkça proje dosyasına eklemediğiniz takdirde bu özellik atlanır.
Aşağıdaki tabloda belirtebileceğiniz değerler gösterilmektedir.
| Değer | Anlamı |
|---|---|
latest |
Yayınlanan en son kod Çözümleyicileri kullanılır. Bu varsayılan seçenektir. |
latest-<mode> |
Yayınlanan en son kod Çözümleyicileri kullanılır. <mode>Değer, hangi kuralların etkinleştirildiğini belirler. |
preview |
Önizleme aşamasında olsalar dahi, en son kod Çözümleyicileri kullanılır. |
preview-<mode> |
Önizleme aşamasında olsalar dahi, en son kod Çözümleyicileri kullanılır. <mode>Değer, hangi kuralların etkinleştirildiğini belirler. |
6.0 |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. |
6.0-<mode> |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. <mode>Değer, hangi kuralların etkinleştirildiğini belirler. |
6 |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. |
6-<mode> |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. <mode>Değer, hangi kuralların etkinleştirildiğini belirler. |
5.0 |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. |
5.0-<mode> |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. <mode>Değer, hangi kuralların etkinleştirildiğini belirler. |
5 |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. |
5-<mode> |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilir olsa bile kullanılır. <mode>Değer, hangi kuralların etkinleştirildiğini belirler. |
Not
- .NET 5 ve önceki sürümlerde, bu özellik yalnızca kod kalitesi (CAXXXX) kurallarınıetkiler. .NET 6 ' dan itibaren, Enforcecodestyleinbuild öğesini olarak ayarlarsanız
true, bu özellik kod stili (ıdexxxx) kurallarını da etkiler. - İçin bir bileşik değer ayarlarsanız
AnalysisLevel, bir analysismodebelirtmeniz gerekmez. Ancak, bunu yaparsanız,AnalysisLevelüzerine öncelik kazanırAnalysisMode. - bu özelliğin, proje SDK 'sınabaşvurmayan projeler (örneğin, Microsoft. codeanalysis. netçözümleyiciler NuGet paketine başvuran eski .NET Framework projeleri) üzerinde kod analizi üzerinde hiçbir etkisi yoktur.
AnalysisLevel<Category>
.NET 6 ' da tanıtılan bu özellik, yalnızca belirli bir kod analizi kuralları kategorisiiçin geçerli olması dışında, analysislevelile aynıdır. Bu özellik belirli bir kategori için farklı kod Çözümleyicileri sürümlerini kullanmanıza veya farklı bir düzeyde kuralları diğer kural kategorilerine etkinleştirmenizi veya devre dışı bırakmanızı sağlar. Belirli bir kural kategorisi için bu özelliği atlarsanız, varsayılan olarak Analysislevel değerini alır. Kullanılabilir değerler, Analysisleveliçin olanlarla aynıdır.
<PropertyGroup>
<AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
<AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>
Aşağıdaki tabloda her kural kategorisinin Özellik adı listelenmektedir.
| Ö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 deAnalysisLevelbelirtirsiniz, üzerindeAnalysisModeönceliklidir. - olarak ayarlanırsa ve veya olarak ayarlanırsa
AnalysisModeAllEnabledByDefaultve ardındanAnalysisLevel5.NET 6 SDK'yı yükp projenizi yeniden derlemeniz gerekirse beklenmeyen yeni5.0derleme 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 sini 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.
Ç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
- InvariantGlobalization
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
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
- DisableImplicitFrameworkReferences
- Geri yüklemeyle ilgili özellikler
- ValidateExecutableReferencesMatchSelfContained
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>
Geri yüklemeyle ilgili özellikler
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.
Çalıştırmayla ilgili özellikler
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>
Barındırmayla ilgili özellikler
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
LatestMinorayarlanı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ü Visual Basic projelerinde örtülü ad alanı içeri aktarmalarını DisableImplicitNamespaceImports devre dışı bırakmak için kullanılabilir. Örtülü ad alanları, bir projesinde genel olarak içe aktarılan varsayılan ad Visual Basic 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:
Standart öğe özniteliklerindenherhangi birini, örneğin, Include ve Update , bu öğelerde kullanabilirsiniz. IncludeYeni bir öğe eklemek ve Update var olan bir öğeyi değiştirmek için kullanın. Örneğin, Update genellikle .NET SDK 'sı tarafından dolaylı olarak eklenmiş bir öğeyi değiştirmek için kullanılır.
AssemblyMetadata
AssemblyMetadataÖğe, anahtar-değer çifti AssemblyMetadataAttribute derleme özniteliğini belirtir. IncludeMeta veriler anahtar olur ve Value meta veriler değer olur.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
InternalsVisibleToÖğe, InternalsVisibleToAttribute belirtilen arkadaş derlemesi için bir derleme özniteliği oluşturuyor.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Arkadaş derleme imzalanmışsa, Key tam ortak anahtarını belirtmek için isteğe bağlı meta veri belirtebilirsiniz. KeyMeta veri belirtmezseniz ve $(PublicKey) kullanılabilir ise, bu anahtar kullanılır. Aksi takdirde, özniteliğe ortak anahtar eklenmez.
PackageReference
PackageReferenceöğe bir NuGet paketine bir başvuru tanımlar.
IncludeÖznitelik, paket kimliğini belirtir. VersionÖznitelik, 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 örnekteki proje dosyası kod parçacığı System. Runtime paketine başvurur.
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
Bağımlılık varlıklarını , gibi meta verileri kullanarak da denetleyebilirsiniz PrivateAssets .
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Daha fazla bilgi için bkz. Proje dosyalarındaki paket başvuruları.
TrimmerRootAssembly
TrimmerRootAssemblyÖğe, bir derlemeyi kırpmanızadışlamanızı sağlar. Kırpma, çalışma zamanının kullanılmayan parçalarını paketlenmiş bir uygulamadan kaldırma işlemidir. Bazı durumlarda, kırpma gerekli başvuruları yanlış kaldırabilir.
Aşağıdaki XML, System.Security derlemeyi kırpmaya dışlar.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Kullanma
UsingÖğe, kaynak dosyalarınızın en üstünde ad alanı için bir yönerge eklemenize gerek kalmaması gibi C# projenizde bir ad alanı eklemenizi sağlar using . bu öğe, Import Visual Basic projelerinde aynı amaçla kullanılabilecek öğeyle benzerdir. Bu özellik .NET 6 ' dan başlayarak kullanılabilir.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Ayrıca, Using öğesini genel ve yönergeleri tanımlamak için de using <alias> kullanabilirsiniz using static <type> .
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Örnek:
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />yayarglobal using Results = global::Microsoft.AspNetCore.Http.Results;<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />yayarglobal using static global::Microsoft.AspNetCore.Http.Results;
Diğer ad yönergeleri ve yönergeleri hakkında daha fazla bilgi için using using static <type> bkz. using yönergesi.
Öğe meta verileri
standart MSBuild öğesi özniteliklerineek olarak, aşağıdaki öğe meta veri etiketleri .net SDK tarafından kullanılabilir hale getirilir:
CopyToPublishDirectory
CopyToPublishDirectorybir MSBuild öğe üzerindeki meta veriler, öğe yayımlama dizinine kopyalandığında denetler. İzin verilen değerler PreserveNewest , yalnızca değiştirilirse öğeyi kopyalayan, Always her zaman öğeyi kopyalayan ve öğeyi Never hiçbir zaman kopyalamamış olan değerlerdir. Bir performans açısından, PreserveNewest artımlı bir derlemeyi sağladığından tercih edilir.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
Tabanlarını
Proje dizini ve alt dizinleri dışında olan bir öğe için, Yayımla hedefi öğenin bağlantı meta verilerini kullanarak öğenin nereye kopyalanacağını tespit edin. LinkAyrıca, proje ağacının dışındaki öğelerin Visual Studio Çözüm Gezgini penceresinde nasıl görüntüleneceğini belirler.
LinkProje konisi dışında bir öğe için belirtilmemişse, varsayılan olarak öğesine ayarlanır %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension) . LinkBase Proje koni dışındaki öğeler için bir senerişilebilir taban klasörü belirtmenizi sağlar. Taban klasörü altındaki klasör hiyerarşisi aracılığıyla korunur RecursiveDir . LinkBaseBelirtilmemişse, Link yolundan çıkarılır.
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
Aşağıdaki görüntüde, önceki öğe ile eklenen bir dosyanın Include Çözüm Gezgini ' de nasıl görüntüleyeceği gösterilmektedir.