.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.xprojeler için geçerlidir. kullanan netstandard2.xprojeler 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.Librarykullanı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 ve FileVersion varsayılan olarak soneki olmadan değerini $(Version) kullanır. Örneğin, ise $(Version)1.2.3-beta.4değeri olur 1.2.3.
  • InformationalVersion varsayılan değerini kullanır $(Version).
  • $(SourceRevisionId) Özelliği varsa, öğesine eklenirInformationalVersion. kullanarak IncludeSourceRevisionInInformationalVersionbu davranışı devre dışı bırakabilirsiniz.
  • Copyright ve Description özellikleri NuGet meta verileri için de kullanılır.
  • Configurationvarsayılan değeri Debugolan , tüm MSBuild hedefleriyle paylaşılır. Bunu komut seçeneğiyle --configurationdotnet 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ı silin AssemblyInfo .

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 , PackageVersionPackageIcon, , Titleve 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 packdeğ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_SOLUTIONStrue (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.

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

AppendTargetFrameworkToOutputPath

özelliği, hedef çerçeve takma adını (TFM) çıkış yoluna eklenip eklenmeyeceğini denetler (OutputPath tarafından tanımlanır).AppendTargetFrameworkToOutputPath .NET SDK 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 ayar ile olarak bin\Debug\net5.0bin\Debug değişir:

<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 otomatik olarak hedef çerçeveyi ve varsa çalışma zamanı tanımlayıcısını çıkış yoluna ekler. false ayarı AppendRuntimeIdentifierToOutputPath RID'nin çıkış yoluna eklenmesini engeller.

Örneğin, bir .NET 5 uygulaması ve rid'i win10-x64için çıkış yolu aşağıdaki ayar ile olarak bin\Debug\net5.0\win10-x64bin\Debug\net5.0 değişir:

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

CopyLocalLockFileAssemblies

CopyLocalLockFileAssemblies özelliği, diğer kitaplıklara bağımlılıkları olan eklenti projeleri için kullanışlıdır. Bu özelliği olarak trueayarlarsanı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ı belirleyemiyorsa SDK'nın NETSDK1148 hatası oluşturup oluşturmadığıyla ilgilidir. Hatanın ErrorOnDuplicatePublishOutputFiles oluşturulmasını false istemiyorsanız özelliğini 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ş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 trueayarlayı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 uygulamalar OutputTypeExeiç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ş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.exetarafından oluşturulur. özelliği olarak trueayarlanarak GenerateSatelliteAssembliesForCore uydu derlemeleri bunun yerinecsc.exe tarafından oluşturulur. csc.exe kullanmak aşağıdaki durumlarda avantajlı olabilir:

<PropertyGroup>
  <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>

IsPublishable

IsPublishable özelliği, hedefin Publish çalışmasına izin verir. Bu özellik yalnızca .*proj dosyalarını ve Publishdotnet 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ğ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şv 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, Razor dosyalarının çalışma zamanı derlemesini desteklemek için çoğunlukla 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ümlerde, başvuru derlemeleri her zaman dizine OutDir yazılır. .NET 6 ve sonraki sürümlerde, başvuru derlemelerinin ProduceReferenceAssemblyInOutDir dizine yazıp yazılmayacağını denetlemek için OutDir özelliğini kullanabilirsiniz. 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, oluşturulduysa projenin XML belge dosyası projenin yayımlama çıkışına eklenir. Bu özellik varsayılan olarak ayarlanır true.

İpucu

Derleme zamanında bir XML belge dosyası oluşturmak için GenerateDocumentationFile) true değerini olarak ayarlayın.

PublishDocumentationFiles

Bu özellik, çeşitli xml belge dosyalarının varsayılan olarak PublishDocumentationFile ve PublishReferencesDocumentationFiles gibi yayımlama dizinine kopyalanıp kopyalanmayacağını denetleyan 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 trueolur. Bu özellik varsayılan olarak ayarlanır 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 ayarlanır true.

PublishRelease

