.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'sı için tüm yararlı MSBuild özelliklerini listelemez. Yaygın MSBuild özelliklerinin 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, uygulama için hedef çerçeve sürümünü belirtir. Geçerli hedef çerçeve bilinen adlarını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.
TargetFrameworks
Uygulamanızın TargetFrameworks
birden çok platformu hedeflemesini istediğinizde özelliğini kullanın. Geçerli hedef çerçeve bilinen adlarının listesi için bkz. SDK stili projelerde hedef çerçeveler.
Not
(tekil) belirtilirse TargetFramework
bu özellik yoksayılır.
<PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net462</TargetFrameworks>
</PropertyGroup>
Daha fazla bilgi için bkz. SDK stili projelerde hedef çerçeveler.
NetStandardImplicitPackageVersion
Not
Bu özellik yalnızca kullanan netstandard1.x
projeler için geçerlidir. kullanan netstandard2.x
projeler için geçerli değildir.
Meta paketi 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ı hedeflemektedir netstandard1.3
ancak 1.6.0 sürümünü NETStandard.Library
kullanır.
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Derleme özniteliği özellikleri
GenerateAssemblyInfo
özelliği, GenerateAssemblyInfo
proje için öznitelik oluşturmayı denetler AssemblyInfo
. true
varsayılan değerdir. 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. Aşağıdaki tabloda öznitelikleri oluşturan proje özellikleri listelemektedir. Ayrıca, bu nesli öznitelik temelinde devre dışı bırakmak için kullanabileceğiniz özellikleri de listeler, örneğin:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild özelliği | Derleme özniteliği | Öznitelik oluşturmayı devre dışı bırakma özelliği |
---|---|---|
Company |
AssemblyCompanyAttribute | GenerateAssemblyCompanyAttribute |
Configuration |
AssemblyConfigurationAttribute | GenerateAssemblyConfigurationAttribute |
Copyright |
AssemblyCopyrightAttribute | GenerateAssemblyCopyrightAttribute |
Description |
AssemblyDescriptionAttribute | GenerateAssemblyDescriptionAttribute |
FileVersion |
AssemblyFileVersionAttribute | GenerateAssemblyFileVersionAttribute |
InformationalVersion |
AssemblyInformationalVersionAttribute | GenerateAssemblyInformationalVersionAttribute |
Product |
AssemblyProductAttribute | GenerateAssemblyProductAttribute |
AssemblyTitle |
AssemblyTitleAttribute | GenerateAssemblyTitleAttribute |
AssemblyVersion |
AssemblyVersionAttribute | GenerateAssemblyVersionAttribute |
NeutralLanguage |
NeutralResourcesLanguageAttribute | GenerateNeutralResourcesLanguageAttribute |
Bu ayarlarla ilgili notlar:
AssemblyVersion
veFileVersion
varsayılan olarak soneki olmadan değerini$(Version)
kullanır. Örneğin, ise$(Version)
1.2.3-beta.4
değeri olur1.2.3
.InformationalVersion
varsayılan değerini kullanır$(Version)
.$(SourceRevisionId)
Özelliği varsa, öğesine eklenirInformationalVersion
. kullanarakIncludeSourceRevisionInInformationalVersion
bu davranışı devre dışı bırakabilirsiniz.Copyright
veDescription
özellikleri NuGet meta verileri için de kullanılır.Configuration
varsayılan değeriDebug
olan , tüm MSBuild hedefleriyle paylaşılır. Bunu komut seçeneğiyle--configuration
dotnet
ayarlayabilirsiniz, örneğin dotnet pack.- NuGet paketi oluşturulurken bazı özellikler kullanılır. Daha fazla bilgi için bkz . Paket özellikleri.
.NET Framework'den geçiş
.NET Framework proje şablonları, bu derleme bilgileri özniteliklerinin ayarlandığı bir kod dosyası oluşturur. Dosya genellikle .\Properties\AssemblyInfo.cs veya .\Properties\AssemblyInfo.vb konumunda bulunur. SDK stilindeki projeler bu dosyayı sizin için proje ayarlarına göre oluşturur. İkisi birden olamaz. Kodunuzu .NET 5 (veya .NET Core 3.1) veya sonraki bir sürüme aktarırken aşağıdakilerden birini yapın:
- Proje dosyanızda olarak ayarlayarak
GenerateAssemblyInfo
derleme bilgisi özniteliklerini içeren geçici kod dosyasının oluşturulmasınıfalse
devre dışı bırakın. Bu, AssemblyInfo dosyanızı tutmanızı sağlar. - Dosyadaki
AssemblyInfo
ayarları proje dosyasına geçirin ve ardından dosyayı silinAssemblyInfo
.
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. Assemblyınfo. [cs|vb]$(IntermediateOutputPath)
(genellikle obj) dizininde.
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
Paket özellikleri
Açıklayıcı özellikler
Projenizden oluşturulan paketi açıklamak için , PackageVersion
PackageIcon
, , Title
ve Description
gibi PackageId
ö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 PublishRelease özelliğine benzer, ancak varsayılan davranışını dotnet pack
değiştirir.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Not
Visual Studio çözümünün parçası olan bir projede kullanmak PackRelease
için ortam değişkenini DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
true
(veya başka bir değer) olarak ayarlamanız gerekir. Bu değişkenin ayarlanması, birçok projesi olan çözümleri paketlemek için gereken süreyi artırır.
Yayımlamayla ilgili özellikler
Aşağıdaki MSBuild özellikleri bu bölümde belgelenmiştir:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- EnablePackageValidation
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishRelease
- Rollforward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- 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ı AppendTargetFrameworkToOutputPath
false
, 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 ayar ile olarak değişir bin\Debug\net5.0
bin\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ı çıkış yoluna ekler. ayarı AppendRuntimeIdentifierToOutputPath
false
RID'nin çıkış yoluna eklenmesini engeller.
Örneğin, bir .NET 5 uygulaması ve rid'i win10-x64
için çıkış yolu aşağıdaki ayar ile olarak değişir bin\Debug\net5.0\win10-x64
bin\Debug\net5.0
:
<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 true
ayarlarsanız, tüm 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>
İpucu
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 çıkışında yinelenen dosyalar algıladığında ancak hangi dosyaların kaldırılacağını belirleyemezse SDK'nın NETSDK1148 hatası 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ı.
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>
Bu özellik .NET 6'da tanıtıldı.
GenerateRuntimeConfigDevFile
.NET 6 SDK'sı ile başlayan [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 true
ayarlayınGenerateRuntimeConfigDevFile
.
<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 uygulamalar için, yani olan OutputType
Exe
uygulamalar için, bu özellik varsayılan olarak olarak kullanılırtrue
.
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
GenerateSatelliteAssembliesForCore
özelliği, GenerateSatelliteAssembliesForCore
uydu derlemelerinin .NET Framework projelerde csc.exe veya Al.exe (Assembly Linker) kullanılarak oluşturulup oluşturulmadığı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.exetarafından oluşturulur. özelliği olarak true
ayarlanarakGenerateSatelliteAssembliesForCore
, uydu derlemeleri bunun yerinecsc.exe tarafından oluşturulur. csc.exe kullanmak aşağıdaki durumlarda avantajlı olabilir:
- C# derleyici
deterministic
seçeneğini kullanmak istiyorsunuz. - al.exe genel imzalamayı desteklemediği ve kötü şekilde işlediği AssemblyInformationalVersionAttribute gerçeğiyle sı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 Publish
dotnet publish komutu gibi hedefi kullanan işlemleri etkiler. Hedefi kullanan Visual Studio'da yayımlamayı PublishOnly
etkilemez. true
varsayılan değerdir.
Bu özellik, yayımlanması gereken projelerin otomatik olarak seçilmesine izin verdiği için bir çözüm dosyası üzerinde ç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. Bu bilgileri ve DependencyContext.CompilationOptions özelliklerini kullanarak DependencyContext.CompileLibraries 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ını 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ümlerde başvuru derlemeleri her zaman dizine OutDir
yazılır. .NET 6 ve sonraki sürümlerde, başvuru derlemelerinin dizine yazıp yazılmayacağını denetlemek için OutDir
özelliğini kullanabilirsinizProduceReferenceAssemblyInOutDir
. Varsayılan değer olur false
ve 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
, oluşturulduysa projenin XML belge dosyası projenin yayımlama çıkışına eklenir. Bu özellik varsayılan olarak olarak true
gösterilir.
İpucu
Derleme zamanında bir XML belge dosyası oluşturmak için GenerateDocumentationFiletrue
değerini olarak ayarlayın.
PublishDocumentationFiles
Bu özellik, çeşitli XML belge dosyalarının varsayılan olarak PublishDocumentationFile ve PublishReferencesDocumentationFiles olarak adlandırılarak publish 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 true
olur. Bu özellik varsayılan olarak olarak true
gösterilir.
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 true
gösterilir.
PublishRelease
özelliği, PublishRelease
yapılandırma yerine varsayılan olarak yapılandırmayı Release
Debug
kullanmayı bildirirdotnet publish
.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Not
- Bu özellik davranışını etkilemez
dotnet build /t:Publish
ve yapılandırmayı yalnızca .NET CLI aracılığıyla yayımlarken değiştirir. - Visual Studio çözümünün parçası olan bir projede kullanmak
PublishRelease
için ortam değişkeniniDOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
true
(veya başka bir değer) olarak ayarlamanız gerekir. Bu, birçok projesi olan çözümleri yayımlamak için gereken süreyi artırır. Bu değişken etkin bir çözüm yayımlanırken yürütülebilir projeninPublishRelease
değeri öncelikli olur ve yeni varsayılan yapılandırmayı çözümdeki diğer projelere akıtır. Bir çözüm farklı değerlerinePublishRelease
sahip birden çok yürütülebilir veya üst düzey proje içeriyorsa, çözüm başarıyla yayımlanmaz.
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 dosyasının çıkışıdır rollForward
.
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Aşağıdaki değerlerden birine ayarlayın RollForward
:
Değer | Açıklama |
---|---|
Minor |
Belirtilmezse varsayılan . İstenilen ikincil sürüm eksikse en düşük daha yüksek ikincil sürüme ileri sarma. İstenen ikincil sürüm varsa ilke LatestPatch kullanılır. |
Major |
İstenen ana sürüm eksikse sonraki kullanılabilir daha yüksek ana sürüme ve en düşük ikincil sürüme iletin. İstenen ana sürüm varsa, Minor ilke kullanılır. |
LatestPatch |
En yüksek yama 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 en yüksek ikincil sürüme ileri sarma. |
LatestMajor |
İstenen ana sürüm mevcut olsa bile en yüksek ana ve en yüksek ikincil sürüme ileri sarma. |
Disable |
İleri sarmayın, yalnızca belirtilen sürüme bağlayın. Bu ilke, en son düzeltme eklerine iletme özelliğini devre dışı bırakdığından 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ü belirtin:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Çerçeveye bağımlı bir uygulama yayımlarken, bu değer gereken en düşük sürümü belirtir. Kendi içinde bulunan bir uygulamayı 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 bir dağıtımın yayımlanmasını sağlar.
<PropertyGroup>
<RuntimeIdentifier>ubuntu.16.04-x64</RuntimeIdentifier>
</PropertyGroup>
RuntimeIdentifiers
özelliği, RuntimeIdentifiers
proje için çalışma zamanı tanımlayıcılarının (RID) noktalı virgülle ayrılmış bir listesini belirtmenize olanak tanır. Birden çok çalışma zamanı için yayımlamanız gerekiyorsa bu özelliği kullanın. RuntimeIdentifiers
, grafikte doğru varlıkların olduğundan emin olmak için geri yükleme zamanında kullanılır.
İpucu
RuntimeIdentifier
(tekil) yalnızca tek bir çalışma zamanı gerektiğinde daha hızlı derlemeler sağlayabilir.
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
özelliği, SatelliteResourceLanguages
derleme ve yayımlama sırasında uydu kaynak derlemelerini korumak istediğiniz dilleri belirtmenize olanak 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 derleme ve yayımlama çıkış boyutunu gereksiz yere şişirebilir. ö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>
Not
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. Örnek:dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
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.
.NET Core 3.0 ve sonraki sürümlerde, varsayılan olarak çerçeveye bağımlı bir yürütülebilir dosya 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ınmaktadır. Aşağıdaki tabloda bir hızlı başvuru verilmiştir.
Özellik | Değerler | Açıklama |
---|---|---|
PublishTrimmed |
true veya false |
Yayımlama sırasında kırpmanın etkinleştirilip etkinleştirilmediğini denetler. |
TrimMode |
full veya partial |
full varsayılan değerdir. Kırpma ayrıntı düzeyini denetler. |
SuppressTrimAnalysisWarnings |
true veya false |
Kırpma analizi uyarılarının üretilip üretildiğini denetler. |
EnableTrimAnalyzer |
true veya false |
Kırpma analizi uyarılarının bir alt kümesinin üretilip üretildiğini denetler. olarak ayarlanmış false olsa PublishTrimmed bile analizi etkinleştirebilirsiniz. |
ILLinkTreatWarningsAsErrors |
true veya false |
Kırpma uyarılarının hata olarak işlenip değerlendirilmediğini denetler. Örneğin, bu özelliği false olarak ayarlandığında TreatWarningsAsErrors olarak ayarlamak true isteyebilirsiniz. |
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
ve Nullable
gibi LangVersion
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üp yürütülmediğini gösterir. olarak ayarlandığında true
, bu özellik 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ştirilirse hata ayıklayıcı yerel kaynak dosyalarını bulamaz.
Özelliğini koşullu olarak ayarlamak için CI sisteminizin değişkenini ContinuousIntegrationBuild
kullanabilirsiniz. Örneğin, Azure Pipelines için 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 true
ayarlandığı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 getirir. Ancak, bu dosyaların dahil olması 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 true
ayarlandığı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, SDK'nın DisableImplicitFrameworkDefines
.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 ayardan kaldırıldığında (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 bilinenleri ve bu örtük önişlemci sembolleri 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ümsüz platform (
ANDROID
,IOS
,WINDOWS
) - Sürüme sahip platform (
IOS15_1
) - Sürüm alt sınırı (
IOS15_1_OR_GREATER
) olan platform
İşletim sistemine özgü hedef çerçeve bilinenleri hakkında daha fazla bilgi için bkz. İşletim sistemine özgü TFM'ler.
Son olarak, hedef çerçeveniz eski hedef çerçeveler için destek anlamına gelirse, bu eski çerçeveler için önişlemci sembolleri yayılır. Örneğin, net6.0
'a .netcoreapp1.0
geri dönerken vb. için net5.0
destek anlamına gelir. 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 GenerateDocumentationFiletrue
değerini olarak ayarlarsanız, belge dosyasının adı varsayılan olarak derlemenizin adına ayarlanır ancak .xml dosya uzantısına sahiptir. Bu nedenle, bu özelliğin atlanması ve bunun yerine GenerateDocumentationFile özelliğinin kullanılması genellikle daha kolaydır.
Bu özelliği belirtir ancak GenerateDocumentationFile değerini olarak false
ayarlarsanız, derleyici bir belge dosyası oluşturmaz . 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 EmbeddedResourceUseDependentUponConvention
olarak ayarlanırsatrue
, oluşturulan .resources dosyası adını Form1.cs'de tanımlanan ilk türden alır. Örneğin, Form1.cs'de tanımlanan ilk türseMyNamespace.Form1
, oluşturulan dosya adı MyNamespace.Form1.resources olur.
Not
Bir EmbeddedResource
öğe için , ManifestResourceName
veya DependentUpon
meta verileri belirtilirseLogicalName
, bu kaynak dosyası için oluşturulan bildirim dosyası adı bunun yerine bu meta verileri temel alır.
Varsayılan olarak, yeni bir .NET projesinde bu özellik olarak true
ayarlanır. Proje dosyasındaki öğe için EmbeddedResource
, ve hayır LogicalName
olarak ManifestResourceName
ayarlanırsa false
veya DependentUpon
meta veriler belirtilirse, kaynak bildirimi dosya adı projenin kök ad alanını ve .resx dosyasının göreli dosya yolunu temel 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 donatılmış API'lere veya derlemelere bağımlı 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 True
ayarlayın.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Bir projede bu özellik olarak ayarlandığında True
, AssemblyInfo.cs dosyasına aşağıdaki derleme düzeyi özniteliği eklenir:
[assembly: RequiresPreviewFeatures]
Çözümleyici, bu özniteliğin olarak ayarlanmadığı EnablePreviewFeatures
True
projelerin bağımlılıklarında mevcut olup olmadığı konusunda uyarır.
Önizleme derlemelerini göndermeyi planlayan kitaplık yazarları bu özelliği olarak True
ayarlamalıdır. Bir derlemenin önizleme ve önizleme olmayan API'lerin bir karışımıyla gönderilmesi gerekiyorsa aşağıdaki GenerateRequiresPreviewFeaturesAttribute bölümüne bakın.
EnableWindowsTargeting
Windows dışındaki bir platformda EnableWindowsTargeting
Windows uygulamaları (örneğin, Windows Forms veya Windows Presentation Foundation uygulamaları) oluşturmak için özelliğini true
olarak ayarlayın. Bu özelliği olarak true
ayarlamazsanı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.
<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 bir.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 ilişkilidir. 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 gerektirebilirse, bu özelliği olarak False
ayarlayın.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Önemli
özelliğini False
olarak ayarlarsanızGenerateRequiresPreviewFeaturesAttribute
, önizleme özelliklerine dayanan tüm genel API'leri ile RequiresPreviewFeaturesAttributesüslediğinizden emin olmanız gerekir.
OptimizeImplicitlyTriggeredBuild
Derleme süresini hızlandırmak için Visual Studio tarafından örtük olarak tetiklenen derlemeler, boş değer atanabilir analiz de dahil olmak üzere kod analizini atlar. Örneğin, testleri çalıştırdığınızda Visual Studio örtük bir derleme tetikler. Ancak örtük derlemeler yalnızca değilken TreatWarningsAsErrors
true
iyileştirilir. olarak ayarladıysanız TreatWarningsAsErrors
true
ancak yine de örtük olarak tetiklenen derlemelerin iyileştirilmesini istiyorsanız olarak ayarlayabilirsiniz OptimizeImplicitlyTriggeredBuild
True
. Örtük olarak tetiklenen derlemeler için derleme iyileştirmesini kapatmak için olarak ayarlayın OptimizeImplicitlyTriggeredBuild
False
.
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
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 desenleri 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>
DefaultItemExcludesInProjectFolder
DefaultItemExcludesInProjectFolder
Ekleme, dışlama ve kaldırma glob'lerinden dışlanması gereken proje klasöründeki dosya ve klasörler için glob desenleri 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 istemeden proje klasörünün dışındaki öğeleri göreli bir yol ile eşleştirdiğinde, özelliği yerine DefaultItemExcludes
özelliğini kullanınDefaultItemExcludesInProjectFolder
.
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
özelliği derleme öğelerinin EnableDefaultItems
, eklenmiş kaynak öğelerinin ve None
öğelerin projeye örtük olarak eklenip eklenmeyeceğini denetler. true
varsayılan değerdir. 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 dahil edilip edilmeyeceğini denetler. true
varsayılan değerdir. 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
ekli kaynak öğelerinin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true
varsayılan değerdir. Ekli kaynak dosyalarının EnableDefaultEmbeddedResourceItems
örtük 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) projeye örtük olarak eklenip eklenmeyeceğini None
denetler. true
varsayılan değerdir. EnableDefaultNoneItems
Öğelerin örtük false
eklenmesini None
devre dışı bırakmak için özelliğini olarak ayarlayın.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Kod analizi ö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
bir .NET sürümüne göre çalıştırılacak bir dizi kod çözümleyicisi belirtmenize olanak tanır. .NET 5'te başlayan her .NET sürümünün bir dizi kod analizi kuralı vardır. Bu kümede, bu sürüm için varsayılan olarak etkinleştirilen kurallar kodunuzu analiz eder. Örneğin, .NET 7'ye yükselttiğiniz halde varsayılan kod çözümleme kuralları kümesinin değişmesini istemiyorsanız olarak ayarlayın AnalysisLevel
6
.
<PropertyGroup>
<AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>
İsteğe bağlı olarak, .NET 6'dan başlayarak, bu özellik için kuralların ne kadar agresif etkinleştirileceğini belirten bir bileşik değer belirtebilirsiniz. Bileşik değerler, değerinin <mode>
AnalysisMode değerlerinden biri olduğu biçiminde <version>-<mode>
olur. Aşağıdaki örnek kod çözümleyicilerinin önizleme sürümünü kullanır ve önerilen kural kümesini etkinleştirir.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Not
veya 5.0-<mode>
olarak 5-<mode>
ayarlayıp AnalysisLevel
.NET 6 SDK'sını yükleyip projenizi yeniden derlerseniz beklenmeyen yeni derleme uyarıları görebilirsiniz. Daha fazla bilgi için bkz. dotnet/roslyn-analyzers#5679.
Varsayılan değer:
- Projeniz .NET 5 veya sonraki bir sürümü hedefliyorsa veya AnalysisMode özelliğini eklediyseniz varsayılan değer olur
latest
. - 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.
Değer | Anlamı |
---|---|
latest |
Yayımlanan en son kod çözümleyicileri kullanılır. Bu varsayılan seçenektir. |
latest-<mode> |
Yayımlanan en son kod çözümleyicileri kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
preview |
En son kod çözümleyicileri önizlemede olsalar bile kullanılır. |
preview-<mode> |
En son kod çözümleyicileri önizlemede olsalar bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
7.0 |
.NET 7 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
7.0-<mode> |
.NET 7 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
7 |
.NET 7 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
7-<mode> |
.NET 7 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
6.0 |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
6.0-<mode> |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
6 |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
6-<mode> |
.NET 6 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
5.0 |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
5.0-<mode> |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
5 |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. |
5-<mode> |
.NET 5 sürümü için kullanılabilen kurallar kümesi, daha yeni kurallar kullanılabilse bile kullanılır. <mode> Değer, hangi kuralların etkinleştirileceğini belirler. |
Not
- .NET 5 ve önceki sürümlerinde bu özellik yalnızca kod kalitesi (CAXXXX) kurallarını etkiler. .NET 6'dan başlayarak EnforceCodeStyleInBuild olarak
true
ayarlarsanız, bu özellik kod stili (IDEXXXX) kurallarını da etkiler. - için
AnalysisLevel
bir bileşik değer ayarlarsanız AnalysisMode belirtmeniz gerekmez. Ancak, bunu yaparsanız,AnalysisLevel
yerine öncelikliAnalysisMode
olur. - Bu özelliğin proje SDK'sı başvurmamış projelerde kod analizi üzerinde hiçbir etkisi yoktur; örneğin, Microsoft.CodeAnalysis.NetAnalyzers NuGet paketine başvuran eski .NET Framework projeleri.
AnalysisLevel<Kategorisi>
.NET 6'da tanıtılan bu özellik AnalysisLevel ile aynıdır, ancak yalnızca belirli bir kod analizi 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 kategorilerinde 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 5'den itibaren .NET SDK'sı tüm "CA" kod kalitesi kurallarıyla birlikte gelir. Varsayılan olarak, her .NET sürümünde derleme uyarıları olarak yalnızca bazı kurallar etkinleştirilir . özelliği, AnalysisMode
varsayılan olarak etkinleştirilen kural kümesini özelleştirmenize olanak tanır. Kuralları ayrı ayrı geri çevirebileceğiniz daha agresif bir analiz moduna veya belirli kuralları kabul etmek için daha muhafazakar bir analiz moduna geçebilirsiniz. Örneğin, tüm kuralları derleme uyarıları olarak etkinleştirmek istiyorsanız, değerini olarak All
ayarlayın.
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
Aşağıdaki tabloda .NET 5 ve sonraki sürümlerde kullanılabilen seçenek değerleri gösterilmektedir. Etkinleştirdikleri kural sayısının artan sırasına göre listelenirler.
.NET 6+ değeri | .NET 5 değeri | Anlamı |
---|---|---|
None |
AllDisabledByDefault |
Tüm kurallar devre dışı bırakılır. Tek tek kuralları etkinleştirmek için seçmeli olarak kabul edebilirsiniz. |
Default |
Default |
Bazı kuralların derleme uyarıları olarak etkinleştirildiği varsayılan mod, Visual Studio IDE önerileri olarak belirli kurallar etkinleştirilir ve kalanlar devre dışı bırakılır. |
Minimum |
Yok | 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.editorconfig dosyasını inceleyin. |
Recommended |
Yok | 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.editorconfig dosyasını inceleyin. |
All |
AllEnabledByDefault |
Tüm kurallar derleme uyarıları olarak etkinleştirilir. Kuralları devre dışı bırakmak için tek tek kuralları seçmeli olarak devre dışı bırakabilirsiniz. |
Not
- .NET 5'te bu özellik yalnızca kod kalitesi (CAXXXX) kurallarını etkiler. .NET 6'dan başlayarak EnforceCodeStyleInBuild olarak
true
ayarlarsanız, bu özellik kod stili (IDEXXXX) kurallarını da etkiler. - AnalysisLevel için bileşik bir değer kullanırsanız, örneğin,
<AnalysisLevel>5-recommended</AnalysisLevel>
bu özelliği tamamen atlayabilirsiniz. Ancak, her iki özelliği de belirtirseniz,AnalysisLevel
yerineAnalysisMode
öncelikli olur. - veya olarak ve olarak ayarlandıysa
AnalysisMode
5
AllEnabledByDefault
AnalysisLevel
5.0
ve .NET 6 SDK'sını yükleyip projenizi yeniden derlerseniz beklenmeyen yeni derleme uyarıları görebilirsiniz. Daha fazla bilgi için bkz. dotnet/roslyn-analyzers#5679. - Bu özelliğin proje SDK'sı başvurmamış projelerde kod analizi üzerinde hiçbir etkisi yoktur; örneğin, Microsoft.CodeAnalysis.NetAnalyzers NuGet paketine başvuran eski .NET Framework projeleri.
AnalysisMode<Kategorisi>
.NET 6'da kullanıma sunulan 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 analiz 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, proje dosyanızda MSBuild özelliğini olarak false
ayarlayabilirsinizCodeAnalysisTreatWarningsAsErrors
.
<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 olarak ayarlayarak .NET'in önceki sürümlerini hedefleyen SDK stili projeler için .NET kod analizini EnableNETAnalyzers
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'daki yerleşik çözümleyiciler için geçerlidir. NuGet kod analizi paketi yüklerken 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 true
olarak ayarlayarak .NET projeleri için kod stili analizini EnforceCodeStyleInBuild
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.
Not
.NET 6'yı (veya .NET 6'yı içeren Visual Studio 2022'yi) yüklüyor ancak Visual Studio 2019 kullanarak projenizi oluşturmak istiyorsanız, özelliği olarak ayarladıysanız EnforceCodeStyleInBuild
true
yeni CS8032 uyarıları görebilirsiniz. Uyarıları çözmek için bir global.json girişi ekleyerek projenizi oluşturacağınız .NET SDK sürümünü belirtebilirsiniz (bu örnekte gibi 5.0.404
bir şey).
_SkipUpgradeNetAnalyzersNuGetWarning
özelliği, _SkipUpgradeNetAnalyzersNuGetWarning
en son .NET SDK'daki 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, 'Microsoft.CodeAnalysis.NetAnalyzers' paketinin '5.0.3' sürümünün sağladığı sürümden 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 true
ayarlayın_SkipUpgradeNetAnalyzersNuGetWarning
.
<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ı.
- ConcurrentGarbageCollection
- InvariantGlobalization
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
ConcurrentGarbageCollection
özelliği, ConcurrentGarbageCollection
arka plan (eşzamanlı) çöp toplamanın etkinleştirilip etkinleştirilmediğini yapılandırıyor. 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; başka bir deyişle kültüre özgü verilere erişimi yoktur. Değeri true
genelleştirme sabit modunda çalışacak şekilde 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ır. 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 karşılaştırması.
<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ığı sayısı.
<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ırmaktadır. 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>
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 TargetFramework
AssetTargetFallback
uyumlu varlıklar içermiyorsa özelliği devreye girer. Başvuruda bulunılan paketin uyumluluğu, içinde AssetTargetFallback
belirtilen her hedef çerçeve kullanılarak yeniden denetlendi. Bu özellik kullanım dışı özelliğinin PackageTargetFallback
yerini alır.
özelliğini bir veya daha fazla hedef çerçeve sürümüne ayarlayabilirsinizAssetTargetFallback
.
<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 paketindeki 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 hedefleme gibi örtük başvuruları System
System.Core
da denetler.
Örtük FrameworkReference
veya PackageReference öğelerini devre dışı bırakmak için bu özelliği true
olarak ayarlayın. Bu özelliği olarak true
ayarlarsanız, yalnızca ihtiyacınız olan çerçevelere veya paketlere açık başvurular ekleyebilirsiniz.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
DisableTransitiveFrameworkReferencedownloads
DisableTransitiveFrameworkReferenceDownloads
Projeniz tarafından doğrudan başvurulmamış 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 ProjectReference
öğeleri devre dışı bırakmak için bu özelliği olarak true
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ğımlı projenin tüm bağımlılıkları üzerindeki ayarına PrivateAssets="All"
benzer bir etkiye sahiptir.
Bu özelliği olarak true
ayarlarsanı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 tanıtıldı. Bunu deponuzun kökündeki Bir Directory.Packages.props dosyasında olarak ayarlayaraktrue
, 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 PackageReference
öğelerden öznitelikleri atlayabilirsinizVersion
.
Örnek Directory.Packages.props dosyası:
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="7.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 paketi geri yüklemek, doğrudan bağımlılıklarını ve bu bağımlılıkların tüm bağımlılıklarını yükler. ve RestoreIgnoreFailedSources
gibi RestorePackagesPath
ö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 ancak bu özelliği olarak true
ayarlamadığınız bir projeye başvuruda bulunursa, derleme uyarısıyla NETSDK1186
karşı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, kendi içinde bulunan yürütülebilir bir projenin çerçeveye bağımlı yürütülebilir projeye başvurduğunu algılarsa (veya tam tersi) sırasıyla NETSDK1150 ve NETSDK1151 hataları oluşturur. Başvuru kasıtlı olduğunda bu hataları önlemek için özelliğini olarak false
ayarlayınValidateExecutableReferencesMatchSelfContained
.
<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>
Not
Windows SDK hedefleme paketleri .NET 5+ SDK'ya dahil edildiğinden, Windows SDK sürümünü geçersiz kılmanızı önermeyiz. 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 ihtiyacı 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>
İpucu
için seçeneğini dotnet run
kullanarak--
uygulamaya geçirilecek ek bağımsız değişkenleri belirtebilirsiniz.
RunWorkingDirectory
özelliği, RunWorkingDirectory
içinde başlatılacak uygulama işleminin çalışma dizinini tanımlar. Bu, proje dizinine göre mutlak bir yol veya 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
EnableComHosting
özelliği, bir derlemenin com sunucusu sağladığını gösterir. olarak EnableComHosting
true
ayarlanması, EnableDynamicLoading öğesinin olduğu true
anlamı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 ad alanı içeri aktarmalarını devre dışı bırakmak için bu özelliği olarak true
ayarlayın.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
ÖrtükUsings
özelliği, ImplicitUsings
C# projelerinde .NET 6 veya sonraki bir sürümü ve C# 10 veya sonraki bir sürümü hedefleyen ö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 global using
yönergeleri etkinleştirmek için bu özelliği true
veya enable
olarak ayarlayın. Örtük global using
yönergeleri devre dışı bırakmak için özelliğini kaldırın veya veya disable
olarak false
ayarlayın.
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Not
.NET 6 veya üstünü ImplicitUsings
hedefleyen yeni C# projeleri için şablonlar varsayılan olarak olarak ayarlanmıştır enable
.
Açık global using
bir yönerge tanımlamak için bir Using öğesi ekleyin.
Öğeler
MSBuild öğeleri , derleme sistemine girişlerdir. Öğeler, öğe adı olan türlerine göre belirtilir. Örneğin, Compile
ve Reference
iki yaygın öğe türü. Aşağıdaki ek öğe türleri .NET SDK tarafından kullanılabilir hale getirilir:
Bu öğelerde ve gibi Include
Update
standart öğe özniteliklerinden herhangi birini kullanabilirsiniz. Yeni öğe eklemek için kullanın Include
ve var olan 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ğini belirtir. Meta Include
veriler anahtar Value
, meta veriler ise 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ğine ortak anahtar eklenmez.
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ı gibi PrivateAssets
meta verileri kullanarak da 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, çalışma zamanının kullanılmayan bölümlerini paketlenmiş bir uygulamadan kaldırma işlemidir. Bazı durumlarda kırpma, gerekli başvuruları hatalı bir şekilde 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.
Kullanma
öğe, Using
C# projenizde 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ılabilen öğeye benzer Import
. Bu özellik .NET 6'dan başlayarak kullanılabilir.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Öğesini genel ve using static <type>
yönergeleri tanımlamak using <alias>
için de kullanabilirsinizUsing
.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Örnek:
<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 ad verilmiş using
yönergeler ve using static <type>
yönergeler.
Öğe meta verileri
Standart MSBuild öğesi ö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. İzin verilen değerler, PreserveNewest
yalnızca değiştirildiğinde öğeyi kopyalayan , Always
her zaman öğeyi kopyalayan ve Never
öğesini hiçbir zaman kopyalamayan değerleridir. Performans açısından, PreserveNewest
artımlı derlemeyi etkinleştirdiğinden tercih edilir.
<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 kopyalandığı yeri belirler. Link
ayrıca proje ağacı dışındaki öğelerin Visual Studio'nun Çözüm Gezgini penceresinde nasıl görüntüleneceğini de belirler.
Proje konisinin 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 RecursiveDir
korunur. Belirtilmezse LinkBase
, yoldan 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.