Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfa, .NET projelerini yapılandırmak için kullanabileceğiniz MSBuild özelliklerine ve öğelerine yönelik bir başvurudur.
Note
Bu sayfa devam eden bir çalışmadır ve .NET SDK'sı için tüm yararlı MSBuild özelliklerini listelemez. Yaygın MSBuild özelliklerinin listesi için bkz . Ortak MSBuild özellikleri.
Derleme doğrulama özellikleri
Bu özellikler ve öğeler göreve geçirilir ValidateAssemblies . Derleme doğrulaması hakkında daha fazla bilgi için bkz . Derleme doğrulaması.
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
Note
Bu özellikler .NET SDK'sının (henüz) bir parçası değildir. Bunları kullanmak için Microsoft.DotNet.ApiCompat.Task'a PackageReferenceda eklemeniz gerekir.
Ayrıca, Paket doğrulama özelliklerinde belgelenen aşağıdaki özellikler de derleme doğrulaması için geçerlidir:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
olarak ayarlandığında trueApiCompatStrictMode özelliği, API uyumluluk denetimlerinin katı modda gerçekleştirilmesi gerektiğini belirtir.
<PropertyGroup>
<ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>
ApiCompatValidateAssemblies
özelliği, ApiCompatValidateAssemblies belirtilen derlemelerde bir dizi doğrulamayı etkinleştirir. Daha fazla bilgi için bkz . Derleme doğrulama.
<PropertyGroup>
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>
Derleme özniteliği özellikleri
GenerateAssemblyInfo
özelliği, GenerateAssemblyInfo proje için öznitelik oluşturmayı denetler AssemblyInfo . Varsayılan değer şudur: true. Dosyanın oluşturulmasını devre dışı bırakmak için kullanın false :
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
GeneratedAssemblyInfoFile ayarı, oluşturulan dosyanın adını denetler.
GenerateAssemblyInfo değeri olduğundatrue, paketle ilgili proje özellikleri derleme özniteliklerine dönüştürülür.
Proje dosyası kullanarak derleme öznitelikleri oluşturma hakkında daha fazla bilgi için bkz . Proje dosyasında derleme özniteliklerini ayarlama.
GeneratedAssemblyInfoFile
özelliği, GeneratedAssemblyInfoFile oluşturulan derleme bilgi dosyasının göreli veya mutlak yolunu tanımlar. Varsayılan olarak [project-name] adlı bir dosyaya sahip olur. AssemblyInfo. [cs|vb]$(IntermediateOutputPath) (genellikle obj) dizininde.
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
Çerçeve özellikleri
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
TargetFramework
TargetFramework özelliği, uygulama için hedef çerçeve sürümünü belirtir. Geçerli hedef çerçeve takma adlarının listesi için bkz . SDK stili projelerde hedef çerçeveler.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
Daha fazla bilgi için bkz . SDK stili projelerde çerçeveleri hedefleme.
TargetFrameworks
Uygulamanızın TargetFrameworks birden çok platformu hedeflemesini istediğinizde özelliğini kullanın. Geçerli hedef çerçeve takma adlarının listesi için bkz . SDK stili projelerde hedef çerçeveler.
Note
(çoğul) belirtilirse TargetFrameworks ( TargetFramework tekil) yoksayılır.
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>
Daha fazla bilgi için bkz . SDK stili projelerde çerçeveleri hedefleme.
NetStandardImplicitPackageVersion
Note
Bu özellik yalnızca kullanan netstandard1.xprojeler için geçerlidir. kullanan netstandard2.xprojeler için geçerli değildir.
Meta paket sürümünden NetStandardImplicitPackageVersion daha düşük bir çerçeve sürümü belirtmek istediğinizde özelliğini kullanın. Aşağıdaki örnekteki proje dosyası hedeflese netstandard1.3 de 1.6.0 sürümünü NETStandard.Librarykullanır.
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Paket özellikleri
Açıklayıcı özellikler
Projenizden oluşturulan paketi açıklamak için , PackageIdPackageVersion, , PackageIcon, ve Title gibi Descriptionözellikleri belirtebilirsiniz. Bu özellikler ve diğer özellikler hakkında bilgi için bkz . paket hedefi.
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
PackRelease
PackRelease özelliği, varsayılan davranışını değiştirmesi dışında PublishRelease. Bu özellik .NET 7'de tanıtıldı.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Note
.NET 8 SDK'sında başlayarak, PackRelease varsayılan olarak olarak gösterilir true. Daha fazla bilgi için bkz . 'dotnet pack' Sürüm yapılandırmasını kullanır.
Paket doğrulama özellikleri
Bu özellikler ve öğeler göreve geçirilir ValidatePackage . Paket doğrulaması hakkında daha fazla bilgi için bkz . Paket doğrulamaya genel bakış.
Görevin özellikleri için ValidateAssemblies bkz . Derleme doğrulama özellikleri.
Aşağıdaki MSBuild özellikleri ve öğeleri bu bölümde belgelenmiştir:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
olarak ayarlandığında trueApiCompatEnableRuleAttributesMustMatch özelliği, özniteliklerin eşleşip eşleşmediğini denetleen doğrulama kuralını etkinleştirir. Varsayılan değer: false.
<PropertyGroup>
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>
ApiCompatEnableRuleCannotChangeParameterName
olarak ayarlandığında trueözelliği, ApiCompatEnableRuleCannotChangeParameterName parametre adlarının ortak yöntemlerde değişip değişmediğini denetleen doğrulama kuralını etkinleştirir. Varsayılan değer: false.
<PropertyGroup>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>
ApiCompatExcludeAttributesFile
öğesi, ApiCompatExcludeAttributesFile DocId biçiminde dışlanması gereken öznitelikleri içeren dosyanın yolunu belirtir.
<ItemGroup>
<ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
<ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>
ApiCompatGenerateSuppressionFile
ApiCompatGenerateSuppressionFile özelliği, uyumluluk gizleme dosyası oluşturulup oluşturulmayacağını belirtir.
<PropertyGroup>
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>
ApiCompatPermitUnnecessarySuppressions
ApiCompatPermitUnnecessarySuppressions özelliği, gizleme dosyasında gereksiz gizlemelere izin verilip verilmeyeceğini belirtir.
Varsayılan değer: false.
<PropertyGroup>
<ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>
ApiCompatPreserveUnnecessarySuppressions
özelliği, ApiCompatPreserveUnnecessarySuppressions gizleme dosyasını yeniden oluştururken gereksiz gizlemelerin korunup korunmayacağını belirtir. Mevcut bir gizleme dosyası yeniden oluşturulduğunda, içeriği okunur, seri durumdan çıkarılır ve ardından bir listede depolanır. Uyumsuzluk düzeltildiyse bazı gizlemeler artık gerekli olmayabilir. Gizlemeler diske geri seri hale getirildiğinde, bu özelliği olarak ayarlayarak tüm mevcut (seri durumdan çıkarılmış) ifadeleri korumayı trueseçebilirsiniz.
Varsayılan değer: false.
<PropertyGroup>
<ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>
ApiCompatRespectInternals
özelliği, ApiCompatRespectInternals API'lerin api'lere ek olarak internal uyumluluk açısından denetlenip denetlenmeyeceğini public belirtir.
<PropertyGroup>
<ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>
ApiCompatSuppressionFile
öğesi, ApiCompatSuppressionFile okunacak bir veya daha fazla gizleme dosyasının yolunu belirtir. Belirtilmezse, project-directory</CompatibilitySuppressions.xml>okunur (varsa).
<ItemGroup>
<ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>
ApiCompatSuppressionOutputFile
özelliği, ApiCompatSuppressionOutputFile olduğunda <ApiCompatGenerateSuppressionFile>trueyazılması gereken bir gizleme dosyasının yolunu belirtir. Belirtilmezse, ilk ApiCompatSuppressionFile öğe kullanılır.
EnablePackageValidation
özelliği, EnablePackageValidation görevden sonra pakette bir dizi doğrulamayı Pack etkinleştirir. Daha fazla bilgi için bkz . paket doğrulama.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
EnableStrictModeForBaselineValidation
olarak ayarlandığında trueEnableStrictModeForBaselineValidation özelliği, paket temeli denetimleri için katı modu etkinleştirir. Varsayılan değer: false.
EnableStrictModeForCompatibleFrameworksInPackage
olarak ayarlandığında trueEnableStrictModeForCompatibleFrameworksInPackage özelliği, hedef çerçevelerine göre uyumlu derlemeler için katı modu etkinleştirir. Varsayılan değer: false.
EnableStrictModeForCompatibleTfms
olarak ayarlandığında trueEnableStrictModeForCompatibleTfms özelliği, tüm uyumlu hedef çerçeveler için sözleşme ve uygulama derlemeleri için katı modu etkinleştirir. Varsayılan değer: true.
NoWarn
özelliği, NoWarn gizlenecek tanılama kimliklerini belirtir.
<PropertyGroup>
<NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>
PackageValidationBaselineFrameworkToIgnore
öğesi temel PackageValidationBaselineFrameworkToIgnore paketten yoksaymak için bir hedef çerçeve belirtir. Çerçeve dizesinin taban çizgisi paketindeki klasör adıyla tam olarak eşleşmesi gerekir.
<ItemGroup>
<PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>
PackageValidationBaselineName
özelliği, PackageValidationBaselineName geçerli paketin doğrulanması için temel paketin adını belirtir. Belirtilmezse, PackageId değer kullanılır.
PackageValidationBaselineVersion
özelliği, PackageValidationBaselineVersion geçerli paketin doğrulanması için temel paketin sürümünü belirtir.
PackageValidationReferencePath
öğesi, PackageValidationReferencePath TFM başına başvuru derlemesinin bulunabileceği dizin yolunu belirtir.
<ItemGroup>
<PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net9.0" />
</ItemGroup>
RoslynAssembliesPath
RoslynAssembliesPath özelliği, kullanmak istediğiniz Microsoft.CodeAnalysis derlemelerini içeren dizinin yolunu belirtir. Bu özelliği yalnızca SDK'dakinden daha yeni bir derleyiciyle test etmek istiyorsanız ayarlamanız gerekir.
Yayımlamayla ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishReferencesSymbols
- PublishRelease
- PublishSelfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- SelfContained
- UseAppHost
AppendTargetFrameworkToOutputPath
özelliği, AppendTargetFrameworkToOutputPath çıkış yoluna (OutputPath tarafından tanımlanan) hedef çerçeve adı (TFM) eklenip eklenmeyeceğini denetler. .NET SDK'sı otomatik olarak hedef çerçeveyi ve varsa çalışma zamanı tanımlayıcısını çıkış yoluna ekler. ayarı AppendTargetFrameworkToOutputPathfalse , TFM'nin çıkış yoluna eklenmesini engeller. Ancak, çıkış yolunda TFM olmadan birden çok derleme yapıtı birbirinin üzerine yazabilir.
Örneğin, bir .NET 5 uygulaması için çıkış yolu aşağıdaki ayara göre değişir bin\Debug\net5.0bin\Debug :
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
özelliği, AppendRuntimeIdentifierToOutputPath çalışma zamanı tanımlayıcısının (RID) çıkış yoluna eklenip eklenmeyeceğini denetler. .NET SDK'sı otomatik olarak hedef çerçeveyi ve varsa çalışma zamanı tanımlayıcısını (RID) çıkış yoluna ekler. ayarı AppendRuntimeIdentifierToOutputPathfalse , RID'nin çıkış yoluna eklenmesini engeller. (Ancak , RID yine de yayımlama yoluna eklenir. Daha fazla bilgi için bkz. dotnet/sdk#12114.)
Örneğin, bir .NET 9 uygulaması ve rid'i win-x64için aşağıdaki ayar çıkış yolunu olarak bin\Debug\net9.0\win-x64bin\Debug\net9.0değiştirir:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
CopyLocalLockFileAssemblies özelliği, diğer kitaplıklara bağımlılıkları olan eklenti projeleri için kullanışlıdır. Bu özelliği olarak trueayarlarsanız, geçişli NuGet paket bağımlılıkları çıkış dizinine kopyalanır. Bu, eklentinizi herhangi bir makinede çalıştırmak için çıkışını dotnet build kullanabileceğiniz anlamına gelir.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
varsayılan değeri CopyLocalLockFileAssemblies çıkış türüne göre farklılık gösterebilir. Örneğin, sınıf kitaplıkları için varsayılan değer olurken falsekonsol uygulamaları için varsayılan değeri olur true. Gerekirse varsayılanı geçersiz kılmak için bu özelliği açıkça belirtebilirsiniz.
Tip
Alternatif olarak, sınıf kitaplığını yayımlamak için kullanabilirsiniz dotnet publish . Daha fazla bilgi için bkz . dotnet publish.
ErrorOnDuplicatePublishOutputFiles
özelliği, ErrorOnDuplicatePublishOutputFiles MSBuild yayımlama çıktısında yinelenen dosyaları algıladığında ancak hangi dosyaların kaldırılacağını belirleyemezse SDK'nın hata NETSDK1148 oluşturup oluşturmadığıyla ilgilidir. Hatanın oluşturulmasını ErrorOnDuplicatePublishOutputFiles istemiyorsanız özelliğini false olarak ayarlayın.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Bu özellik .NET 6'da tanıtıldı.
GenerateRuntimeConfigDevFile
.NET 6 SDK'sı ile başlayarak [ Appname].runtimesettings.dev.json dosyası artık derleme zamanında varsayılan olarak oluşturulmaz. Bu dosyanın yine de oluşturulmasını istiyorsanız özelliğini olarak GenerateRuntimeConfigDevFileayarlayıntrue.
<PropertyGroup>
<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
GenerateRuntimeConfigurationFiles
özelliği, GenerateRuntimeConfigurationFiles çalışma zamanı yapılandırma seçeneklerinin runtimeconfig.template.json dosyasından [appname].runtimeconfig.json dosyasına kopyalanıp kopyalanmayacağını denetler. runtimeconfig.json dosyası gerektiren ayarlanır.
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
GenerateSatelliteAssembliesForCore
özelliği, GenerateSatelliteAssembliesForCore uydu derlemelerinin .NET Framework projelerinde csc.exe veya Al.exe (Assembly Linker) kullanılarak oluşturulup oluşturulmayacağını denetler. (.NET Core ve .NET 5+ projeleri her zaman uydu derlemeleri oluşturmak için csc.exe kullanır.) .NET Framework projeleri için uydu derlemeleri varsayılan olarak al.exe tarafından oluşturulur. özelliği olarak ayarlanarakGenerateSatelliteAssembliesForCore, uydu derlemeleri bunun yerine csc.exetrueoluşturulur. csc.exe kullanmak aşağıdaki durumlarda avantajlı olabilir:
- C# derleyici
deterministicseçeneğini kullanmak istiyorsunuz. - al.exesınırlısınız.
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
IsPublishable özelliği, hedefin Publish çalışmasına izin verir. Bu özellik yalnızca .*proj dosyalarını ve dotnet publishPublishhedefi kullanan işlemleri etkiler. Hedefi kullanan Visual Studio'da yayımlamayı PublishOnly etkilemez. Varsayılan değer şudur: true.
Bu özellik, yayımlanması gereken projelerin otomatik olarak seçilmesine izin verdiğinden bir çözüm dosyasında çalıştırdığınızda dotnet publish kullanışlıdır.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
özelliği, PreserveCompilationContext derlenmiş veya yayımlanmış bir uygulamanın derleme zamanında kullanılan ayarları kullanarak çalışma zamanında daha fazla kod derlemesine olanak tanır. Derleme zamanında başvuruda bulunılan derlemeler çıkış dizininin başvuru alt dizinine kopyalanır. Başvuru derlemelerinin adları, derleyiciye geçirilen seçeneklerle birlikte uygulamanın .deps.json dosyasında depolanır. ve özelliklerini kullanarak DependencyContext.CompileLibrariesDependencyContext.CompilationOptions bu bilgileri alabilirsiniz.
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 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.
ProduceReferenceAssemblyInOutDir
.NET 5 ve önceki sürümlerinde, başvuru derlemeleri her zaman dizine OutDir yazılır. .NET 6 ve sonraki sürümlerinde, başvuru derlemelerinin dizine yazıp yazılmayacağını denetlemek için ProduceReferenceAssemblyInOutDir özelliğini kullanabilirsinizOutDir. Varsayılan değer olur falseve başvuru derlemeleri yalnızca dizinine IntermediateOutputPath yazılır. Dizine true başvuru derlemeleri yazmak için OutDir değerini olarak ayarlayın.
<PropertyGroup>
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>
Daha fazla bilgi için bkz . Başvuru derlemelerini ara çıkışa yazma.
PublishDocumentationFile
Bu özellik olduğunda true, proje için XML belge dosyası (oluşturulduysa) projenin yayımlama çıkışına eklenir. Bu özellik varsayılan olarak olarak gösterilir true.
PublishDocumentationFiles
Bu özellik, çeşitli XML belge dosyalarının varsayılan olarak PublishDocumentationFile ve PublishReferencesDocumentationFiles adlı yayımlama dizinine kopyalanıp kopyalanmayacağını denetleyen diğer birçok özellik için bir etkinleştirme bayrağıdır. Bu özellikler ayarlanmamışsa ve bu özellik ayarlanmışsa, bu özellikler varsayılan olarak olur true. Bu özellik varsayılan olarak olarak gösterilir true.
PublishReferencesDocumentationFiles
Bu özellik olduğunda true, projenin başvuruları için XML belge dosyaları yalnızca DLL dosyaları gibi çalışma zamanı varlıkları yerine yayımlama dizinine kopyalanır. Bu özellik varsayılan olarak olarak gösterilir true.
PublishReferencesSymbols
Bu özellik olduğunda true, projenin başvuruları için sembol dosyaları (PDB dosyaları olarak da bilinir), yalnızca DLL dosyaları gibi çalışma zamanı varlıkları yerine yayımlama dizinine kopyalanır. Bu özellik varsayılan olarak olarak gösterilir true.
PublishRelease
özelliği yapılandırma PublishRelease yerine varsayılan olarak yapılandırmayı dotnet publishRelease kullanmayı bildirirDebug. Bu özellik .NET 7'de tanıtıldı.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Note
- .NET 8 SDK'sında başlayarak,
PublishRelease.NET 8 veya sonraki sürümleri hedefleyen projeler için varsayılan olarak varsayılan değerdirtrue. Daha fazla bilgi için bkz . 'dotnet publish', Sürüm yapılandırmasını kullanır. - Bu özellik, davranışını
dotnet build /t:Publishetkilemez ve yapılandırmayı yalnızca .NET CLI aracılığıyla yayımlarken değiştirir.
PublishSelfContained
özelliği, PublishSelfContained bir uygulamayı bağımsızdotnet publishuygulama olarak yayımlamayı bildirir. Bu özellik, dotnet publish--self-containedbağımsız değişkenini kullanamadığınızda (örneğin, çözüm düzeyinde yayımladığınızda) kullanışlıdır. Bu durumda, MSBuild özelliğini bir projeye veya PublishSelfContained dosyasına ekleyebilirsiniz.
Bu özellik .NET 7'de tanıtıldı. SelfContained özelliğine benzer, ancak fiil için publish özeldir. yerine PublishSelfContainedkullanılması SelfContained önerilir.
<PropertyGroup>
<PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>
RollForward
özelliği, RollForward birden çok çalışma zamanı sürümü kullanılabilir olduğunda uygulamanın çalışma zamanını nasıl seçtiğini denetler. Bu değer, ayar olarak .runtimeconfig.json çıkışıdır.rollForward
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Aşağıdaki değerlerden birine ayarlayın RollForward :
| Value | Description |
|---|---|
Minor |
Belirtilmezse varsayılan . İstenen ikincil sürüm eksikse, sonraki kullanılabilir daha yüksek ikincil sürüme (ve bu ikincil sürümdeki en yüksek kullanılabilir düzeltme eki sürümüne) iletin. İstenen ikincil sürüm varsa, LatestPatch ilke kullanılır. |
Major |
İstenen ana sürüm eksikse sonraki kullanılabilir daha yüksek ana sürüme (kullanılabilir en düşük ikincil sürümde ve bu ikincil sürümdeki en yüksek kullanılabilir düzeltme eki sürümüne) iletin. İstenen ana sürüm varsa, Minor ilke kullanılır. |
LatestPatch |
İstenen birincil ve ikincil sürümler için kullanılabilir en yüksek düzeltme eki sürümüne ileri sarma. Bu değer ikincil sürüm ileri sarmayı devre dışı bırakır. |
LatestMinor |
İstenen ikincil sürüm mevcut olsa bile, istenen ana sürüm için kullanılabilir en yüksek ikincil sürüme (ve bu ikincil sürümdeki en yüksek kullanılabilir düzeltme eki sürümüne) iletin. |
LatestMajor |
İstenen ana sürüm mevcut olsa bile en yüksek kullanılabilir ana sürüme (ve söz konusu ana sürümde en yüksek kullanılabilir ikincil ve düzeltme eki sürümüne) ileri sarmalayın. |
Disable |
İletmeyin, yalnızca belirtilen sürüme bağlayın. Bu ilke, en son düzeltme eklerine iletme özelliğini devre dışı bırakması nedeniyle genel kullanım için önerilmez. Bu değer yalnızca test için önerilir. |
Daha fazla bilgi için bkz . İleri sarma davranışını denetleme.
RuntimeFrameworkVersion
RuntimeFrameworkVersion özelliği, yayımlama sırasında kullanılacak ç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ımlandığında, bu değer gereken en düşük sürümü belirtir. Bağımsız bir uygulama yayımlarken, bu değer tam olarak gereken sürümü belirtir.
RuntimeIdentifier
özelliği, RuntimeIdentifier proje için tek bir çalışma zamanı tanımlayıcısı (RID) belirtmenize olanak tanır. RID, bağımsız dağıtım yayımlamayı etkinleştirir.
<PropertyGroup>
<RuntimeIdentifier>linux-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 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.
Tip
RuntimeIdentifier (tekil) yalnızca tek bir çalışma zamanı gerektiğinde daha hızlı derlemeler sağlayabilir.
<PropertyGroup>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
özelliği, SatelliteResourceLanguages derleme ve yayımlama sırasında uydu kaynak derlemelerini korumak istediğiniz dilleri belirtmenize olanak tanır. Birçok NuGet paketi, ana paketteki yerelleştirilmiş kaynak uydu derlemelerini içerir. Yerelleştirilmiş kaynaklar gerektirmeyen bu NuGet paketlerine başvuran projeler için, yerelleştirilmiş derlemeler derlemeyi gereksiz yere şişirebilir ve çıkış boyutunu yayımlayabilir. özelliği proje dosyanıza eklendiğinde SatelliteResourceLanguages derleme ve yayımlama çıkışına yalnızca belirttiğiniz diller için yerelleştirilmiş derlemeler eklenir. Örneğin, aşağıdaki proje dosyasında yalnızca İngilizce (ABD) ve Almanca (Almanya) kaynak uydu derlemeleri korunur.
<PropertyGroup>
<SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>
Note
Yerelleştirilmiş kaynak uydu derlemeleriyle NuGet paketine başvuran projede bu özelliği belirtmeniz gerekir.
bağımsız değişkeni olarak birden çok dil belirtmek için
dotnet publish, dil tanımlayıcılarının çevresine üç çift tırnak işareti eklemeniz gerekir. Örneğin:dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
SelfContained
özelliği, SelfContained bir uygulamayı bağımsızdotnet buildderlemeyi veya yayımlamayı ve bildirir dotnet publish. Bu özellik, bağımsız değişkeni dotnet--self-containedkullanamadığınızda (örneğin, çözüm düzeyinde yayımlarken) kullanışlıdır. Bu durumda, MSBuild özelliğini bir projeye veya SelfContained dosyasına ekleyebilirsiniz.
Bu özellik PublishSelfContained özelliğine benzer. Mümkün olduğunda yerine PublishSelfContained kullanılması SelfContained önerilir.
<PropertyGroup>
<SelfContained>true</SelfContained>
</PropertyGroup>
UseAppHost
özelliği, UseAppHost bir dağıtım için yerel yürütülebilir dosya oluşturulup oluşturulmayacağını denetler. Bağımsız dağıtımlar için yerel yürütülebilir dosya gereklidir. Çerçeveye bağımlı yürütülebilir dosya varsayılan olarak oluşturulur. Yürütülebilir dosyanın oluşturulmasını UseAppHost devre dışı bırakmak için özelliğini false olarak ayarlayın.
<PropertyGroup>
<UseAppHost>false</UseAppHost>
</PropertyGroup>
Dağıtım hakkında daha fazla bilgi için bkz . .NET uygulama dağıtımı.
Kırpmayla ilgili özellikler
Çok sayıda MSBuild özelliği, kullanılmayan kodu bağımsız dağıtımlardan kırpan bir özellik olan kırpmaya ince ayar yapmak için kullanılabilir. Bu seçenekler Kırpma seçenekleri bölümünde ayrıntılı olarak ele alınıyor. Aşağıdaki tabloda hızlı bir başvuru sağlanmaktadır.
| Property | Values | Description |
|---|---|---|
PublishTrimmed |
true veya false |
Yayımlama sırasında kırpmanın etkinleştirilip etkinleştirilmediğini denetler. |
TrimMode |
full veya partial |
Varsayılan full değeridir. Kırpma ayrıntı düzeyini denetler. |
SuppressTrimAnalysisWarnings |
true veya false |
Kırpma analizi uyarılarının üretilip üretmeyeceğini denetler. |
EnableTrimAnalyzer |
true veya false |
Kırpma analizi uyarılarının bir alt kümesinin üretilip üretmeyeceğini denetler. olarak ayarlanmış olsa PublishTrimmed bile çözümlemeyi falseetkinleştirebilirsiniz. |
ILLinkTreatWarningsAsErrors |
true veya false |
Kırpma uyarılarının hata olarak ele alıp almayacağını denetler. Örneğin, bu özelliği falseTreatWarningsAsErrors olarak ayarlandığında olarak ayarlamak trueisteyebilirsiniz. |
TrimmerSingleWarn |
true veya false |
Derleme başına tek bir uyarının mı yoksa tüm uyarıların mı gösterileceğini denetler. |
TrimmerRemoveSymbols |
true veya false |
Kırpılmış bir uygulamadan tüm simgelerin kaldırılıp kaldırılmayacağını denetler. |
Derlemeyle ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DocumentationFile
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- EnableWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
- BuildWithNetFrameworkHostedCompiler
- RoslynCompilerType
ve LangVersiongibi Nullable C# derleyici seçenekleri, proje dosyanızda MSBuild özellikleri olarak da belirtilebilir. Daha fazla bilgi için bkz . C# derleyici seçenekleri.
ContinuousIntegrationBuild
özelliği, ContinuousIntegrationBuild bir derlemenin sürekli tümleştirme (CI) sunucusunda yürütülüyor olup olmadığını gösterir. olarak trueayarlandığında, bu özellik bir geliştirici makinesindeki yerel derlemelerin aksine yalnızca resmi derlemeler için geçerli olan ayarları etkinleştirir. Örneğin, depolanan dosya yolları resmi derlemeler için normalleştirilir. Ancak yerel bir geliştirme makinesinde, dosya yolları normalleştirilmişse hata ayıklayıcısı yerel kaynak dosyaları bulamaz.
Note
Şu anda, bu özelliğin true ayarlanması yalnızca belirli bir SourceLink sağlayıcı paketi başvurusu veya öğe <SourceRoot Include="$(MyDirectory)" /> eklediğinizde çalışır. Daha fazla bilgi için bkz . dotnet/roslyn sorunu 55860.
Özelliğini koşullu olarak ayarlamak için CI sisteminizin değişkenini ContinuousIntegrationBuild kullanabilirsiniz. Örneğin, Azure Pipelines değişken adı:TF_BUILD
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
GitHub Actions için değişken adı:GITHUB_ACTIONS
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
Bu özellik olarak trueayarlandığında, projedeki öğelerden PackageReference gelen tüm sembol dosyaları (PDB dosyaları olarak da bilinir) derleme çıkışına kopyalanır. Bu dosyalar özel durumlar için daha bilgilendirici yığın izlemeleri sağlayabilir ve çalışan uygulamanın bellek dökümlerini ve izlemelerini daha kolay anlaşılır hale getirebilir. Ancak, bu dosyalar dahil olmak dağıtım paketi boyutunun artmasına neden olur.
Bu özellik,.NET SDK 7.0.100'de kullanıma sunulmuştur ancak varsayılan olarak belirtilmemiştir.
CopyDocumentationFilesFromPackages
Bu özellik olarak trueayarlandığında, projedeki öğelerden PackageReference oluşturulan tüm XML belge dosyaları derleme çıkışına kopyalanır. Bu özelliğin etkinleştirilmesi dağıtım paketi boyutunun artmasına neden olur.
Bu özellik,.NET SDK 7.0.100'de kullanıma sunulmuştur ancak varsayılan olarak belirtilmemiştir.
DisableImplicitFrameworkDefines
özelliği, DisableImplicitFrameworkDefines SDK'nın .NET projesi için hedef çerçeve ve platform için ön işlemci sembolleri oluşturup oluşturmadığını denetler. Bu özellik olarak false ayarlandığında veya ayarsız olduğunda (varsayılan değerdir) önişlemci sembolleri şunlar için oluşturulur:
- Sürümsüz çerçeve (
NETFRAMEWORK,NETSTANDARD,NET) - Sürümlü çerçeve (
NET48,NETSTANDARD2_0,NET6_0) - Sürüm en düşük sınırlı çerçeve (
NET48_OR_GREATER,NETSTANDARD2_0_OR_GREATER,NET6_0_OR_GREATER)
Hedef çerçeve takma adlarını ve bu örtük önişlemci sembollerini hakkında daha fazla bilgi için bkz . Hedef çerçeveler.
Ayrıca, projede işletim sistemine özgü bir hedef çerçeve belirtirseniz (örneğin net6.0-android), aşağıdaki ön işlemci simgeleri oluşturulur:
- Sürümü olmayan platform (
ANDROID,IOS,WINDOWS) - Sürüme sahip platform (
IOS15_1) - Sürüm en düşük sınırlı platform (
IOS15_1_OR_GREATER)
İşletim sistemine özgü hedef çerçeve takma adlarıyla ilgili 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ılır. Örneğin, net6.0. Bu nedenle, bu hedef çerçevelerin her biri için sürüm en düşük sınır simgesine sahip Çerçeve tanımlanır.
DocumentationFile
özelliği, DocumentationFile kitaplığınızın belgelerini içeren XML dosyası için bir dosya adı belirtmenize olanak tanır. IntelliSense'in belgelerinizle doğru çalışması için dosya adının derleme adıyla aynı olması ve derlemeyle aynı dizinde olması gerekir. Bu özelliği belirtmezseniz ancak GenerateDocumentationFile, belge dosyasının adı varsayılan olarak derlemenizin adıdır ancak .xmltrueuzantısına sahiptir. Bu nedenle, genellikle bu özelliği atlayıp bunun yerine GenerateDocumentationFile özelliğini kullanmak daha kolaydır.
Bu özelliği belirtir ancak GenerateDocumentationFile değerini olarak ayarlarsanız, derleyici false. Bu özelliği belirtir ve GenerateDocumentationFile özelliğini atlarsanız, derleyici bir belge dosyası oluşturur.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
EmbeddedResourceUseDependentUponConvention
özelliği, EmbeddedResourceUseDependentUponConvention kaynak bildirim dosyası adlarının kaynak dosyalarıyla birlikte bulunan kaynak dosyalarındaki tür bilgilerinden oluşturulup oluşturulmayacağını tanımlar. Örneğin, Form1.resx Form1.cs ile aynı klasördeyse ve olarak ayarlandıysa, oluşturulan EmbeddedResourceUseDependentUponConvention dosyası adını Form1.cstrueilk türden alır. Form1.cs'deMyNamespace.Form1 tanımlanan ilk türse, oluşturulan dosya adı MyNamespace.Form1.resources olur.
Note
Bir LogicalName öğe için , ManifestResourceNameveya DependentUpon meta veriler belirtilirseEmbeddedResource, bu kaynak dosyası için oluşturulan bildirim dosyası adı bunun yerine bu meta verileri temel alır.
Varsayılan olarak, .NET Core 3.0 veya sonraki bir sürümü hedefleyen yeni bir .NET projesinde bu özellik olarak trueayarlanır. Proje dosyasındaki öğe için olarak ayarlanırsa falseve hiçbir LogicalName, ManifestResourceNameveya DependentUpon meta veri belirtilmezse, kaynak bildirim dosyası adı projenin kök ad alanını ve .resxEmbeddedResourcetemel alır. Daha fazla bilgi için bkz . Kaynak bildirim dosyalarının adı.
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
EnablePreviewFeatures
EnablePreviewFeatures özelliği, projenizin özniteliğiyle RequiresPreviewFeaturesAttribute dekore edilmiş API'lere veya derlemelere bağlı olup olmadığını tanımlar. Bu öznitelik, bir API'nin veya derlemenin kullandığınız SDK sürümü için önizlemede kabul edilen özellikleri kullandığını göstermek için kullanılır. Önizleme özellikleri desteklenmez ve gelecekteki bir sürümde kaldırılabilir. Önizleme özelliklerinin kullanımını etkinleştirmek için özelliğini olarak Trueayarlayın.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Bir proje bu özellik olarak ayarlandığındaTrue, AssemblyInfo.cs dosyasına aşağıdaki derleme düzeyi özniteliği eklenir:
[assembly: RequiresPreviewFeatures]
Çözümleyici, bu özniteliğin olarak ayarlanmadığı EnablePreviewFeaturesTrueprojeler için bağımlılıklarda mevcut olup olmadığı konusunda uyarır.
Önizleme derlemelerini göndermeyi planlayan kitaplık yazarları bu özelliği olarak Trueayarlamalıdır. Bir derlemenin önizleme ve önizleme olmayan API'lerin bir karışımıyla birlikte göndermesi gerekiyorsa aşağıdaki GenerateRequiresPreviewFeaturesAttribute bölümüne bakın.
EnableWindowsTargeting
EnableWindowsTargeting Özelliğinitrue, Windows olmayan bir platformda Windows uygulamaları (örneğin, Windows Forms veya Windows Presentation Foundation uygulamaları) oluşturmak için olarak ayarlayın. Bu özelliği olarak trueayarlamazsanız NETSDK1100 derleme uyarısı alırsınız. Hedefleme ve çalışma zamanı paketleri desteklenmeyen platformlara otomatik olarak indirilmediğinden bu hata oluşur. Bu özellik ayarlandığında, bu paketler çapraz hedefleme sırasında indirilir.
Note
Bu özellik şu anda Windows dışı platformlarda geliştirmeye izin vermek için önerilir. Ancak uygulama kullanıma sunulmaya hazır olduğunda Windows üzerinde derlenmelidir. Windows olmayan bir platformda derleme yaparken çıkış, Windows'da derlemeyle aynı olmayabilir. Özellikle yürütülebilir dosya bir Windows uygulaması olarak işaretlenmez (bu, her zaman bir konsol penceresi başlatacağı anlamına gelir) ve eklenmiş bir simge yoktur.
<PropertyGroup>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
GenerateDocumentationFile
özelliği, GenerateDocumentationFile derleyicinin kitaplığınız için bir XML belge dosyası oluşturup oluşturmadığını denetler. Bu özelliği olarak true ayarlarsanız ve DocumentationFile özelliği aracılığıyla bir dosya adı belirtmezseniz, oluşturulan XML dosyası derlemenizle aynı çıkış dizinine yerleştirilir ve aynı dosya adına (ancak .xml uzantısına sahiptir) sahiptir.
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Kod açıklamalarından belge oluşturma hakkında daha fazla bilgi için bkz . XML belge açıklamaları (C#), Kodunuzu XML ile belgeleme (Visual Basic)veya Kodunuzu XML ile belgeleme (F#).
GenerateRequiresPreviewFeaturesAttribute
GenerateRequiresPreviewFeaturesAttribute özelliği EnablePreviewFeatures özelliğiyle yakından ilgilidir. Kitaplığınızda önizleme özellikleri kullanılıyorsa ancak derlemenin tamamının RequiresPreviewFeaturesAttribute özniteliğiyle işaretlenmesini istemiyorsanız ve bu da tüketicilerin önizleme özelliklerini etkinleştirmesini gerektiriyorsa, bu özelliği olarak Falseayarlayın.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Important
özelliğini GenerateRequiresPreviewFeaturesAttributeolarak ayarlarsanızFalse, ile RequiresPreviewFeaturesAttributeönizleme özelliklerine dayanan tüm genel API'leri süslediğinizden emin olmanız gerekir.
OptimizeImplicitlyTriggeredBuild
Derleme süresini hızlandırmak için Visual Studio tarafından örtük olarak tetiklenen derlemeler, null atanabilir analiz de dahil olmak üzere kod analizini atlar. Visual Studio, örneğin testleri çalıştırdığınızda örtük bir derleme tetikler. Ancak örtük derlemeler yalnızca değilken TreatWarningsAsErrorstrueiyileştirilir. olarak ayarladıysanız TreatWarningsAsErrorstrue ancak yine de örtük olarak tetiklenen derlemelerin en iyi duruma getirilmesini istiyorsanız olarak ayarlayabilirsinizOptimizeImplicitlyTriggeredBuildTrue. Örtük olarak tetiklenen derlemeler için derleme iyileştirmesini kapatmak için olarak OptimizeImplicitlyTriggeredBuildayarlayınFalse.
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
DisableRuntimeMarshalling
özelliği, DisableRuntimeMarshalling projeniz için çalışma zamanı hazırlama desteğini devre dışı bırakmak istediğinizi belirtmenizi sağlar. Bu özellik olarak trueDisableRuntimeMarshallingAttribute ayarlanırsa, derlemeye eklenir ve tüm P/Invoke'lar veya temsilci tabanlı birlikte çalışma zamanı hazırlama devre dışı bırakma kurallarına uyar.
<PropertyGroup>
<DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>
BuildWithNetFrameworkHostedCompiler
Belirtme BuildWithNetFrameworkHostedCompiler=true , öğesini belirtmekle RoslynCompilerType=FrameworkPackageeşdeğerdir. Daha fazla bilgi için bkz. RoslynCompilerType.
Belirtilmesi BuildWithNetFrameworkHostedCompiler=false , otomatik kabul etme RoslynCompilerType=FrameworkPackage işleminin gerçekleşmemesini sağlar.
Açıkça belirtilirse RoslynCompilerType , BuildWithNetFrameworkHostedCompiler hiçbir etkisi yoktur.
RoslynCompilerType
RoslynCompilerType özelliği C# veya Visual Basic derleyicisinin sürümünü denetler. Aşağıdaki değerler tanınır:
-
Core: .NET SDK ile birlikte gelen derleyiciyi kullanın. .NET Framework MSBuild kullanılırken bile .NET 10'dan bu yana varsayılan değer budur. -
Framework: .NET Framework MSBuild ile birlikte gelen derleyiciyi kullanın. -
FrameworkPackage: .NET Framework MSBuild kullanırken ,NET SDK sürümüne karşılık gelen .NET Framework derleyicisi ile bir paket indirin ve kullanın.
Varsayılan öğe ekleme özellikleri
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
Daha fazla bilgi için bkz . Varsayılan ekleme ve dışlamalar.
DefaultItemExcludes
DefaultItemExcludes Ekleme, dışlama ve kaldırma glob'larından dışlanması gereken dosya ve klasörler için glob desenlerini tanımlamak için özelliğini kullanın. Varsayılan olarak, ./bin ve ./obj klasörleri glob desenlerinin dışında tutulur.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
Note
özelliği, DefaultItemExcludes dosya ve klasörlerin tarafından dotnet watchizlenmesini dışlar. Daha fazla bilgi için bkz. Belirtilen klasörleri ve dosyaları kimden dotnet watchyoksayma.
DefaultItemExcludesInProjectFolder
DefaultItemExcludesInProjectFolder Ekleme, dışlama ve kaldırma glob'lerinden hariç tutulması gereken proje klasöründeki dosya ve klasörler için glob desenlerini tanımlamak için özelliğini kullanın. Varsayılan olarak, ..git ve .vs gibi nokta () ile başlayan klasörler glob desenlerinin dışında tutulur.
Bu özellik özelliğine DefaultItemExcludes çok benzer, ancak yalnızca proje klasöründeki dosya ve klasörleri dikkate alır. Glob deseni, proje klasörünün dışındaki öğeleri istemeden göreli bir yolla eşleştirdiğinde, özelliği yerine DefaultItemExcludesInProjectFolder özelliğini kullanınDefaultItemExcludes.
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
özelliği derleme öğelerinin EnableDefaultItems , eklenmiş kaynak öğelerinin ve None öğelerin örtük olarak projeye dahil edilip edilmeyeceğini denetler. Varsayılan değer şudur: true.
EnableDefaultItems Tüm örtük false dosya eklemeyi devre dışı bırakmak için özelliğini olarak ayarlayın.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
özelliği, EnableDefaultCompileItems derleme öğelerinin projeye örtük olarak eklenip eklenmeyeceğini denetler. Varsayılan değer şudur: true.
EnableDefaultCompileItems*.cs ve diğer dil uzantısı dosyalarının örtük eklenmesini devre dışı bırakmak için özelliğini false olarak ayarlayın.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
EnableDefaultEmbeddedResourceItems
özelliği, EnableDefaultEmbeddedResourceItems katıştırılmış kaynak öğelerinin projeye örtük olarak eklenip eklenmeyeceğini denetler. Varsayılan değer şudur: true. Ekli kaynak dosyalarının EnableDefaultEmbeddedResourceItems örtük olarak eklenmesini devre dışı bırakmak için özelliğini false olarak ayarlayın.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
özelliği, EnableDefaultNoneItems öğelerin (derleme işleminde rolü olmayan dosyalar) örtük olarak projeye dahil edilip edilmeyeceğini None denetler. Varsayılan değer şudur: true.
EnableDefaultNoneItems Öğelerin örtük false eklenmesini None devre dışı bırakmak için özelliğini olarak ayarlayın.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Kod çözümleme özellikleri
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- AnalysisLevel
- AnalysisLevel<Kategorisi>
- AnalysisMode
- AnalysisMode<Kategorisi>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
özelliği, AnalysisLevel .NET sürümüne göre çalıştırılacak bir dizi kod çözümleyicisi belirtmenize olanak tanır. Her .NET sürümünün bir dizi kod çözümleme kuralı vardır. Bu kümenin, bu sürüm için varsayılan olarak etkinleştirilen kuralları kodunuzu analiz. Örneğin, .NET 8'den .NET 9'a yükseltirseniz ancak varsayılan kod çözümleme kuralları kümesinin değişmesini istemiyorsanız olarak ayarlayın AnalysisLevel8.
<PropertyGroup>
<AnalysisLevel>8</AnalysisLevel>
</PropertyGroup>
İsteğe bağlı olarak, bu özellik için kuralların ne kadar agresif etkinleştirileceğini de belirten bir bileşik değer belirtebilirsiniz. Bileşik değerler, değerin AnalysisMode<version>-<mode>olduğu <mode> biçimindedir. Aşağıdaki örnek kod çözümleyicilerinin sürümünü kullanır preview ve kural kümesini etkinleştirir recommended .
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Varsayılan değer:
- Projeniz .NET 5 veya üzerini hedeflediyse veya AnalysisMode özelliğini eklediyseniz
- Aksi takdirde, proje dosyasına açıkça eklemediğiniz sürece bu özellik atlanır.
Aşağıdaki tabloda belirtebileceğiniz değerler gösterilmektedir.
| Value | Meaning |
|---|---|
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.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
preview |
En son kod çözümleyicileri, önizleme aşamasında olsalar bile kullanılır. |
preview-<mode> |
En son kod çözümleyicileri, önizleme aşamasında olsalar bile kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
10.0 |
Daha yeni kurallar kullanılabilse bile .NET 10 sürümü için kullanılabilen kurallar kümesi kullanılır. |
10.0-<mode> |
Daha yeni kurallar kullanılabilse bile .NET 10 sürümü için kullanılabilen kurallar kümesi kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
10 |
Daha yeni kurallar kullanılabilse bile .NET 10 sürümü için kullanılabilen kurallar kümesi kullanılır. |
10-<mode> |
Daha yeni kurallar kullanılabilse bile .NET 10 sürümü için kullanılabilen kurallar kümesi kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
9.0 |
.NET 9 sürümü için kullanılabilir olan kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
9.0-<mode> |
.NET 9 sürümü için kullanılabilir olan kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
9 |
.NET 9 sürümü için kullanılabilir olan kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
9-<mode> |
.NET 9 sürümü için kullanılabilir olan kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
8.0 |
.NET 8 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
8.0-<mode> |
.NET 8 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
8 |
.NET 8 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
8-<mode> |
.NET 8 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır.
<mode> Değeri, hangi kuralların etkinleştirileceğini belirler. |
Note
- EnforceCodeStyleInBuild olarak ayarlarsanız
true - için
AnalysisLevelbileşik bir değer ayarlarsanız AnalysisMode belirtmeniz gerekmez. Ancak, bunu yaparsanız,AnalysisLevelüzerindeAnalysisModeöncelikli olur. - Bu özelliğin, bir proje SDK'sine başvurmamış projelerde kod analizi üzerinde hiçbir etkisi yoktur; örneğin, Microsoft.CodeAnalysis.NetAnalyzers NuGet paketine başvuran eski .NET Framework projeleri. Daha fazla bilgi için bkz. Eski projelerde kod analizini etkinleştirme.
AnalysisLevel<Kategorisi>
Bu özellik AnalysisLevel ile aynıdır, ancak yalnızca belirli bir kod çözümleme kuralları kategorisi için geçerlidir. Bu özellik, belirli bir kategori için farklı bir kod çözümleyicisi sürümü kullanmanıza veya diğer kural kategorilerinden farklı bir düzeyde kuralları etkinleştirmenize veya devre dışı bırakmanıza olanak tanır. Bu özelliği belirli bir kural kategorisi için atlarsanız, varsayılan olarak AnalysisLevel değeri olur. Kullanılabilir değerler AnalysisLevel ile 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 SDK'sı tüm "CA" kod kalitesi kurallarıyla birlikte gelir. Varsayılan olarak, her .NET sürümünde yalnızca bazı kurallar derleme uyarıları olarak etkinleştirilir . özelliği, AnalysisMode varsayılan olarak etkinleştirilen kural kümesini özelleştirmenize olanak tanır. Kuralları tek tek geri çevirebileceğiniz daha agresif bir analiz moduna veya belirli kuralları kabul ettiğiniz daha muhafazakar bir analiz moduna geçebilirsiniz. Örneğin, tüm kuralları derleme uyarıları olarak etkinleştirmek istiyorsanız, değerini olarak Allayarlayın.
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
Aşağıdaki tabloda kullanılabilir seçenek değerleri gösterilmektedir. Etkinleştirdikleri kural sayısı artarak listelenir.
| Value | Description |
|---|---|
None |
Tüm kurallar devre dışı bırakılır. Kuralları etkinleştirmek için tek tek kuralları seçmeli olarak kabul edebilirsiniz. |
Default |
Belirli kuralların derleme uyarıları olarak etkinleştirildiği, visual studio IDE önerileri olarak belirli kuralların etkinleştirildiği ve kalanların devre dışı bırakıldığı varsayılan mod. |
Minimum |
Moddan daha Default agresif mod. Derleme zorlaması için kesinlikle önerilen bazı öneriler, derleme uyarıları olarak etkinleştirilir. Bunun hangi kuralları içerdiğini görmek için %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig dosyasını inceleyin. (.NET 7 ve önceki sürümler için dosya uzantısı .editorconfig |
Recommended |
Derleme uyarıları olarak daha fazla kuralın etkinleştirildiği moddan daha Minimum agresif mod. Bunun hangi kuralları içerdiğini görmek için %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig dosyasını inceleyin. (.NET 7 ve önceki sürümler için dosya uzantısı .editorconfig |
All |
Tüm kurallar derleme uyarıları* olarak etkinleştirilir. Kuralları devre dışı bırakmak için tek tek kuralları seçmeli olarak geri çevirebilirsiniz. * Şu kurallar : CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 ve kod ölçümleri çözümleyicisi kuralları (CA1501, CA1502, CA1505, CA1506 ve CA1509). Bu eski kurallar gelecekteki bir sürümde kullanım dışı bırakılmış olabilir. Ancak, yine de bir dotnet_diagnostic.CAxxxx.severity = <severity> giriş kullanarak bunları tek tek etkinleştirebilirsiniz. |
Note
- EnforceCodeStyleInBuild olarak ayarlarsanız
true - AnalysisLevel için bileşik bir değer kullanırsanız, örneğin,
<AnalysisLevel>9-recommended</AnalysisLevel>bu özelliği tamamen atlayabilirsiniz. Ancak, her iki özelliği de belirtirseniz,AnalysisLevelönceliklidirAnalysisMode.
AnalysisMode<Kategorisi>
Bu özellik AnalysisMode ile aynıdır, ancak yalnızca belirli bir kod analizi kuralları kategorisi için geçerlidir. Bu özellik, kuralları diğer kural kategorilerinde farklı bir düzeyde etkinleştirmenize veya devre dışı bırakmanıza olanak tanır. Bu özelliği belirli bir kural kategorisi için atlarsanız, varsayılan olarak AnalysisMode değeri olur. Kullanılabilir değerler AnalysisMode ile 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 çözümleme uyarılarının (CAxxxx) uyarı olarak ele alınıp alınmayacağını yapılandırmanıza ve derlemeyi kesmenize olanak tanır. Projelerinizi oluştururken bayrağını -warnaserror kullanırsanız, .NET kod kalitesi analizi uyarıları da hata olarak değerlendirilir. Kod kalitesi çözümleme uyarılarının hata olarak değerlendirilmesini istemiyorsanız, msbuild özelliğini CodeAnalysisTreatWarningsAsErrors proje dosyanızda olarak ayarlayabilirsinizfalse.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
.NET 5 veya sonraki bir sürümü hedefleyen projeler için .NET kod kalitesi analizi varsayılan olarak etkindir. .NET 5+ SDK'sını kullanarak geliştiriyorsanız, özelliğini EnableNETAnalyzersolarak ayarlayarak .NET'in önceki sürümlerini hedefleyen SDK stili projeler için .NET kod analizini true etkinleştirebilirsiniz. Herhangi bir projede kod çözümlemesini devre dışı bırakmak için bu özelliği olarak falseayarlayın.
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Note
Bu özellik özellikle .NET 5+ SDK'daki yerleşik çözümleyiciler için geçerlidir. NuGet kod çözümleme paketi yüklediğinizde kullanılmamalıdır.
EnforceCodeStyleInBuild
.NET kod stili analizi , tüm .NET projeleri için derlemede varsayılan olarak devre dışıdır. özelliğini EnforceCodeStyleInBuildolarak ayarlayarak .NET projeleri için kod stili 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 ihlallerinde yürütülür.
_SkipUpgradeNetAnalyzersNuGetWarning
özelliği, _SkipUpgradeNetAnalyzersNuGetWarning en son .NET SDK'sında kod çözümleyicileriyle karşılaştırıldığında güncel olmayan bir NuGet paketinden kod çözümleyicileri kullanıyorsanız uyarı alıp alamayacağınızı yapılandırmanıza olanak tanır. Uyarı şuna 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 sahiptir. Bu paket başvuruyu güncelleştirin veya kaldırın.
Bu uyarıyı kaldırmak ve NuGet paketindeki kod çözümleyicilerinin sürümünü kullanmaya devam etmek için proje dosyanızda olarak _SkipUpgradeNetAnalyzersNuGetWarning ayarlayıntrue.
<PropertyGroup>
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>
Çalışma zamanı yapılandırma özellikleri
Uygulamanın proje dosyasında MSBuild özelliklerini belirterek bazı çalışma zamanı davranışlarını 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ı.
- AutoreleasePoolSupport
- ConcurrentGarbageCollection
- InvariantGlobalization
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- TieredPGO
- UseWindowsThreadPool
AutoreleasePoolSupport
özelliği, AutoreleasePoolSupport desteklenen bir macOS platformunda çalışırken her yönetilen iş parçacığının örtük bir NSAutoreleasePool alıp almayacağını yapılandırmaktadır. Daha fazla bilgi için bkz AutoreleasePool . yönetilen iş parçacıkları için.
<PropertyGroup>
<AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>
ConcurrentGarbageCollection
özelliği arka ConcurrentGarbageCollection plan (eşzamanlı) çöp toplamanın etkinleştirilip etkinleştirilmediğini yapılandırmaktadır. Arka plan çöp toplamayı devre dışı bırakmak için değerini false 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ışıp çalışmayacağını yapılandırır ve bu da kültüre özgü verilere erişimi olmadığı anlamına gelir. Genelleştirme sabit modunda çalıştırılacak değeri true olarak ayarlayın. Daha fazla bilgi için bkz . Sabit mod.
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
PredefinedCulturesOnly
.NET 6 ve sonraki sürümlerinde özelliği, PredefinedCulturesOnly genelleştirme sabit modu etkinleştirildiğinde uygulamaların sabit kültür dışında kültürler oluşturup oluşturamayacağını yapılandırır. Varsayılan değer: true. Genelleştirme sabit modunda herhangi bir yeni kültürün oluşturulmasına izin vermek için değerini false 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, RetainVMGarbageCollection atık toplayıcıyı, silinen bellek kesimlerini daha sonra kullanmak veya serbest bırakmak üzere bekleme listesine koyacak şekilde yapılandırıyor. değerini olarak true ayarlamak, çöp toplayıcıya segmentleri bekleme listesine koyması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ı kullanmak için değerini true 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ırmaktadır. 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ı derleme kullanıp kullanmadığını yapılandırmaktadır. Katmanlı derlemeyi devre dışı bırakmak için değerini false olarak ayarlayın. Daha fazla bilgi için bkz . Katmanlı derleme.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
özelliği, TieredCompilationQuickJit JIT derleyicisinin hızlı JIT kullanıp kullanmadığını yapılandırmaktadır. Hızlı JIT'yi false 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 derleyicisinin döngü içeren yöntemlerde hızlı JIT kullanıp kullanmadığını yapılandırmaktadır. Döngü içeren yöntemlerde hızlı JIT'yi etkinleştirmek için değerini true olarak ayarlayın. Daha fazla bilgi için bkz . Döngüler için hızlı JIT.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
TieredPGO
özelliği, TieredPGO dinamik veya katmanlı profil destekli iyileştirmenin (PGO) etkinleştirilip etkinleştirilmediğini denetler. Katmanlı PGO'yu etkinleştirmek için değerini true olarak ayarlayın. Daha fazla bilgi için bkz . Profil temelli iyileştirme.
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
UseWindowsThreadPool
özelliği, UseWindowsThreadPool iş parçacığı havuzu iş parçacığı yönetiminin Windows iş parçacığı havuzuna temsilci olarak atanıp atanmayacağını yapılandırmaktadır (yalnızca Windows). Varsayılan değer olur ve falsebu durumda .NET iş parçacığı havuzu kullanılır. Daha fazla bilgi için bkz . Windows iş parçacığı havuzu.
<PropertyGroup>
<UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>
Başvuruyla ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Geri yüklemeyle ilgili özellikler
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
AssetTargetFallback
özelliği, AssetTargetFallback proje başvuruları ve NuGet paketleri için ek uyumlu çerçeve sürümleri belirtmenize olanak tanır. Örneğin, kullanarak PackageReference bir paket bağımlılığı belirtirseniz ancak bu paket projelerinizle TargetFrameworkAssetTargetFallback uyumlu varlıklar içermiyorsa özelliği devreye girer. Başvuruda bulunılan paketin uyumluluğu, içinde AssetTargetFallbackbelirtilen her hedef çerçeve kullanılarak yeniden denetlendi. Bu özellik, kullanım dışı bırakılan özelliğinin PackageTargetFallbackyerini alır.
özelliğini bir veya daha fazla AssetTargetFallback ayarlayabilirsiniz.
<PropertyGroup>
<AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>
DisableImplicitFrameworkReferences
özelliği, DisableImplicitFrameworkReferences .NET Core 3.0 ve sonraki sürümleri hedeflerken örtük FrameworkReference öğeleri denetler. .NET Core 2.1 veya .NET Standard 2.0 ve önceki sürümleri hedeflerken, meta paketteki paketlere örtük PackageReference öğelerini denetler. (Meta paket oluşturma, yalnızca diğer paketlere bağımlılıklardan oluşan çerçeve tabanlı bir pakettir.) Bu özellik, .NET Framework'ün hedeflenmesi sırasında ve System gibi System.Core örtük başvuruları da denetler.
Örtük FrameworkReference veya PackageReferencetrue öğelerini devre dışı bırakmak için bu özelliği olarak ayarlayın. Bu özelliği olarak trueayarlarsanız, yalnızca ihtiyacınız olan çerçevelere veya paketlere açık başvurular ekleyebilirsiniz.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
DisableTransitiveFrameworkReferenceDownloads
Projeniz tarafından doğrudan başvurulmayan DisableTransitiveFrameworkReferenceDownloads ek çalışma zamanı ve hedefleme paketlerinin indirilmesini önlemek için özelliğini true olarak ayarlayın.
<PropertyGroup>
<DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>
DisableTransitiveProjectReferences
DisableTransitiveProjectReferences özelliği örtük proje başvurularını denetler. Örtük true öğeleri devre dışı bırakmak için bu özelliği olarak ProjectReference ayarlayın. Örtük proje başvurularının devre dışı bırakılması, eski proje sistemine benzer geçişli olmayan davranışlara neden olur.
Bu özellik olduğunda true, bağlı projenin tüm bağımlılıkları üzerindeki ayarına PrivateAssets="All" benzer bir etkiye sahiptir.
Bu özelliği olarak trueayarlarsanız, yalnızca ihtiyacınız olan projelere açık başvurular ekleyebilirsiniz.
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
ManagePackageVersionsCentrally
ManagePackageVersionsCentrally özelliği .NET 7'de kullanıma sunulmuştur. Bunu deponuzun kökündeki Bir true dosyasında olarak ayarlayarak, projelerinizdeki ortak bağımlılıkları tek bir konumdan yönetebilirsiniz. Directory.Packages.props dosyasındaki öğeleri kullanarak PackageVersion ortak paket bağımlılıkları için sürümler ekleyin. Ardından, tek tek proje dosyalarında, merkezi olarak yönetilen paketlere başvuran tüm Version öğelerdeki öznitelikleri atlayabilirsinizPackageReference.
Örnek Directory.Packages.props dosyası:
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
</ItemGroup>
Tek tek proje dosyası:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>
Daha fazla bilgi için bkz. merkezi paket yönetimi (CPM).
Geri yüklemeyle ilgili özellikler
Başvuruda bulunan bir paketin geri yüklenmesi, tüm doğrudan bağımlılıklarını ve bu bağımlılıkların tüm bağımlılıklarını yükler. ve RestorePackagesPathgibi RestoreIgnoreFailedSources özellikleri belirterek paket geri yüklemesini ö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>
UseMauiEssentials
UseMauiEssentials MAUI Essentials'a bağlı bir projeye veya pakete açık bir başvuru bildirmek için özelliğini true olarak ayarlayın. Bu ayar, projenizin MAUI Essentials için doğru bilinen çerçeve başvurularını çekmesini sağlar. Projeniz MAUI Essentials kullanan bir projeye başvuruda bulunursa ancak bu özelliği olarak trueayarlamazsanız derleme uyarısıyla NETSDK1186karşılaşabilirsiniz.
<PropertyGroup>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
ValidateExecutableReferencesMatchSelfContained özelliği yürütülebilir proje başvuruları ile ilgili hataları devre dışı bırakmak için kullanılabilir. .NET, bağımsız bir yürütülebilir projenin çerçeveye bağımlı yürütülebilir projeye başvurduğunu algılarsa (veya tersi) sırasıyla NETSDK1150 ve NETSDK1151 hatalar oluşturur. Başvuru kasıtlı olarak yapıldığında bu hataları önlemek için özelliğini olarak ValidateExecutableReferencesMatchSelfContainedayarlayınfalse.
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
özelliği, WindowsSdkPackageVersion Windows SDK hedefleme paketinin sürümünü geçersiz kılmak için kullanılabilir. Bu özellik .NET 5'te kullanıma sunulmuştur ve öğenin bu amaçla kullanılmasının FrameworkReference yerini alır.
<PropertyGroup>
<WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>
Note
Windows SDK hedefleme paketleri .NET 5+ SDK'ya eklendiğinden Windows SDK sürümünü geçersiz kılmanızı önermiyoruz. Bunun yerine, en son Windows SDK paketine başvurmak için .NET SDK sürümünüzü 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 dotnet run bir uygulamayı başlatmak için kullanılır:
RunArguments
RunArguments özelliği çalıştırıldığında uygulamaya geçirilen bağımsız değişkenleri tanımlar.
<PropertyGroup>
<RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>
RunWorkingDirectory
özelliği, RunWorkingDirectory başlatılacak uygulama işlemi için ç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>
SDK ile ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
SdkAnalysisLevel
.NET 9'da kullanıma sunulan özellik, SDK araçlarının SdkAnalysisLevel ne kadar katı olduğunu yapılandırmak için kullanılabilir. SDK'ları global.json veya başka yollarla sabitleyemediğiniz durumlarda SDK uyarı düzeylerini yönetmenize yardımcı olur. Daha yeni bir SDK'ya, eski SDK'yı yüklemek zorunda kalmadan belirli bir araç veya özellikle ilgili olarak eski bir SDK gibi davranmasını bildirmek için bu özelliği kullanabilirsiniz.
Bu özelliğin izin verilen değerleri SDK özellik bantlarıdır, örneğin, 8.0.100 ve 8.0.400. Değer varsayılan olarak çalışan SDK'nın SDK özellik bandıdır. Örneğin SDK 9.0.102 için kullanılacak değer 9.0.100'dür. (.NET SDK'sının nasıl sürümlendiği hakkında bilgi için bkz. .NET sürümü nasıl oluşturulur.)
<PropertyGroup>
<SdkAnalysisLevel>8.0.400</SdkAnalysisLevel>
</PropertyGroup>
Daha fazla bilgi için bkz . SDK Çözümleme Düzeyi Özelliği ve Kullanımı.
Aşağıdaki tabloda, tarafından SDKAnalysisLeveletkilenen tanılamalar ve davranışlar özetlenmektedir.
| SDKAnalysisLevel | Description | Güncelleştirilmiş davranış |
|---|---|---|
| 9.0.100 | HTTP kaynakları tanılamayı geri yükleme | NU1803 uyarısı yerine NU1302 hatası yayar. |
| 10.0.100 | 'Restore' paket ayıklama | PrunePackageReference , .NET 8+ veya .NET Standard 2.0+ hedefleyen projeler için varsayılan olarak etkindir. |
| 10.0.100 | Kilit dosyalarıyla 'Geri Yükle' çözümleyicisi | Eski bağımlılık grafı çözümleyicisi (.NET 8 SDK ve öncesi) yerine geliştirilmiş .NET 9 bağımlılık grafiği çözümleyicisini kullanır. |
| 10.0.100 | Sürüm olmadan PackageReference için 'Geri Yükleme' davranışı | NU1603 uyarısı yerine NU1015 hatası gösterir. |
Note
Değerin SdkAnalysisLevel etkinleştirdiği davranış, üç ana sürümden sonra eskir (süresi dolar). Örneğin, sürüm 11.0.100 yalnızca 8.0.100'e kadar olan değerleri dikkate alır. Sürüm 12.0.100'de, önceki sürümlerde 8.0.100 değeri ayarlanarak SdkAnalysisLevel devre dışı bırakılabilen özellikler artık devre dışı bırakılmaz.
Microsoft.Testing.Platform ile ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- IsTestingPlatformApplication
- Enable[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnableMSTestRunner
- EnableNUnitRunner
- EnablePlaywright
- GenerateTestingPlatformConfigurationFile
- GenerateTestingPlatformEntryPoint
- TestingExtensionsProfile
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- UseMicrosoftTestingPlatformRunner
IsTestingPlatformApplication
Projeniz Microsoft.Testing.Platform.MSBuild paketine ) aşağıdakileri yapar:
- Test projesine giriş noktasını oluşturur.
- Yapılandırma dosyasını oluşturur.
- Uzantıları algılar.
özelliğinin olarak false ayarlanması, pakete geçişli bağımlılığı devre dışı bırakır.
Geçişli bağımlılık, belirli bir pakete başvuran başka bir projeye başvuran bir projenin pakete başvurur gibi davranmasıdır. Bu özelliği genellikle test projesine false başvuran test dışı bir projede olarak ayarlarsınız. Daha fazla bilgi için bkz . CS8892 hatası.
Test projeniz MSTest, NUnit veya xUnit'e başvuruda bulunsa, bu özellik EnableMSTestRunner, aynı değere ayarlanır.
Enable[NugetPackageNameWithoutDots]
Microsoft.Testing.Platform uzantılarını etkinleştirmek veya devre dışı bırakmak için desenli Enable[NugetPackageNameWithoutDots] bir özellik kullanın.
Örneğin, kilitlenme dökümü uzantısını etkinleştirmek için (NuGet paketi Microsoft.Testing.Extensions.CrashDump), olarak EnableMicrosoftTestingExtensionsCrashDumptrueayarlayın.
Daha fazla bilgi için bkz . Uzantıları etkinleştirme veya devre dışı bırakma.
EnableAspireTesting
MSTest proje SDK'sını EnableAspireTesting kullandığınızda, ve usingile Aspire test etmek için ihtiyacınız olan tüm bağımlılıkları ve varsayılan MSTest yönergeleri getirmek için özelliğini kullanabilirsiniz. Bu özellik MSTest 3.4 ve sonraki sürümlerde kullanılabilir.
Daha fazla bilgi için bkz. Aspire ile test.
EnablePlaywright
MSTest proje SDK'sını EnablePlaywright kullandığınızda, ve usingile Playwright test etmek için ihtiyacınız olan tüm bağımlılıkları ve varsayılan MSTest yönergeleri getirmek için özelliğini kullanabilirsiniz. Bu özellik MSTest 3.4 ve sonraki sürümlerde kullanılabilir.
Daha fazla bilgi için bkz . Playwright.
EnableMSTestRunner
özelliği, EnableMSTestRunner VSTest'e basit ve taşınabilir bir alternatif olan Microsoft.Testing.Platform (MTP) kullanımını etkinleştirir veya devre dışı bırakır. Bu özellik MSTest 3.2 ve sonraki sürümlerde kullanılabilir.
Note
Projeniz MSTest SDK'sını belirtiyorsa bu özelliği ayarlamanız gerekmez. Otomatik olarak ayarlanır.
EnableNUnitRunner
özelliği NUnit EnableNUnitRunner çalıştırıcısının kullanımını etkinleştirir veya devre dışı bırakır. NUnit çalıştırıcısı, VSTest'e basit ve taşınabilir bir alternatiftir. Bu özellik 5.0 ve sonraki sürümlerde NUnit3TestAdapter'da kullanılabilir.
UseMicrosoftTestingPlatformRunner
özelliği, UseMicrosoftTestingPlatformRunnerxUnit.v3 test projelerinde Microsoft.Testing.Platform çalıştırıcısının kullanımını etkinleştirir veya devre dışı bırakır.
GenerateTestingPlatformEntryPoint
GenerateTestingPlatformEntryPoint özelliğinin false olarak ayarlanması, Microsoft.Testing.Platformkullanan test projelerinde program giriş noktasının otomatik olarak oluşturulmasını devre dışı bırakır. Bu özelliği false , bir giriş noktasını el ile tanımlarken veya aynı zamanda bir giriş noktası olan yürütülebilir dosyadan bir test projesine başvururken olarak ayarlamak isteyebilirsiniz.
Daha fazla bilgi için bkz . CS8892 hatası.
Bir VSTest projesinde giriş noktasının oluşturulmasını denetlemek için özelliğini kullanın GenerateProgramFile .
GenerateTestingPlatformConfigurationFile
GenerateTestingPlatformConfigurationFile özelliği yalnızca IsTestingPlatformApplication olduğunda truekullanılabilir. Çıkış klasöründeki yapılandırma dosyasının kopyalanıp yeniden adlandırılıp yeniden adlandırılıp kopyalanmasını sağlamak için kullanılır.
TestingPlatformCaptureOutput
özelliği, TestingPlatformCaptureOutput testleri çalıştırmak dotnet test için kullandığınızda Microsoft.Testing.Platform test yürütülebilir dosyasının yazdığı tüm konsol çıkışlarının yakalanıp yakalanmayacağını ve kullanıcıdan gizlenip gizlenmeyeceğini denetler. Varsayılan olarak, konsol çıkışı gizlidir. Bu çıkış başlık, sürüm bilgileri ve biçimlendirilmiş test bilgilerini içerir. Bu özelliği, bu bilgileri MSBuild çıkışıyla birlikte gösterecek şekilde false ayarlayın.
Daha fazla bilgi için bkz . Tam platform çıkışını gösterme.
TestingPlatformCommandLineArguments
özelliği, TestingPlatformCaptureOutput testleri çalıştırmak dotnet test için kullandığınızda Microsoft.Testing.Platform test uygulaması için komut satırı bağımsız değişkenlerini belirtmenize olanak tanır. Aşağıdaki proje dosyası parçacığı bir örnek gösterir.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
özelliği, TestingPlatformDotnetTestSupport VSTest modunu kullanırken Microsoft.Testing.Platform uygulamalarının test edilmesine dotnet testolanak tanır.
Note
Hem VSTest hem de Microsoft.Testing.Platform projelerine sahip bir çözümü çağırmayın dotnet test çünkü bu senaryo desteklenmez.
Daha fazla bilgi için bkz . 'dotnet test' ile test etme.
TestingPlatformShowTestsFailure
özelliği, TestingPlatformShowTestsFailure testleri çalıştırmak için kullandığınızda dotnet test tek bir hatanın mı yoksa başarısız bir testteki tüm hataların mı raporlanıp raporlanmadığını denetlemenizi sağlar. Varsayılan olarak, test hataları bir .log dosyasında özetlenir ve test projesi başına tek bir hata MSBuild'e bildirilir. Başarısız test başına hataları göstermek için bu özelliği proje dosyanızda olarak true ayarlayın.
TestingExtensionsProfile
MSTest proje SDK'sını TestingExtensionsProfile kullandığınızda, özelliği kullanılacak profili seçmenize olanak tanır. Aşağıdaki tabloda izin verilebilen değerler gösterilmektedir.
| Value | Description |
|---|---|
Default |
MSTest.SDK'nın bu sürümü için önerilen uzantıları etkinleştirir. |
None |
Hiçbir uzantı etkinleştirilmedi. |
AllMicrosoft |
Microsoft tarafından gönderilen tüm uzantıları etkinleştirin (kısıtlayıcı lisansa sahip uzantılar dahil). |
Daha fazla bilgi için bkz. Microsoft.Testing.Platform profili.
VSTest ile ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
IsTestProject
IsTestProject özelliğitrue tarafından olarak ayarlanır. Bir projenin tarafından tanınması dotnet testiçin bir VSTest test projesi olup olmadığını gösterir.
Note
Projeniz MSTest SDK'sını belirtiyorsa, MSTest.Sdk Microsoft.NET.Test.Sdk NuGet paketine başvurarak bu özelliği ayarlamanız gerekmez.
UseVSTest
UseVSTestkullanırken Microsoft.Testing.Platform'dan true çalıştırıcısına geçmek için özelliğini olarak ayarlayın.
MSTest ile ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
MSTestAnalysisMode
Bu özellik, hangi çözümleyicilerin hangi önem derecesinde etkinleştirildiğine karar verir. Daha fazla bilgi için bkz. MSTest kod analizi .
Barındırmayla ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
AppHostDotNetSearch
özelliği, AppHostDotNetSearch bir uygulama için üretilen yerel yürütülebilir dosyanın .NET yüklemesini nasıl arayacağını yapılandırmaktadır. Bu özellik yalnızca yayımlamada üretilen yürütülebilir dosyayı etkiler, derlemeyi etkilemez.
<PropertyGroup>
<AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>
Aşağıdaki tabloda geçerli değerler listelemektedir. Noktalı virgülle ayırarak birden çok değer belirtebilirsiniz.
| Value | Meaning |
|---|---|
AppLocal |
Uygulama yürütülebilir dosyasının klasörü |
AppRelative |
AppHostRelativeDotNet tarafından belirtilen uygulama yürütülebilir dosyasıyla ilgili yol |
EnvironmentVariable |
Ortam değişkenlerinin DOTNET_ROOT[_<arch>] değeri |
Global |
Kayıtlı ve varsayılan genel yükleme konumları |
Bu özellik .NET 9'da tanıtıldı.
AppHostRelativeDotNet
özelliği, AppHostRelativeDotNet uygulama yürütülebilir dosyasının bunu yapacak şekilde yapılandırıldığında .NET yüklemesini araması için göreli bir yol belirtmeye olanak tanır. özelliğini ayarlamak AppHostRelativeDotNet anlamına gelir AppHostDotNetSearchAppRelative. Bu özellik yalnızca yayımlamada üretilen yürütülebilir dosyayı etkiler, derlemeyi etkilemez.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
Bu özellik .NET 9'da tanıtıldı.
EnableComHosting
EnableComHosting özelliği, bir derlemenin com sunucusu sağladığını gösterir. olarak EnableComHostingtrue ayarlanması, EnableDynamicLoading öğesinin olduğu trueanlamına da gelir.
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
Daha fazla bilgi için bkz . .NET bileşenlerini COM'da kullanıma sunma.
EnableDynamicLoading
EnableDynamicLoading özelliği, bir derlemenin dinamik olarak yüklenen bir bileşen olduğunu gösterir. Bileşen, yerel bir konaktan kullanılabilecek veya eklenti olarak kullanılabilen bir COM kitaplığı veya COM olmayan bir kitaplık olabilir. Bu özelliği olarak true ayarlamak aşağıdaki etkilere sahiptir:
- bir .runtimeconfig.json dosyası oluşturulur.
-
RollForward olarak ayarlanır
LatestMinor. - NuGet başvuruları yerel olarak kopyalanır.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Oluşturulan dosya özellikleri
Aşağıdaki özellikler, oluşturulan dosyalardaki kodla ilgilidir:
DisableImplicitNamespaceImports
özelliği, DisableImplicitNamespaceImports .NET 6 veya sonraki bir sürümü hedefleyen Visual Basic projelerinde örtük ad alanı içeri aktarmalarını devre dışı bırakmak için kullanılabilir. Örtük ad alanları, Visual Basic projesinde genel olarak içeri aktarılan varsayılan ad alanlarıdır. Örtük true ad alanı içeri aktarmalarını devre dışı bırakmak için bu özelliği olarak ayarlayın.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
ImplicitUsings
özelliği, ImplicitUsings .NET 6 veya sonraki bir sürümü ve C# 10 veya sonraki bir sürümü hedefleyen C# projelerinde örtük global using yönergeleri etkinleştirmek ve devre dışı bırakmak için kullanılabilir. Özellik etkinleştirildiğinde, .NET SDK'sı proje SDK'sının türüne göre bir dizi varsayılan ad alanı için yönergeler ekler global using . Örtük true yönergeleri etkinleştirmek için bu özelliği enable veya global using olarak ayarlayın. Örtük global using yönergeleri devre dışı bırakmak için özelliğini kaldırın veya veya falseolarak disable ayarlayın.
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Note
.NET 6 veya üzerini ImplicitUsings hedefleyen yeni C# projelerinin şablonları varsayılan olarak olarak ayarlanmıştır enable .
Açık global using bir yönerge tanımlamak için Using öğesi ekleyin.
Items
MSBuild öğeleri , derleme sistemine girişlerdir. Öğeler, öğe adı olan türlerine göre belirtilir. Örneğin, Compile ve Reference iki ortak öğe türü. Aşağıdaki ek öğe türleri .NET SDK tarafından kullanılabilir hale getirilir:
Bu öğelerde ve gibi Includestandart Update herhangi birini kullanabilirsiniz. Yeni Include öğe eklemek için kullanın ve varolan bir öğeyi değiştirmek için kullanın Update . Örneğin, Update genellikle .NET SDK'sı tarafından örtük olarak eklenmiş bir öğeyi değiştirmek için kullanılır.
AssemblyMetadata
AssemblyMetadata öğesi bir anahtar-değer çifti AssemblyMetadataAttribute derleme özniteliği belirtir. Meta Include veriler anahtar, meta veriler ise Value değer olur.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
öğesi, InternalsVisibleTo belirtilen arkadaş derlemesi için bir InternalsVisibleToAttribute derleme özniteliği oluşturur.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Arkadaş derlemesi imzalıysa, tam ortak anahtarını belirtmek için isteğe bağlı Key bir meta veri belirtebilirsiniz. Meta verileri belirtmezseniz Key ve $(PublicKey) bir kullanılabilir durumdaysa, bu anahtar kullanılır. Aksi takdirde, özniteliğe ortak anahtar eklenmez.
FrameworkReference
öğesi FrameworkReference bir .NET paylaşılan çerçevesine başvuru tanımlar.
Include özniteliği çerçeve kimliğini belirtir.
Aşağıdaki örnekteki proje dosyası parçacığı, paylaşılan Microsoft.AspNetCore.App çerçeveye başvurur.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
PackageReference
PackageReference öğesi Bir NuGet paketine başvuru tanımlar.
Include özniteliği paket kimliğini belirtir.
Version özniteliği, sürüm veya sürüm aralığını belirtir. En düşük sürümü, en yüksek sürümü, aralığı veya tam eşleşmeyi belirtme hakkında bilgi için bkz . Sürüm aralıkları.
Aşağıdaki örnekteki proje dosyası parçacığı System.Runtime paketine başvurur.
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
Bağımlılık varlıklarınıdenetleyebilirsiniz.
<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
Öğe, TrimmerRootAssembly bir derlemeyi kırpmanın dışında tutmanıza olanak tanır. Kırpma, paketlenmiş bir uygulamadan çalışma zamanının kullanılmayan bölümlerini kaldırma işlemidir. Bazı durumlarda kırpma, gerekli başvuruları yanlış kaldırabilir.
Aşağıdaki XML, derlemeyi kırpmanın System.Security dışında tutar.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Daha fazla bilgi için bkz . Kırpma seçenekleri.
Using
Using öğesi, C# projenize genel olarak bir ad alanı eklemenize olanak tanır; böylece kaynak dosyalarınızın en üstüne ad alanı için bir using yönerge eklemeniz gerekmez. Bu öğe, Visual Basic projelerinde aynı amaç için kullanılabilecek öğeye benzer Import . Bu özellik .NET 6'dan itibaren kullanılabilir.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Öğeyi Using genel ve using <alias> yönergeleri tanımlamak using static <type> için de kullanabilirsiniz.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Örneğin:
-
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />Gösterirglobal using Results = global::Microsoft.AspNetCore.Http.Results; -
<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />Gösterirglobal using static global::Microsoft.AspNetCore.Http.Results;
Daha fazla bilgi için bkz . diğer adla sunulan using yönergeler ve using static <type> yönergeler.
Öğe meta verileri
Standart MSBuild öğe özniteliklerine ek olarak, aşağıdaki öğe meta veri etiketleri .NET SDK tarafından kullanılabilir hale getirilir:
CopyToPublishDirectory
CopyToPublishDirectory BIR MSBuild öğesindeki meta veriler, öğenin yayımlama dizinine ne zaman kopyalandığında denetler. Aşağıdaki tabloda izin verilebilen değerler gösterilmektedir.
| Value | Description |
|---|---|
PreserveNewest |
Öğeyi yalnızca kaynak konumda değiştirilmişse kopyalar. |
IfDifferent |
Öğeyi yalnızca kaynak veya hedef konumda değiştirilmişse kopyalar. Bu ayar, yayımladıktan sonra gerçekleşen değişiklikleri sıfırlamanız gereken durumlarda yararlıdır. |
Always |
Öğeyi her zaman kopyalar. |
Never |
Öğeyi hiçbir zaman kopyalamaz. |
Artımlı derlemeyi etkinleştirdiğinden performans PreserveNewest açısından tercih edilir.
Always kullanmaktan kaçının ve bunun yerine IfDifferent kullanın; bu da G/Ç yazmalarını hiçbir etkisi olmadan önler.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
LinkBase
Proje dizininin ve alt dizinlerinin dışındaki bir öğe için yayımlama hedefi öğenin Bağlantı meta verilerini kullanarak öğenin nereye kopyalandığını belirler.
Linkayrıca proje ağacı dışındaki öğelerin Visual Studio'nun Çözüm Gezgini penceresinde nasıl görüntüleneceğini de belirler.
Proje konisi dışındaki bir öğe için belirtilmezse Link , varsayılan olarak %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension)olur.
LinkBase , proje konisi dışındaki öğeler için mantıklı bir temel klasör belirtmenize olanak tanır. Temel klasörün altındaki klasör hiyerarşisi aracılığıyla RecursiveDirkorunur. Belirtilmezse LinkBase , yol atlanır Link .
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
Aşağıdaki görüntüde, önceki öğe Include glob aracılığıyla eklenen bir dosyanın Çözüm Gezgini'de nasıl görüntülediği gösterilmektedir.