özelliği yapılandırma PublishRelease yerine varsayılan olarak yapılandırmayı ReleaseDebug 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şkenini DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONStrue (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ımlarken yürütülebilir projenin PublishRelease değeri önceliklidir ve yeni varsayılan yapılandırmayı çözümdeki diğer projelere akıtır. Bir çözüm, değerleri farklı PublishReleaseolan birden çok yürütülebilir veya üst düzey proje içeriyorsa, çözüm başarıyla yayımlanamaz.

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 çıktısı rollForward olur.

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

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

Değer Açıklama
Minor Belirtilmezse varsayılan .
İstenen ikincil sürüm eksikse en düşük daha yüksek ikincil sürüme ileri sarma. İ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 ve en düşük ikincil sürüme ilerleyin. İ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 aktarmayı 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 İletmeyin, 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ünü belirtin:

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

Çerçeveye bağımlı bir uygulama yayımlarken, bu değer gereken en düşük sürümü belirtir. 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>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 , doğru varlıkların grafikte olduğundan emin olmak için geri yükleme zamanında kullanılır.

İpucu

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

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

SatelliteResourceLanguages

ö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 pakette yerelleştirilmiş kaynak uydu derlemeleri 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 korunacaktır.

<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. Örneğin:

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

Kendi içinde yer alan dağıtımlardan kullanılmayan kodu kırpan bir özellik olan kırpmaya ince ayar yapmak için çok sayıda MSBuild özelliği vardır. 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 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 üretmeyeceğini denetler.
EnableTrimAnalyzer true veya false Kırpma analizi uyarılarının bir alt kümesinin üretilip üretmeyeceğini denetler. olarak ayarlanmış falseolsa PublishTrimmed bile analizi etkinleştirebilirsiniz.
ILLinkTreatWarningsAsErrors true veya false Kırpma uyarılarının hata olarak kabul edilip edilmeyeceğini denetler. Örneğin, olarak ayarlandığında bu özelliği olarak falseTreatWarningsAsErrors 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.

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

ve Nullablegibi LangVersion C# derleyici seçenekleri, proje dosyanızda MSBuild özellikleri olarak da belirtilebilir. Daha fazla bilgi için bkz. C# derleyici seçenekleri.

CopyDebugSymbolFilesFromPackages

Bu özellik olarak trueayarlandığında, projedeki öğelerden gelen PackageReference 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 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, SDK'nın DisableImplicitFrameworkDefines .NET projesi için hedef çerçeve ve platform için ön işlemci simgeleri oluşturup oluşturmadığını denetler. Bu özellik olarak false ayarlandığında veya ayarsız olduğunda (varsayılan değerdir) ön işlemci simgeleri ş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 ön işlemci simgeleri 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ümlü platform (IOS15_1)
  • Sürüm en düşük sınıra sahip platform (IOS15_1_OR_GREATER)

İş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 ön işlemci simgeleri yayılır. Örneğin, net6.0 için destek net5.0anlamına gelir ve bu şekilde geri döner.netcoreapp1.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ı derleme adıyla aynı olmalı ve derlemeyle aynı dizinde olmalıdır. Bu özelliği belirtmezseniz ancak GenerateDocumentationFiletruedeğ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ği atlayıp bunun yerine GenerateDocumentationFile özelliğini kullanmak genellikle daha kolaydır.

Bu özelliği belirtir ancak GenerateDocumentationFile değerini olarak falseayarlarsanı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.resxForm1.cs ile aynı klasördeyse ve EmbeddedResourceUseDependentUponConvention olarak ayarlandıysa true, 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 , ManifestResourceNameveya DependentUpon meta veriler belirtilirseLogicalName, 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 trueayarlanır. proje dosyasındaki öğe için EmbeddedResource olarak ayarlanırsa falseve hiçbir LogicalName, ManifestResourceNameveya DependentUpon meta veri belirtilmezse, kaynak bildirim dosyası 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 süslenmiş 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 olarak 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ığında True, AssemblyInfo.cs dosyasına aşağıdaki derleme düzeyi özniteliği eklenir:

[assembly: RequiresPreviewFeatures]

Çözümleyici, bu özniteliğin olarak ayarlanmadığı EnablePreviewFeaturesTrueprojelerin bağımlılıklarında 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 gönderilmesi gerekiyorsa aşağıdaki GenerateRequiresPreviewFeaturesAttribute bölümüne bakın.

EnableWindowsTargeting

Windows olmayan 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 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.

<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 sahiptir (ancak .xml uzantısıyla).

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

Önemli

özelliğini Falseolarak ayarlarsanızGenerateRequiresPreviewFeaturesAttribute, 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, 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 TreatWarningsAsErrorstrueiyileştirilmiştir. olarak ayarladıysanız TreatWarningsAsErrorstrue ancak yine de örtük olarak tetiklenen derlemelerin en iyi duruma getirilmesini istiyorsanız olarak ayarlayabilirsinizTrueOptimizeImplicitlyTriggeredBuild. Örtük olarak tetiklenen derlemeler için derleme iyileştirmesini kapatmak için olarak ayarlayın OptimizeImplicitlyTriggeredBuildFalse.

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

Varsayılan öğe ekleme özellikleri

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

Daha fazla bilgi için bkz . Varsayılan ekleme ve dışlamalar.

DefaultItemExcludes

DefaultItemExcludes Ekleme, dışlama ve kaldırma glob'ların dışında tutulması 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>

DefaultItemExcludesInProjectFolder

DefaultItemExcludesInProjectFolder Ekleme, dışlama ve kaldırma glob'ların dışında 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 DefaultItemExcludes özelliğini kullanınDefaultItemExcludesInProjectFolder.

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

EnableDefaultItems

özelliği derleme öğelerinin EnableDefaultItems , ekli kaynak öğelerinin ve None öğelerin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. EnableDefaultItems Tüm örtük dosya eklemeyi devre dışı bırakmak için özelliğini false 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 katıştırılmış kaynak öğelerinin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. 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. 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

ö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 çözümleme kuralı vardır. Bu kümeden, 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 AnalysisLevel6.

<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ğerin AnalysisMode değerlerinden biri olduğu <mode> biçimindedir<version>-<mode>. 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

.NET 6 SDK'sını 5-<mode>5.0-<mode> veya olarak ayarlayıp AnalysisLevel yükler ve 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ğeri 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 trueayarlarsanız, bu özellik kod stili (IDEXXXX) kurallarını da etkiler.
  • için AnalysisLevelbir bileşik değer ayarlarsanız AnalysisMode belirtmeniz gerekmez. Ancak, bunu yaparsanız, AnalysisLevel yerine öncelikli AnalysisModeolur.
  • 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 Allayarlayı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 Default daha agresif mod. Derleme zorlaması için kesinlikle önerilen bazı öneriler, derleme uyarıları olarak etkinleştirilir.
Recommended Yok Derleme uyarıları olarak daha fazla kuralın Minimum etkinleştirildiği moddan daha agresif mod.
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 trueayarlarsanı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 yerine AnalysisModeöncelikli olur.
  • veya olarak ve olarak ayarlandıysa AnalysisMode5AllEnabledByDefaultAnalysisLevel5.0ve .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 kod kalitesi analizi , .NET 5 veya sonraki bir sürümü hedefleyen projeler için 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 EnableNETAnalyzerstrueetkinleştirebilirsiniz. Herhangi bir projede kod analizini devre dışı bırakmak için bu özelliği olarak falseayarlayın.

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

Not

Bu özellik özellikle .NET 5+ SDK'daki yerleşik çözümleyiciler için geçerlidir. NuGet kod çözümleme 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 olarak ayarlayarak .NET projeleri için kod stili analizini EnforceCodeStyleInBuildtrueetkinleştirebilirsiniz.

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

Uyarı veya hata olarak yapılandırılmış tüm kod stili kuralları derleme ve rapor ihlallerinde yürütülür.

Not

.NET 6'yı (veya .NET 6 içeren Visual Studio 2022'yi) yüklüyor ancak Visual Studio 2019 kullanarak projenizi oluşturmak istiyorsanız, özelliği olarak ayarlanmışsa EnforceCodeStyleInBuildtrueyeni CS8032 uyarıları görebilirsiniz. Uyarıları çözmek için bir global.json girişi ekleyerek projenizi derlemek için .NET SDK'sının sürümünü belirtebilirsiniz (bu örnekte gibi5.0.404).

_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, '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 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

özelliği arka ConcurrentGarbageCollectionplan (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ümlerde özelliği, PredefinedCulturesOnlygenelleş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 üzere bekleme listesine koyacak veya serbest bırakacak şekilde yapılandırıyor. değerini olarak true ayarlamak, çöp toplayıcısına segmentleri hazır bekleyenler 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ırıyor. Daha fazla bilgi için bkz. En fazla iş parçacığı.

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

ThreadPoolMinThreads

özelliği, ThreadPoolMinThreads çalışan iş parçacığı havuzu için en az iş parçacığı sayısını yapılandı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>

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

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ışı özelliğinin PackageTargetFallbackyerini 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ı SystemSystem.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 trueayarlarsanı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 trueayarlarsanız, yalnızca ihtiyacınız olan projelere açık başvurular ekleyebilirsiniz.

<PropertyGroup>
  <DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>

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 RestoreIgnoreFailedSourcesgibi 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 bilinen doğru ç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, 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ı olarak yapıldığında bu hataları önlemek için özelliğini olarak falseayarlayınValidateExecutableReferencesMatchSelfContained.

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

WindowsSdkPackageVersion

WindowsSdkPackageVersion özelliği, 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 bu amaç için öğenin kullanımının FrameworkReference yerini alır.

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

Not

Windows SDK hedefleme paketleri .NET 5+ SDK'ya eklendiğ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 gibi nadir durumlarda kullanılmalıdır.

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 runkullanarak-- uygulamaya geçirilecek ek bağımsız değişkenleri belirtebilirsiniz.

RunWorkingDirectory

özelliği, RunWorkingDirectory başlatılacak uygulama işlemi için çalışma dizinini tanımlar. Bu mutlak bir yol veya proje dizinine göre bir yol olabilir. Bir dizin belirtmezseniz, OutDir çalışma dizini olarak kullanılır.

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

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

EnableComHosting

EnableComHosting özelliği, bir derlemenin com sunucusu sağladığını gösterir. ayarının EnableComHosting olarak true ayarlanması, EnableDynamicLoading'in 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 kodu ilgilendiriyor:

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>

ÖrtükUsings

ö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 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 disableolarak false ayarlayın.

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

Not

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

Öğ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 timidir. Aşağıdaki ek öğe türleri .NET SDK tarafından kullanılabilir hale getirilir:

Bu öğelerde ve gibi IncludeUpdatestandart öğe özniteliklerinden 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ğ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, NuGet paketine bir 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 PrivateAssetsmeta 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ında 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ı yanlışlıkla 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

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

Örneğin:

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

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, PreserveNewestyalnızca değiştirildiğinde öğeyi kopyalayan , Alwaysher 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. 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 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 RecursiveDirkorunur. 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.

Çözüm Gezgini LinkBase meta verilerini içeren öğeyi gösterir.

Ayrıca bkz.