MSBuild-referencia .NET SDK-projektekhez
Ez a lap a .NET-projektek konfigurálásához használható MSBuild tulajdonságokra és elemekre mutató hivatkozás.
Feljegyzés
Ez a lap egy folyamatban lévő munka, és nem sorolja fel a .NET SDK összes hasznos MSBuild tulajdonságát. A gyakori MSBuild tulajdonságok listáját lásd: Common MSBuild properties.
Szerelvény-érvényesítési tulajdonságok
Ezeket a tulajdonságokat és elemeket a rendszer átadja a ValidateAssemblies
feladatnak. A szerelvény-ellenőrzéssel kapcsolatos további információkért lásd: Szerelvény-ellenőrzés.
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
Feljegyzés
Ezek a tulajdonságok még nem részei a .NET SDK-nak. A használatukhoz a Microsoft.DotNet.ApiCompat.Task fájlhoz is hozzá kell adnia egy PackageReference
elemet.
Emellett a csomagérvényesítési tulajdonságokban dokumentált alábbi tulajdonságok az szerelvény-ellenőrzésre is érvényesek:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
Ha be van true
állítva, a tulajdonság azt határozza meg, hogy az ApiCompatStrictMode
API-kompatibilitási ellenőrzéseket szigorú módban kell elvégezni.
<PropertyGroup>
<ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>
ApiCompatValidateAssemblies
A ApiCompatValidateAssemblies
tulajdonság számos ellenőrzést tesz lehetővé a megadott szerelvényeken. További információ: Szerelvény érvényesítése.
<PropertyGroup>
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>
Keretrendszer tulajdonságai
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
TargetFramework
A TargetFramework
tulajdonság az alkalmazás cél-keretrendszerverzióját határozza meg. Az érvényes cél-keretrendszer-monikerek listáját az SDK-stílusú projektek cél-keretrendszerei című témakörben találja.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
További információ: Target frameworks in SDK style projects.
TargetFrameworks
Használja a TargetFrameworks
tulajdonságot, ha azt szeretné, hogy az alkalmazás több platformot célozz meg. Az érvényes cél-keretrendszer-monikerek listáját az SDK-stílusú projektek cél-keretrendszerei című témakörben találja.
Feljegyzés
Ez a tulajdonság figyelmen kívül lesz hagyva, ha TargetFramework
(egyedi) van megadva.
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>
További információ: Target frameworks in SDK style projects.
NetStandardImplicitPackageVersion
Feljegyzés
Ez a tulajdonság csak a következőt használó netstandard1.x
projektekre vonatkozik: . Ez nem vonatkozik a használt netstandard2.x
projektekre.
Akkor használja a NetStandardImplicitPackageVersion
tulajdonságot, ha a metapackage verziónál alacsonyabb keretrendszerverziót szeretne megadni. A következő példában szereplő projektfájl a célokat célozza netstandard1.3
, de az 1.6.0-s verzióját NETStandard.Library
használja.
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Szerelvényattribútum tulajdonságai
GenerateAssemblyInfo
A GenerateAssemblyInfo
tulajdonság szabályozza AssemblyInfo
a projekt attribútumának létrehozását. Az alapértelmezett érték true
. A fájl létrehozásának letiltására használható false
:
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
A GeneratedAssemblyInfoFile beállítás szabályozza a létrehozott fájl nevét.
Ha az érték aztrue
, a GenerateAssemblyInfo
csomaghoz kapcsolódó projekttulajdonságok szerelvényattribútumokká alakulnak.
A projektfájl szerelvényattribútumainak létrehozásával kapcsolatos további információkért lásd : Szerelvényattribútumok beállítása egy projektfájlban.
GeneratedAssemblyInfoFile
A GeneratedAssemblyInfoFile
tulajdonság határozza meg a létrehozott szerelvény-információs fájl relatív vagy abszolút elérési útját. Alapértelmezés szerint a(z) [project-name] nevű fájl. AssemblyInfo. [cs|vb] az $(IntermediateOutputPath)
(általában az obj) könyvtárban.
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
Csomag tulajdonságai
Leíró tulajdonságok
Megadhatja az olyan tulajdonságokat, mint PackageId
a , PackageVersion
, PackageIcon
, Title
és Description
leírhatja a projektből létrehozott csomagot. Ezekről és más tulajdonságokról további információt a csomagcélban talál.
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
PackRelease
A PackRelease
tulajdonság hasonló a PublishRelease tulajdonsághoz, azzal a kivételt leszámítva, hogy megváltoztatja a függvény alapértelmezett viselkedését dotnet pack
. Ez a tulajdonság a .NET 7-ben lett bevezetve.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Feljegyzés
- A .NET 8 SDK-tól
PackRelease
kezdve az alapértelmezett érték a következő.true
További információ: "dotnet pack" használata Release configuration. - Csak .NET 7 SDK: A Visual Studio-megoldás részét képező projektekben való használathoz
PackRelease
a környezeti változótDOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
true
(vagy bármely más értéket) kell beállítania. A sok projektet tartalmazó megoldások esetében a változó beállítása növeli a csomagoláshoz szükséges időt.
Csomagérvényesítési tulajdonságok
Ezeket a tulajdonságokat és elemeket a rendszer átadja a ValidatePackage
feladatnak. A csomagérvényesítéssel kapcsolatos további információkért tekintse meg a csomagérvényesítés áttekintését.
A feladat tulajdonságaiért tekintse meg a ValidateAssemblies
szerelvény érvényesítési tulajdonságait.
A következő MSBuild tulajdonságokat és elemeket ebben a szakaszban dokumentáljuk:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
Ha be van true
állítva, a ApiCompatEnableRuleAttributesMustMatch
tulajdonság engedélyezi az érvényességi szabályt, amely ellenőrzi, hogy az attribútumok egyeznek-e. Az alapértelmezett érték false
.
<PropertyGroup>
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>
ApiCompatEnableRuleCannotChangeParameterName
Ha be van true
állítva, a ApiCompatEnableRuleCannotChangeParameterName
tulajdonság engedélyezi az érvényesítési szabályt, amely ellenőrzi, hogy a paraméternevek megváltoztak-e a nyilvános metódusokban. Az alapértelmezett érték false
.
<PropertyGroup>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>
ApiCompatExcludeAttributesFile
Az ApiCompatExcludeAttributesFile
elem egy olyan fájl elérési útját adja meg, amely docId formátumban kizárandó attribútumokat tartalmaz.
<ItemGroup>
<ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
<ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>
ApiCompatGenerateSuppressionFile
A ApiCompatGenerateSuppressionFile
tulajdonság megadja, hogy létre kell-e hozni egy kompatibilitási tiltófájlt.
<PropertyGroup>
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>
ApiCompatPermitUnnecessarySuppressions
A ApiCompatPermitUnnecessarySuppressions
tulajdonság azt határozza meg, hogy engedélyezi-e a szükségtelen letiltást a letiltási fájlban.
Az alapértelmezett érték false
.
<PropertyGroup>
<ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>
ApiCompatPreserveUnnecessarySuppressions
A ApiCompatPreserveUnnecessarySuppressions
tulajdonság azt határozza meg, hogy a letiltó fájl újragenerálásakor meg kell-e őrizni a szükségtelen elnyomásokat. Egy meglévő letiltó fájl újragenerálásakor a rendszer felolvassa annak tartalmát, deszerializálja az elnyomások egy csoportjába, majd egy listában tárolja. Előfordulhat, hogy az inkompatibilitás kijavítása esetén a továbbiakban nem lesz szükség a letiltásokra. Ha a letiltások vissza lettek szerializálva a lemezre, a tulajdonság true
beállításával megtarthatja az összes meglévő (deszerializált) kifejezést.
Az alapértelmezett érték false
.
<PropertyGroup>
<ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>
ApiCompatRespectInternals
A ApiCompatRespectInternals
tulajdonság azt határozza meg, hogy az API-k mellett az API-k kompatibilitását public
is ellenőrizni kell-einternal
.
<PropertyGroup>
<ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>
ApiCompatSuppressionFile
Az ApiCompatSuppressionFile
elem egy vagy több elnyomó fájl elérési útját adja meg, amelyből olvasni szeretne. Ha nincs meghatározva, a program beolvassa a project-directory>/CompatibilitySuppressions.xml tiltófájlt <(ha létezik).
<ItemGroup>
<ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>
ApiCompatSuppressionOutputFile
A ApiCompatSuppressionOutputFile
tulajdonság egy letiltó fájl elérési útját adja meg, amelybe írni szeretne, amikor <ApiCompatGenerateSuppressionFile>
van true
. Ha nincs meghatározva, a rendszer az első ApiCompatSuppressionFile
elemet használja.
EnablePackageValidation
A EnablePackageValidation
tulajdonság számos ellenőrzést tesz lehetővé a csomagon a Pack
feladat után. További információ: csomagérvényesítés.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
EnableStrictModeForBaselineValidation
Ha be van true
állítva, a tulajdonság szigorú módot tesz lehetővé a EnableStrictModeForBaselineValidation
csomag alapkonfiguráció-ellenőrzéséhez. Az alapértelmezett érték false
.
EnableStrictModeForCompatibleFrameworksInPackage
Ha be van true
állítva, a EnableStrictModeForCompatibleFrameworksInPackage
tulajdonság szigorú módot tesz lehetővé olyan szerelvények számára, amelyek kompatibilisek a célkeretük alapján. Az alapértelmezett érték false
.
EnableStrictModeForCompatibleTfms
Ha be van true
állítva, a EnableStrictModeForCompatibleTfms
tulajdonság szigorú módot tesz lehetővé a szerződés- és végrehajtási szerelvények számára minden kompatibilis célkerethez. Az alapértelmezett érték true
.
NoWarn
A NoWarn
tulajdonság megadja a letiltandó diagnosztikai azonosítókat.
<PropertyGroup>
<NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>
PackageValidationBaselineFrameworkToIgnore
Az PackageValidationBaselineFrameworkToIgnore
elem egy célkeretet határoz meg, amely figyelmen kívül hagyandó az alapcsomagból. A keretrendszer sztringjének pontosan meg kell egyeznie az alapcsomag mappanevével.
<ItemGroup>
<PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>
PackageValidationBaselineName
A PackageValidationBaselineName
tulajdonság az alapcsomag nevét adja meg az aktuális csomag ellenőrzéséhez. Ha nincs meghatározva, a rendszer az PackageId
értéket használja.
PackageValidationBaselineVersion
A PackageValidationBaselineVersion
tulajdonság az alapcsomag verzióját adja meg az aktuális csomag ellenőrzéséhez.
PackageValidationReferencePath
Az PackageValidationReferencePath
elem megadja azt a könyvtár elérési útját, ahol a referenciaszerelvény megtalálható TFM-enként.
<ItemGroup>
<PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net7.0" />
</ItemGroup>
RoslynAssembliesPath
A RoslynAssembliesPath
tulajdonság megadja a használni kívánt Microsoft.CodeAnalysis szerelvényeket tartalmazó könyvtár elérési útját. Ezt a tulajdonságot csak akkor kell beállítania, ha az SDK-ban találhatónál újabb fordítóval szeretne tesztelni.
Közzétételhez kapcsolódó tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishRelease
- PublishSelfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- Önkiszolgáló
- UseAppHost
AppendTargetFrameworkToOutputPath
A AppendTargetFrameworkToOutputPath
tulajdonság azt szabályozza, hogy a cél-keretrendszer moniker (TFM) hozzá legyen-e fűzve a kimeneti útvonalhoz (amelyet az OutputPath határoz meg). A .NET SDK automatikusan hozzáfűzi a cél keretrendszert, és ha van ilyen, a futtatókörnyezet azonosítóját a kimeneti útvonalhoz. Beállítás AppendTargetFrameworkToOutputPath
, amely megakadályozza, hogy false
a TFM hozzá legyen fűzve a kimeneti útvonalhoz. A kimeneti útvonal TFM-jének nélkül azonban több buildösszetevő is felülírhatja egymást.
Egy .NET 5-alkalmazás esetében például a kimeneti útvonal a következő beállítással változik bin\Debug\net5.0
bin\Debug
:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
A AppendRuntimeIdentifierToOutputPath
tulajdonság azt szabályozza, hogy a futtatókörnyezet azonosítója (RID) hozzá legyen-e fűzve a kimeneti útvonalhoz. A .NET SDK automatikusan hozzáfűzi a cél keretrendszert, és ha van ilyen, a futtatókörnyezet azonosítóját a kimeneti útvonalhoz. Beállítás AppendRuntimeIdentifierToOutputPath
, amely megakadályozza, hogy false
a RID hozzá legyen fűzve a kimeneti útvonalhoz.
Egy .NET 5-alkalmazáshoz és egy RID-hez win-x64
például az alábbi beállítás a kimeneti elérési utat bin\Debug\net5.0\win-x64
a következőre bin\Debug\net5.0
módosítja:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
Ez CopyLocalLockFileAssemblies
a tulajdonság olyan beépülő modulprojektek esetén hasznos, amelyek más kódtáraktól függenek. Ha ezt a tulajdonságot true
állítja be, a rendszer minden tranzitív NuGet-csomagfüggőséget átmásol a kimeneti könyvtárba. Ez azt jelenti, hogy bármelyik gépen futtathatja a beépülő modul kimenetét dotnet build
.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
Az alapértelmezett érték CopyLocalLockFileAssemblies
a kimeneti típustól függően változhat. Az osztálytárak esetében például az alapértelmezett érték, míg a konzolalkalmazások esetében az alapértelmezett true
értékfalse
. Ezt a tulajdonságot explicit módon is megadhatja, hogy szükség esetén felülbírálja az alapértelmezett értéket.
Tipp.
Másik lehetőségként az osztálytárat is közzéteheti dotnet publish
. További információ: dotnet publish.
ErrorOnDuplicatePublishOutputFiles
A ErrorOnDuplicatePublishOutputFiles
tulajdonság azzal kapcsolatos, hogy az SDK hibát okoz-e NETSDK1148, amikor az MSBuild duplikált fájlokat észlel a közzétételi kimenetben, de nem tudja meghatározni, hogy mely fájlokat kell eltávolítania. Állítsa a tulajdonságot arra az ErrorOnDuplicatePublishOutputFiles
esetre false
, ha nem szeretné, hogy a hiba létrejönjön.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Ez a tulajdonság a .NET 6-ban lett bevezetve.
GenerateRuntimeConfigDevFile
A .NET 6 SDK-tól kezdve az [Appname].runtimesettings.dev.json fájl már nem jön létre alapértelmezés szerint fordításkor. Ha továbbra is létre szeretné hozni ezt a fájlt, állítsa a tulajdonságot a GenerateRuntimeConfigDevFile
következőre true
: .
<PropertyGroup>
<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
GenerateRuntimeConfigurationFiles
A GenerateRuntimeConfigurationFiles
tulajdonság azt szabályozza, hogy a futtatókörnyezet konfigurációs beállításai a runtimeconfig.template.json fájlból az [alkalmazásnév].runtimeconfig.json fájlba legyenek-e másolva. A runtimeconfig.json fájlt igénylő alkalmazások esetében, vagyis azok esetében, amelyek OutputType
esetében ez a Exe
tulajdonság alapértelmezés szerint a true
következő.
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
GenerateSatelliteAssembliesForCore
A GenerateSatelliteAssembliesForCore
tulajdonság szabályozza, hogy a műholdas szerelvények csc.exe vagy Al.exe (Assembly Linker) használatával jönnek-e létre .NET-keretrendszer projektekben. (A.NET Core és a .NET 5+ projektek mindig csc.exe használnak műholdas szerelvények létrehozásához.) A .NET-keretrendszer projektek esetében alapértelmezés szerint a műholdas szerelvényeket a al.exe hozza létre. A tulajdonság beállításával a GenerateSatelliteAssembliesForCore
műholdas szerelvényeket csc.exe hozza létre.true
A csc.exe használata a következő helyzetekben lehet előnyös:
- A C# fordítót
deterministic
szeretné használni. - Korlátozott az a tény, hogy al.exe nem támogatja a nyilvános aláírást AssemblyInformationalVersionAttribute , és rosszul kezeli.
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
A IsPublishable
tulajdonság lehetővé teszi a Publish
cél futtatását. Ez a tulajdonság csak azokat a folyamatokat érinti, amelyek .*proj fájlokat és a Publish
célfájlt, például a dotnet publish parancsot használják. Ez nem érinti a célt használó Visual Studióban történő közzétételt PublishOnly
. Az alapértelmezett érték true
.
Ez a tulajdonság akkor hasznos, ha egy megoldásfájlon fut dotnet publish
, mivel lehetővé teszi a közzéteendő projektek automatikus kiválasztását.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
A PreserveCompilationContext
tulajdonság lehetővé teszi, hogy egy beépített vagy közzétett alkalmazás futásidőben több kódot állítson össze ugyanazokkal a beállításokkal, amelyeket a buildeléskor használtak. Az összeállításkor hivatkozott szerelvényeket a rendszer a kimeneti könyvtár ref alkönyvtárába másolja. A referencia-szerelvények nevei az alkalmazás .deps.json fájljában vannak tárolva, a fordítónak átadott beállításokkal együtt. Ezeket az információkat a tulajdonságok és DependencyContext.CompilationOptions a DependencyContext.CompileLibraries tulajdonságok használatával is lekérheti.
Ezt a funkciót többnyire belsőleg használják ASP.NET Core MVC és Razor oldalak a Razor-fájlok futásidejű fordításának támogatásához.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
A PreserveCompilationReferences
tulajdonság hasonló a PreserveCompilationContext tulajdonsághoz, azzal a kivételével, hogy csak a hivatkozott szerelvényeket másolja a közzétételi könyvtárba, és nem a .deps.json fájlt.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
További információ: Razor SDK tulajdonságai.
ProduceReferenceAssemblyInOutDir
A .NET 5-ös és korábbi verzióiban a referencia-szerelvények mindig a OutDir
könyvtárba lesznek írva. A .NET 6-os és újabb verzióiban a ProduceReferenceAssemblyInOutDir
tulajdonság segítségével szabályozhatja, hogy a referenciaszerelvények a OutDir
könyvtárba vannak-e írva. Az alapértelmezett érték az false
, és a referenciaszerelvények csak a IntermediateOutputPath
könyvtárba vannak írva. Állítsa be úgy az értéket, hogy true
referenciaszerelvényeket írjon a OutDir
könyvtárba.
<PropertyGroup>
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>
További információ: Referenciaszerelvények írása köztes kimenetre.
PublishDocumentationFile
Ha ez a tulajdonság, true
a projekt XML-dokumentációs fájlja , ha létrejön, a projekt közzétételi kimenetében szerepel. Ez a tulajdonság alapértelmezés szerint a .true
Tipp.
Állítsa be a GenerateDocumentationFile-t true
XML-dokumentációs fájl létrehozására fordításkor.
PublishDocumentationFiles
Ez a tulajdonság számos más tulajdonság engedélyezési jelzője, amely azt szabályozza, hogy a rendszer alapértelmezés szerint átmásolja-e a különböző XML-dokumentációs fájlokat a közzétételi könyvtárba, nevezetesen a PublishDocumentationFile és a PublishReferencesDocumentationFiles fájlokat. Ha ezek a tulajdonságok nincsenek megadva, és ez a tulajdonság be van állítva, akkor ezek a tulajdonságok alapértelmezés szerint a következők lesznek true
: . Ez a tulajdonság alapértelmezés szerint a .true
PublishReferencesDocumentationFiles
Ha ez a tulajdonság, true
a program a projekt hivatkozásainak XML-dokumentációs fájljait a közzétételi könyvtárba másolja ahelyett, hogy csak futásidejű objektumokat, például DLL-fájlokat használna. Ez a tulajdonság alapértelmezés szerint a .true
PublishRelease
A PublishRelease
tulajdonság alapértelmezés szerint a dotnet publish
Release
konfigurációt használja a Debug
konfiguráció helyett. Ez a tulajdonság a .NET 7-ben lett bevezetve.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Feljegyzés
- A .NET 8 SDK-tól
PublishRelease
kezdve a .NET 8 vagy újabb verziót megcélzott projektek alapértelmezett értéketrue
. További információ: "dotnet publish" használata Release configuration. - Ez a tulajdonság nem befolyásolja a viselkedését
dotnet build /t:Publish
, és csak akkor módosítja a konfigurációt, ha a .NET PARANCSSOR-on keresztül teszi közzé. - Csak .NET 7 SDK: A Visual Studio-megoldás részét képező projektekben való használathoz
PublishRelease
a környezeti változótDOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
true
(vagy bármely más értéket) kell beállítania. Ha egy olyan megoldást tesz közzé, amely engedélyezve van ezzel a változóval, a végrehajtható projektPublishRelease
értéke elsőbbséget élvez, és az új alapértelmezett konfigurációt a megoldás bármely más projektje felé irányítja. Ha egy megoldás több végrehajtható vagy legfelső szintű projektet tartalmaz különböző értékekkelPublishRelease
, a megoldás nem fog sikeres közzétételt végrehajtani. A sok projektet tartalmazó megoldások esetében ez a beállítás növeli a közzétételhez szükséges időt.
PublishSelfContained
A PublishSelfContained
tulajdonság azt jelzidotnet publish
, hogy az alkalmazás önálló alkalmazásként való közzétételére szolgál. Ez a tulajdonság akkor hasznos, ha nem tudja használni a --self-contained
dotnet publish parancs argumentumát – például a megoldás szintjén történő közzétételkor. Ebben az esetben hozzáadhatja az PublishSelfContained
MSBuild tulajdonságot egy projekthez vagy a Directory.Build.Props fájlhoz .
Ez a tulajdonság a .NET 7-ben lett bevezetve. Hasonló a SelfContained tulajdonsághoz, azzal a kivételsel, hogy az igére publish
jellemző. Javasoljuk, hogy ahelyett, hogy a PublishSelfContained
SelfContained
.
<PropertyGroup>
<PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>
RollForward
A RollForward
tulajdonság szabályozza, hogy az alkalmazás hogyan választja ki a futtatókörnyezetet, ha több futtatókörnyezeti verzió is elérhető. Ez az érték a .runtimeconfig.json adja meg beállításként rollForward
.
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Állítsa az RollForward
alábbi értékek egyikére:
Érték | Leírás |
---|---|
Minor |
Alapértelmezett , ha nincs megadva. Ugrás a legalacsonyabb alverzióra, ha a kért alverzió hiányzik. Ha a kért alverzió jelen van, a rendszer a LatestPatch szabályzatot használja. |
Major |
Lépjen tovább a következő elérhető magasabb főverzióra és a legalacsonyabb alverzióra, ha szükséges, a főverzió hiányzik. Ha a kért főverzió jelen van, akkor a rendszer a Minor szabályzatot használja. |
LatestPatch |
Ugrás a legmagasabb javításverzióra. Ez az érték letiltja az alverziók továbbgördítését. |
LatestMinor |
Ugrás a legmagasabb alverzióra, még akkor is, ha a kért alverzió jelen van. |
LatestMajor |
Ugrás a legmagasabb főverzióra és a legmagasabb alverzióra, még akkor is, ha a kért főverzió jelen van. |
Disable |
Ne lépjen előre, csak a megadott verzióhoz kötést. Ez a szabályzat nem ajánlott általános használatra, mivel letiltja a legújabb javításokra való visszaállítás lehetőségét. Ez az érték csak teszteléshez ajánlott. |
További információ: A roll-forward viselkedés szabályozása.
RuntimeFrameworkVersion
A RuntimeFrameworkVersion
tulajdonság megadja a közzétételkor használni kívánt futtatókörnyezet verzióját. Adja meg a futtatókörnyezet verzióját:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Keretrendszerfüggő alkalmazás közzétételekor ez az érték határozza meg a minimálisan szükséges verziót. Önálló alkalmazás közzétételekor ez az érték határozza meg a szükséges verziót .
RuntimeIdentifier
A RuntimeIdentifier
tulajdonság lehetővé teszi egyetlen futtatókörnyezet-azonosító (RID) megadását a projekthez. A RID lehetővé teszi egy önálló üzembe helyezés közzétételét.
<PropertyGroup>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
RuntimeIdentifiers
A RuntimeIdentifiers
tulajdonság lehetővé teszi, hogy pontosvesszővel tagolt listát adjon meg a projekt futtatókörnyezet-azonosítóiról (RID-k ). Ezt a tulajdonságot akkor használja, ha több futtatókörnyezetben kell közzétennie. RuntimeIdentifiers
a rendszer a visszaállításkor használja annak biztosítására, hogy a megfelelő eszközök szerepeljenek a gráfban.
Tipp.
RuntimeIdentifier
A (szingular) gyorsabb buildeket biztosíthat, ha csak egyetlen futtatókörnyezetre van szükség.
<PropertyGroup>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
A SatelliteResourceLanguages
tulajdonság segítségével megadhatja, hogy mely nyelvekre szeretné megőrizni a műholderőforrás-szerelvényeket a buildelés és a közzététel során. Számos NuGet-csomag tartalmaz honosított erőforrás-műholdas szerelvényeket a fő csomagban. A honosított erőforrásokat nem igénylő NuGet-csomagokra hivatkozó projektek esetében a honosított szerelvények szükségtelenül megnövelhetik a buildelési és közzétételi kimeneti méretet. Ha hozzáadja a SatelliteResourceLanguages
tulajdonságot a projektfájlhoz, csak a megadott nyelvek honosított szerelvényei lesznek belefoglalva a buildelési és közzétételi kimenetbe. A következő projektfájlban például csak az angol (USA) és a német (Németország) erőforrás-műholdszerelvények maradnak meg.
<PropertyGroup>
<SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>
Feljegyzés
Ezt a tulajdonságot meg kell adnia a projektben, amely a NuGet-csomagra hivatkozik honosított erőforrás-műholdas szerelvényekkel.
Ha több nyelvet szeretne argumentumként
dotnet publish
megadni, három pár idézőjelet kell hozzáadnia a nyelvi azonosítókhoz. Példa:dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
Önkiszolgáló
A SelfContained
tulajdonság tájékoztatjadotnet build
, és dotnet publish
önálló alkalmazásként készít vagy tesz közzé alkalmazásokat. Ez a tulajdonság akkor hasznos, ha nem tudja használni az --self-contained
argumentumot a dotnet paranccsal – például a megoldás szintjén történő közzétételkor. Ebben az esetben hozzáadhatja az SelfContained
MSBuild tulajdonságot egy projekthez vagy a Directory.Build.Props fájlhoz .
Ez a tulajdonság hasonló a PublishSelfContained tulajdonsághoz . A lehetőség helyett SelfContained
ajánlott használniPublishSelfContained
.
<PropertyGroup>
<SelfContained>true</SelfContained>
</PropertyGroup>
UseAppHost
A UseAppHost
tulajdonság azt szabályozza, hogy létrejön-e natív végrehajtható fájl az üzembe helyezéshez. Az önálló üzembe helyezésekhez natív végrehajtható példányra van szükség. Alapértelmezés szerint egy keretrendszerfüggő végrehajtható fájl jön létre. Állítsa be a UseAppHost
tulajdonságot úgy, hogy false
letiltsa a végrehajtható generáció létrehozását.
<PropertyGroup>
<UseAppHost>false</UseAppHost>
</PropertyGroup>
Az üzembe helyezéssel kapcsolatos további információkért lásd a .NET-alkalmazások üzembe helyezését ismertető témakört.
Vágással kapcsolatos tulajdonságok
Számos MSBuild tulajdonság érhető el a vágás finomhangolásához, amely egy olyan funkció, amely levágja a nem használt kódot az önkiszolgáló üzemelő példányokból. Ezeket a beállításokat részletesen tárgyaljuk a vágási beállításoknál. Az alábbi táblázat gyors referenciát nyújt.
Tulajdonság | Értékek | Leírás |
---|---|---|
PublishTrimmed |
true vagy false |
Azt szabályozza, hogy a vágás engedélyezve van-e a közzététel során. |
TrimMode |
full vagy partial |
Az alapértelmezett szint a full . Szabályozza a vágás részletességét. |
SuppressTrimAnalysisWarnings |
true vagy false |
Azt szabályozza, hogy a vágáselemzési figyelmeztetések létre legyenek-e hozva. |
EnableTrimAnalyzer |
true vagy false |
Azt szabályozza, hogy a rendszer a vágáselemzési figyelmeztetések egy részhalmazát hozza-e létre. Az elemzést akkor is engedélyezheti, ha PublishTrimmed be van állítva false . |
ILLinkTreatWarningsAsErrors |
true vagy false |
Azt szabályozza, hogy a vágási figyelmeztetések hibaként legyenek-e kezelve. Előfordulhat például, hogy ezt a tulajdonságot false arra szeretné beállítani, hogy mikor TreatWarningsAsErrors legyen true beállítva. |
TrimmerSingleWarn |
true vagy false |
Azt szabályozza, hogy a szerelvényenként egyetlen figyelmeztetés jelenik-e meg, vagy az összes figyelmeztetés. |
TrimmerRemoveSymbols |
true vagy false |
Azt szabályozza, hogy az összes szimbólum el legyen-e távolítva egy levágott alkalmazásból. |
Összeállítással kapcsolatos tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DocumentationFile
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- EnableWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
A C#-fordító beállításai, például LangVersion
és Nullable
, msBuild tulajdonságként is megadható a projektfájlban. További információ: C#-fordító beállításai.
ContinuousIntegrationBuild
A ContinuousIntegrationBuild
tulajdonság azt jelzi, hogy egy build egy folyamatos integrációs (CI) kiszolgálón fut-e. Ha be van true
állítva, ez a tulajdonság csak a hivatalos buildekre vonatkozó beállításokat engedélyezi, szemben a fejlesztői gépek helyi buildjeivel. A tárolt fájl elérési útjai például normalizálva vannak a hivatalos buildekhez. Helyi fejlesztőgépen azonban a hibakereső nem talál helyi forrásfájlokat, ha a fájlelérési utak normalizálva vannak.
Feljegyzés
A tulajdonság true
beállítása jelenleg csak akkor működik, ha adott SourceLink-szolgáltatói csomaghivatkozást <SourceRoot Include="$(MyDirectory)" />
vagy elemet ad hozzá. További információ: dotnet/roslyn issue 55860.
A CI-rendszer változójával feltételesen beállíthatja a tulajdonságot ContinuousIntegrationBuild
. Az Azure Pipelines változójának neve például a következő TF_BUILD
:
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
A GitHub Actions esetében a változó neve GITHUB_ACTIONS
:
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
Ha ez a tulajdonság be van állítva true
, a rendszer a projekt elemeiből származó PackageReference
összes szimbólumfájlt (más néven PDB-fájlt) átmásolja a build kimenetére. Ezek a fájlok informatívabb veremkövetéseket biztosítanak a kivételekhez, és könnyebben érthetővé teszik a futó alkalmazás memóriaképeit és nyomkövetéseit. A fájlok beleszámítása azonban megnöveli az üzembehelyezési csomagok méretét.
Ez a tulajdonság a .NET SDK 7.0.100-ban lett bevezetve, bár alapértelmezés szerint nincs megadva.
CopyDocumentationFilesFromPackages
Ha ez a tulajdonság be van állítva true
, a rendszer a projekt elemeiből létrehozott PackageReference
ÖSSZES XML-dokumentációfájlt átmásolja a buildkimenetbe. Vegye figyelembe, hogy a funkció engedélyezése megnöveli az üzembehelyezési csomagok méretét.
Ez a tulajdonság a .NET SDK 7.0.100-ban lett bevezetve, bár alapértelmezés szerint nincs megadva.
DisableImplicitFrameworkDefines
A DisableImplicitFrameworkDefines
tulajdonság azt szabályozza, hogy az SDK előfeldolgozási szimbólumokat hoz-e létre a .NET-projekt cél keretrendszeréhez és platformához. Ha ez a tulajdonság be van állítva false
vagy nincs megadva (ez az alapértelmezett érték), a rendszer előprocesszorszimbólumokat hoz létre a következőhöz:
- Verzió nélküli keretrendszer (
NETFRAMEWORK
,NETSTANDARD
,NET
) - Keretrendszer verzióval (
NET48
,NETSTANDARD2_0
,NET6_0
) - Keretrendszer minimálisan kötött verzióval (
NET48_OR_GREATER
,NETSTANDARD2_0_OR_GREATER
,NET6_0_OR_GREATER
)
A cél-keretrendszer-monikerekről és ezekről az implicit előprocesszorszimbólumokról további információt a Target-keretrendszerek című témakörben talál.
Emellett ha a projektben egy operációsrendszer-specifikus célkeretet ad meg (például net6.0-android
), a következő előprocesszorszimbólumok jönnek létre:
- Platform verzió nélkül (
ANDROID
,IOS
,WINDOWS
) - Platform verzióval (
IOS15_1
) - Platform minimálisan kötött verzióval (
IOS15_1_OR_GREATER
)
Az operációs rendszerspecifikus célkeret-monikerekről az operációs rendszerspecifikus TFM-ek című témakörben talál további információt.
Végül, ha a cél-keretrendszer támogatja a régebbi cél keretrendszereket, a rendszer előfeldolgozási szimbólumokat ad ki ezekhez a régebbi keretrendszerekhez. Például azt jelenti, net6.0
hogy támogatja, net5.0
és így tovább egészen vissza.netcoreapp1.0
. Ezért minden ilyen cél-keretrendszer esetében meg lesz határozva a minimálisan kötött verziójú keretrendszer.
DocumentationFile
A DocumentationFile
tulajdonság lehetővé teszi a tár dokumentációját tartalmazó XML-fájl fájlnevének megadását. Ahhoz, hogy az IntelliSense megfelelően működjön a dokumentációval, a fájlnévnek meg kell egyeznie a szerelvény nevével, és ugyanabban a könyvtárban kell lennie, mint a szerelvény. Ha nem adja meg ezt a tulajdonságot, de a GenerateDocumentationFile true
értéket állítja be, a dokumentációs fájl neve alapértelmezés szerint a szerelvény neve lesz, de egy .xml fájlkiterjesztéssel. Emiatt gyakran egyszerűbb kihagyni ezt a tulajdonságot, és inkább a GenerateDocumentationFile tulajdonságot használni.
Ha ezt a tulajdonságot adja meg, de a GenerateDocumentationFile false
értéket állítja be, a fordító nem hoz létre dokumentációfájlt. Ha megadja ezt a tulajdonságot, és kihagyja a GenerateDocumentationFile tulajdonságot, a fordító létrehoz egy dokumentációs fájlt.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
EmbeddedResourceUseDependentUponConvention
A EmbeddedResourceUseDependentUponConvention
tulajdonság azt határozza meg, hogy az erőforrás-jegyzékfájlnevek az erőforrásfájlokkal együtt található forrásfájlok típusadataiból jönnek-e létre. Ha például a Form1.resx ugyanabban a mappában van, mint Form1.cs, és EmbeddedResourceUseDependentUponConvention
a beállítás true
értéke, a létrehozott .resources fájl a Form1.cs definiált első típusból veszi fel a nevét. Ha MyNamespace.Form1
a Form1.cs első típusa, akkor a létrehozott fájlnév MyNamespace.Form1.resources.
Feljegyzés
Ha LogicalName
egy elemhez EmbeddedResource
meg van adva a , ManifestResourceName
vagy DependentUpon
metaadatok, akkor az erőforrásfájl létrehozott jegyzékfájljának neve ehelyett az adott metaadatokon alapul.
Alapértelmezés szerint a .NET Core 3.0-s vagy újabb verzióját futtató új .NET-projektben ez a tulajdonság a következőre true
van állítva: . Ha a false
LogicalName
ManifestResourceName
projektfájlban az elemhez EmbeddedResource
meg van adva a nem vagy DependentUpon
a metaadat, az erőforrás-jegyzékfájl neve a projekt gyökérnévterétől és a .resx fájl relatív fájlelérési útvonalán alapul. További információ: Az erőforrás-jegyzékfájlok elnevezése.
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
EnablePreviewFeatures
A EnablePreviewFeatures
tulajdonság határozza meg, hogy a projekt függ-e az attribútummal RequiresPreviewFeaturesAttribute dekorált API-któl vagy szerelvényektől. Ez az attribútum azt jelzi, hogy egy API vagy szerelvény olyan funkciókat használ, amelyek előzetes verziójúnak tekinthetők a használt SDK-verzióhoz. Az előzetes verziójú funkciók nem támogatottak, és egy későbbi verzióban el is távolíthatók. Az előzetes verziójú funkciók használatának engedélyezéséhez állítsa a tulajdonságot a következőre True
: .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Ha egy projekt erre a tulajdonságra van állítva True
, a rendszer a következő szerelvényszintű attribútumot adja hozzá a AssemblyInfo.cs fájlhoz:
[assembly: RequiresPreviewFeatures]
Az elemző figyelmezteti, ha ez az attribútum olyan projektek függőségeinél van jelen, ahol EnablePreviewFeatures
nincs beállítva True
.
Az előzetes verziójú szerelvényeket szállító kódtár-szerzőknek ezt a tulajdonságot a következőre kell beállítaniuk True
: . Ha egy szerelvénynek előzetes verziójú és nem előzetes verziójú API-k keverékével kell szállítania, tekintse meg az alábbi GenerateRequiresPreviewFeaturesAttribute szakaszt.
EnableWindowsTargeting
Állítsa be a EnableWindowsTargeting
tulajdonságot Úgy, hogy true
Windows-alkalmazásokat (például Windows-űrlapokat vagy Windows megjelenítési alaprendszer-alkalmazásokat) hozzon létre egy nem Windows-platformon. Ha nem állítja be ezt a tulajdonságot true
, a buildre figyelmeztető NETSDK1100 fog kapni. Ez a hiba azért fordul elő, mert a cél- és futtatókörnyezeti csomagok nem töltődnek le automatikusan a nem támogatott platformokra. A tulajdonság beállításával ezek a csomagok a keresztcélzáskor lesznek letöltve.
Feljegyzés
Ez a tulajdonság jelenleg a nem Windows-platformokon történő fejlesztés engedélyezéséhez ajánlott. Ha azonban az alkalmazás készen áll a kiadásra, a Windowsra kell épülnie. Ha nem Windows-platformra épít, előfordulhat, hogy a kimenet nem ugyanaz, mint a Windowsra való építéskor. A végrehajtható fájl nem windowsos alkalmazásként van megjelölve (ami azt jelenti, hogy mindig elindít egy konzolablakot), és nem lesz beágyazva ikon.
<PropertyGroup>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
GenerateDocumentationFile
A GenerateDocumentationFile
tulajdonság azt szabályozza, hogy a fordító létrehoz-e XML-dokumentációs fájlt a tárhoz. Ha ezt a tulajdonságot true
a DocumentationFile tulajdonságon keresztül állítja be, és nem ad meg fájlnevet, a létrehozott XML-fájl ugyanabba a kimeneti könyvtárba kerül, mint a szerelvény, és ugyanazzal a fájlnévvel rendelkezik (de .xml kiterjesztéssel).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
A kód megjegyzéseiből származó dokumentáció létrehozásával kapcsolatos további információkért tekintse meg az XML-dokumentáció megjegyzéseit (C#), a kód xml-fájllal (Visual Basic) történő dokumentálása vagy a kód dokumentálása XML-fájllal (F#) című témakört.
GenerateRequiresPreviewFeaturesAttribute
A GenerateRequiresPreviewFeaturesAttribute
tulajdonság szorosan kapcsolódik az EnablePreviewFeatures tulajdonsághoz . Ha a kódtár előzetes verziójú funkciókat használ, de nem szeretné, hogy a teljes szerelvényt megjelölje az RequiresPreviewFeaturesAttribute attribútummal, amihez a felhasználóknak engedélyezniük kell az előzetes verziójú funkciókat, állítsa ezt a tulajdonságot a következőre False
: .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Fontos
Ha a tulajdonságot False
úgy állítja be, hogy az GenerateRequiresPreviewFeaturesAttribute
előzetes verziójú funkciókra RequiresPreviewFeaturesAttributetámaszkodó összes nyilvános API-t díszítenie kell.
OptimizeImplicitlyTriggeredBuild
A buildelési idő felgyorsítása érdekében a Visual Studio által implicit módon aktivált buildek kihagyják a kódelemzést, beleértve a null értékű elemzést is. A Visual Studio például teszt futtatásakor implicit buildet indít el. Az implicit buildek azonban csak akkor vannak optimalizálva, ha TreatWarningsAsErrors
nem true
. Ha beállította, TreatWarningsAsErrors
true
de továbbra is implicit módon aktivált buildeket szeretne optimalizálni, beállíthatja a következőt OptimizeImplicitlyTriggeredBuild
True
: . Az implicit módon aktivált buildek buildoptimalizálásának kikapcsolásához állítsa be OptimizeImplicitlyTriggeredBuild
a következőt False
: .
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
DisableRuntimeMarshalling
A DisableRuntimeMarshalling
tulajdonság lehetővé teszi annak megadását, hogy le szeretné tiltani a futásidejű rendezési támogatást a projekthez. Ha ez a tulajdonság be van állítvatrue
, akkor a rendszer hozzáadja a DisableRuntimeMarshallingAttribute szerelvényhez, és minden P/Invokes vagy delegált alapú interop a letiltott futtatókörnyezet-rendezés szabályait követi.
<PropertyGroup>
<DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>
Alapértelmezett elembefoglalási tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
További információkért lásd : Alapértelmezett tartalmazza és kizárja.
DefaultItemExcludes
DefaultItemExcludes
A tulajdonság használatával definiálhat globmintákat olyan fájlokhoz és mappákhoz, amelyeket ki kell zárni a belefoglalásból, kizárásból és eltávolításból. Alapértelmezés szerint a ./bin és a ./obj mappák ki vannak zárva a glob-mintákból.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
DefaultItemExcludesInProjectFolder
A tulajdonság használatával definiálhatja a DefaultItemExcludesInProjectFolder
projektmappában lévő fájlok és mappák glob mintáit, amelyeket ki kell zárni a belefoglalásból, kizárásból és eltávolításból. Alapértelmezés szerint a ponttal (.
például .gittel és .vs) kezdődő mappák ki vannak zárva a glob-mintákból.
Ez a tulajdonság nagyon hasonló a DefaultItemExcludes
tulajdonsághoz, kivéve, hogy csak a projektmappában lévő fájlokat és mappákat veszi figyelembe. Ha egy glob-minta véletlenül megfeleltetné a projektmappán kívüli elemeket egy relatív elérési úttal, használja a DefaultItemExcludesInProjectFolder
tulajdonságot a DefaultItemExcludes
tulajdonság helyett.
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
A EnableDefaultItems
tulajdonság azt szabályozza, hogy a fordítási elemek, a beágyazott erőforráselemek és None
az elemek implicit módon szerepelnek-e a projektben. Az alapértelmezett érték true
. Állítsa be a EnableDefaultItems
tulajdonságot úgy, hogy false
az összes implicit fájlbefoglalást letiltsa.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
A EnableDefaultCompileItems
tulajdonság azt szabályozza, hogy a fordítási elemek implicit módon szerepelnek-e a projektben. Az alapértelmezett érték true
. Állítsa be a EnableDefaultCompileItems
tulajdonságot úgy, hogy false
letiltsa a *.cs és más nyelvi bővítményfájlok implicit felvételét.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
EnableDefaultEmbeddedResourceItems
A EnableDefaultEmbeddedResourceItems
tulajdonság azt szabályozza, hogy a beágyazott erőforráselemek implicit módon szerepelnek-e a projektben. Az alapértelmezett érték true
. Állítsa be a EnableDefaultEmbeddedResourceItems
tulajdonságot úgy, hogy false
letiltsa a beágyazott erőforrásfájlok implicit felvételét.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
A EnableDefaultNoneItems
tulajdonság azt szabályozza, hogy az elemek (a buildelési folyamatban nem szereplő fájlok) implicit módon szerepelnek-e None
a projektben. Az alapértelmezett érték true
. Állítsa be a EnableDefaultNoneItems
tulajdonságot úgy, hogy false
letiltsa az elemek implicit felvételét None
.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Kódelemzési tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
- AnalysisLevel
- AnalysisLevel-kategória<>
- AnalysisMode
- AnalysisMode<kategória>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
A AnalysisLevel
tulajdonság lehetővé teszi a .NET-kiadásnak megfelelően futtatandó kódelemzők készletének megadását. Minden .NET-kiadás a .NET 5-től kezdve kódelemzési szabályok készletével rendelkezik. A készletből az adott kiadáshoz alapértelmezés szerint engedélyezett szabályok elemzik a kódot. Ha például a .NET 8-ra frissít, de nem szeretné, hogy a kódelemzési szabályok alapértelmezett készlete megváltozzon, állítsa a következőre AnalysisLevel
7
: .
<PropertyGroup>
<AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>
A .NET 6-tól kezdődően megadhat egy összetett értéket ehhez a tulajdonsághoz, amely azt is meghatározza, hogy milyen agresszíven engedélyezze a szabályokat. Az összetett értékek formátuma <version>-<mode>
az AnalysisMode értékek egyike, ahol az <mode>
érték az AnalysisMode értékek egyike. Az alábbi példa a kódelemzők előzetes verzióját használja, és engedélyezi a javasolt szabálykészletet.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Alapértelmezett érték:
- Ha a projekt a .NET 5-ös vagy újabb verzióját célozza meg, vagy ha hozzáadta az AnalysisMode tulajdonságot , az alapértelmezett érték az
latest
. - Ellenkező esetben ez a tulajdonság csak akkor lesz elhagyva, ha kifejezetten hozzáadja a projektfájlhoz.
Az alábbi táblázat a megadható értékeket mutatja be.
Érték | Értelmezés |
---|---|
latest |
A legújabb, kiadott kódelemzőket használja a rendszer. Ez az alapértelmezett beállítás. |
latest-<mode> |
A legújabb, kiadott kódelemzőket használja a rendszer. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
preview |
A legújabb kódelemzők akkor is használhatók, ha előzetes verzióban vannak. |
preview-<mode> |
A legújabb kódelemzők akkor is használhatók, ha előzetes verzióban vannak. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
8.0 |
A .NET 8 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
8.0-<mode> |
A .NET 8 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
8 |
A .NET 8 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
8-<mode> |
A .NET 8 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
7.0 |
A .NET 7 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
7.0-<mode> |
A .NET 7 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
7 |
A .NET 7 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
7-<mode> |
A .NET 7 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
6.0 |
A .NET 6 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
6.0-<mode> |
A .NET 6 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
6 |
A .NET 6 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
6-<mode> |
A .NET 6 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
5.0 |
A .NET 5 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
5.0-<mode> |
A .NET 5 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
5 |
A .NET 5 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
5-<mode> |
A .NET 5 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. Az <mode> érték határozza meg, hogy mely szabályok legyenek engedélyezve. |
Feljegyzés
- A .NET 6-tól kezdődően, ha a EnforceCodeStyleInBuild értéket állítja be, ez a tulajdonság a kódstílus (IDEXXXX) szabályaira (a kódminőségi szabályok mellett) is hatással van.
true
- Ha összetett értéket
AnalysisLevel
ad meg, nem kell AnalysisMode értéket megadnia. Azonban ha mégis,AnalysisLevel
elsőbbségetAnalysisMode
élvez a . - Ez a tulajdonság nincs hatással a kódelemzésre olyan projektekben, amelyek nem hivatkoznak projekt SDK-ra, például örökölt .NET-keretrendszer projektek, amelyek a Microsoft.CodeAnalysis.NetAnalyzers NuGet-csomagra hivatkoznak.
AnalysisLevel-kategória<>
Ez a tulajdonság megegyezik az AnalysisLevel tulajdonságával, azzal a kivételrel, hogy csak a kódelemzési szabályok egy adott kategóriájára vonatkozik. Ez a tulajdonság lehetővé teszi, hogy a kódelemzők egy adott kategóriához eltérő verzióját használja, vagy hogy a többi szabálykategóriától eltérő szinten engedélyezze vagy tiltsa le a szabályokat. Ha kihagyja ezt a tulajdonságot egy adott szabálykategória esetében, az alapértelmezés szerint az AnalysisLevel érték lesz. Az elérhető értékek megegyeznek az AnalysisLevel értékeivel.
<PropertyGroup>
<AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
<AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>
Az alábbi táblázat felsorolja az egyes szabálykategóriák tulajdonságnevét.
Tulajdonság neve | Szabálykategória |
---|---|
<AnalysisLevelDesign> |
Tervezési szabályok |
<AnalysisLevelDocumentation> |
Dokumentációs szabályok |
<AnalysisLevelGlobalization> |
Globalizációs szabályok |
<AnalysisLevelInteroperability> |
Hordozhatóság és együttműködési szabályok |
<AnalysisLevelMaintainability> |
Karbantarthatósági szabályok |
<AnalysisLevelNaming> |
Elnevezési szabályok |
<AnalysisLevelPerformance> |
Teljesítményszabályok |
<AnalysisLevelSingleFile> |
Egyfájlos alkalmazásszabályok |
<AnalysisLevelReliability> |
Megbízhatósági szabályok |
<AnalysisLevelSecurity> |
Biztonsági szabályok |
<AnalysisLevelStyle> |
Kódstílusú (IDEXXXX) szabályok |
<AnalysisLevelUsage> |
Használati szabályok |
AnalysisMode
A .NET SDK az összes "CA" kódminőségi szabályt tartalmazza. Alapértelmezés szerint az egyes .NET-kiadásokban csak néhány szabály van engedélyezve összeállítási figyelmeztetésként. A AnalysisMode
tulajdonság lehetővé teszi az alapértelmezés szerint engedélyezett szabályok testreszabását. Válthat egy agresszívebb elemzési módra, ahol külön-külön is kikapcsolhatja a szabályokat, vagy egy konzervatívabb elemzési módra, ahol bizonyos szabályokra is választhat. Ha például az összes szabályt build figyelmeztetésként szeretné engedélyezni, állítsa az értéket a következőre All
: .
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
Az alábbi táblázat az elérhető beállításértékeket mutatja be. Az engedélyezett szabályok számának növekvő sorrendjében vannak felsorolva.
Érték | Leírás |
---|---|
None |
Minden szabály le van tiltva. Az egyes szabályok engedélyezéséhez szelektíven is dönthet. |
Default |
Alapértelmezett mód, ahol bizonyos szabályok buildértesítésként vannak engedélyezve, bizonyos szabályok Visual Studio IDE-javaslatokként vannak engedélyezve, a többi pedig le van tiltva. |
Minimum |
Agresszívebb mód, mint Default mód. A buildkényszerítéshez erősen ajánlott javaslatok build figyelmeztetésként engedélyezve vannak. Ha meg szeretné tekinteni, hogy ez mely szabályokat tartalmazza, vizsgálja meg a %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.editorconfig fájlt. |
Recommended |
Agresszívebb mód, mint Minimum a mód, ahol több szabály engedélyezve van a buildekre vonatkozó figyelmeztetésekként. Ha meg szeretné tekinteni, hogy ez mely szabályokat tartalmazza, tekintse meg a %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.editorconfig fájlt. |
All |
A rendszer minden szabályt engedélyez összeállítási figyelmeztetésként*. A letiltásukhoz szelektíven letilthatja az egyes szabályokat. * A következő szabályok nem engedélyezettek a következő beállításokkal All AnalysisMode AnalysisLevel latest-all : CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 és a kódmetrikaelemző szabályok (CA1501, CA1502, CA1505, CA1506 és CA1509). Ezek az örökölt szabályok elavultak lehetnek egy későbbi verzióban. A bejegyzésekkel dotnet_diagnostic.CAxxxx.severity = <severity> azonban egyenként is engedélyezheti őket. |
Feljegyzés
- A .NET 6-tól kezdődően, ha a EnforceCodeStyleInBuild értéket állítja be, ez a tulajdonság a kódstílus (IDEXXXX) szabályaira (a kódminőségi szabályok mellett) is hatással van.
true
- Ha például összetett értéket használ az AnalysisLevelhez,
<AnalysisLevel>8-recommended</AnalysisLevel>
ezt a tulajdonságot teljes egészében kihagyhatja. Ha azonban mindkét tulajdonságot megadja,AnalysisLevel
elsőbbségetAnalysisMode
élvez. - Ez a tulajdonság nincs hatással a kódelemzésre olyan projektekben, amelyek nem hivatkoznak projekt SDK-ra, például örökölt .NET-keretrendszer projektek, amelyek a Microsoft.CodeAnalysis.NetAnalyzers NuGet-csomagra hivatkoznak.
AnalysisMode<kategória>
Ez a tulajdonság ugyanaz, mint az AnalysisMode, azzal a kivételrel, hogy csak a kódelemzési szabályok egy adott kategóriájára vonatkozik. Ez a tulajdonság lehetővé teszi, hogy a többi szabálykategóriától eltérő szinten engedélyezze vagy tiltsa le a szabályokat. Ha kihagyja ezt a tulajdonságot egy adott szabálykategória esetében, az alapértelmezés szerint az AnalysisMode érték lesz. A rendelkezésre álló értékek megegyeznek az AnalysisMode értékeivel.
<PropertyGroup>
<AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>
Az alábbi táblázat felsorolja az egyes szabálykategóriák tulajdonságnevét.
Tulajdonság neve | Szabálykategória |
---|---|
<AnalysisModeDesign> |
Tervezési szabályok |
<AnalysisModeDocumentation> |
Dokumentációs szabályok |
<AnalysisModeGlobalization> |
Globalizációs szabályok |
<AnalysisModeInteroperability> |
Hordozhatóság és együttműködési szabályok |
<AnalysisModeMaintainability> |
Karbantarthatósági szabályok |
<AnalysisModeNaming> |
Elnevezési szabályok |
<AnalysisModePerformance> |
Teljesítményszabályok |
<AnalysisModeSingleFile> |
Egyfájlos alkalmazásszabályok |
<AnalysisModeReliability> |
Megbízhatósági szabályok |
<AnalysisModeSecurity> |
Biztonsági szabályok |
<AnalysisModeStyle> |
Kódstílusú (IDEXXXX) szabályok |
<AnalysisModeUsage> |
Használati szabályok |
CodeAnalysisTreatWarningsAsErrors
A CodeAnalysisTreatWarningsAsErrors
tulajdonság lehetővé teszi annak konfigurálását, hogy a kódminőség-elemzési figyelmeztetéseket (CAxxxx) figyelmeztetésként kell-e kezelni, és megszakítani a buildet. Ha a projektek létrehozásakor használja a jelzőt, a -warnaserror
.NET-kódminőség-elemzési figyelmeztetések is hibaüzenetként lesznek kezelve. Ha nem szeretné, hogy a kódminőség-elemzési figyelmeztetések hibákként legyenek kezelve, beállíthatja az CodeAnalysisTreatWarningsAsErrors
MSBuild tulajdonságot false
a projektfájlban.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
A .NET-kódminőség-elemzés alapértelmezés szerint engedélyezve van a .NET 5-ös vagy újabb verziót célzó projektek esetében. Ha a .NET 5+ SDK használatával fejleszt, engedélyezheti a .NET-kódelemzést olyan SDK-stílusú projektekhez, amelyek a .NET korábbi verzióit true
célják, a EnableNETAnalyzers
tulajdonság beállításával. Ha bármely projektben le szeretné tiltani a kódelemzést, állítsa ezt a tulajdonságot a következőre false
: .
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Feljegyzés
Ez a tulajdonság kifejezetten a .NET 5+ SDK beépített elemzőire vonatkozik. NuGet-kódelemzési csomag telepítésekor nem használható.
EnforceCodeStyleInBuild
A .NET-kódstílus elemzése alapértelmezés szerint le van tiltva az összes .NET-projekt buildjén. A .NET-projektek kódstílus-elemzését a tulajdonság true
beállításával EnforceCodeStyleInBuild
engedélyezheti.
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
Minden figyelmeztetésnek vagy hibának konfigurált kódstílus-szabály a buildelés és a jelentés megsértése esetén lesz végrehajtva.
_SkipUpgradeNetAnalyzersNuGetWarning
A _SkipUpgradeNetAnalyzersNuGetWarning
tulajdonság lehetővé teszi annak konfigurálását, hogy figyelmeztetést kapjon-e, ha olyan NuGet-csomagból származó kódelemzőket használ, amely elavult a legújabb .NET SDK kódelemzőivel összehasonlítva. A figyelmeztetés a következőhöz hasonló:
A .NET SDK újabb elemzőkkel rendelkezik a 6.0.0-s verzióval, mint a Microsoft.CodeAnalysis.NetAnalyzers csomag 5.0.3-s verziója. Frissítse vagy távolítsa el a csomaghivatkozást.
Ha el szeretné távolítani ezt a figyelmeztetést, és továbbra is használni szeretné a NuGet-csomag kódelemzőinek verzióját, állítsa be _SkipUpgradeNetAnalyzersNuGetWarning
true
a projektfájlban.
<PropertyGroup>
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>
Futtatókörnyezet konfigurációs tulajdonságai
Néhány futtatókörnyezeti viselkedés konfigurálásához adja meg az MSBuild tulajdonságokat az alkalmazás projektfájljában. A futtatókörnyezeti viselkedés konfigurálásának egyéb módjairól további információt a futtatókörnyezet konfigurációs beállításai között talál.
- AutoreleasePoolSupport
- ConcurrentGarbageCollection
- InvariantGlobalization
- Előre definiáltCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- RétegzettPGO
- UseWindowsThreadPool
AutoreleasePoolSupport
A AutoreleasePoolSupport
tulajdonság konfigurálja, hogy minden felügyelt szál kap-e implicit NSAutoreleasePool-t , amikor támogatott macOS-platformon fut. További információkért lásd AutoreleasePool
a felügyelt szálakat.
<PropertyGroup>
<AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>
ConcurrentGarbageCollection
A ConcurrentGarbageCollection
tulajdonság konfigurálja, hogy engedélyezve van-e a háttérbeli (egyidejű) szemétgyűjtés . Állítsa be az értéket úgy, hogy false
letiltsa a háttérbeli szemétgyűjtést. További információkért lásd a háttérbeli csoportházirend-objektumot.
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
InvariantGlobalization
A InvariantGlobalization
tulajdonság konfigurálja, hogy az alkalmazás globalizációs invariáns módban fut-e, ami azt jelenti, hogy nem fér hozzá a kultúraspecifikus adatokhoz. Állítsa be, hogy true
az érték globalizációs invariant módban fusson. További információ: Invariant mód.
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Előre definiáltCulturesOnly
A .NET 6-os és újabb verzióiban a tulajdonság konfigurálja, hogy az PredefinedCulturesOnly
alkalmazások létrehozhatnak-e az invariáns kultúrától eltérő kultúrákat, ha engedélyezve van a globalizációs invariáns mód . Az alapértelmezett érték true
. Állítsa be az értéket úgy, hogy false
lehetővé tegye az új kultúra létrehozását globalizációs invariáns módban.
<PropertyGroup>
<PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>
További információ: Kultúra létrehozása és esetleképezés globalizációs invariáns módban.
RetainVMGarbageCollection
A RetainVMGarbageCollection
tulajdonság úgy konfigurálja a szemétgyűjtőt, hogy a törölt memóriaszegmenseket egy készenléti listára helyezze a későbbi használat vagy kiadás céljából. Az érték beállítása arra true
utasítja a szemétgyűjtőt, hogy helyezze a szegmenseket egy készenléti listára. További információ: Virtuális gép megőrzése.
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
ServerGarbageCollection
A ServerGarbageCollection
tulajdonság konfigurálja, hogy az alkalmazás munkaállomás szemétgyűjtést vagy kiszolgálói szemétgyűjtést használ-e. Állítsa be az értéket true
kiszolgálói szemétgyűjtés használatára. További információ: Munkaállomás és kiszolgáló.
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
ThreadPoolMaxThreads
A ThreadPoolMaxThreads
tulajdonság konfigurálja a feldolgozószál-készlet szálainak maximális számát. További információt a Szálak maximális száma című témakörben talál.
<PropertyGroup>
<ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>
ThreadPoolMinThreads
A ThreadPoolMinThreads
tulajdonság konfigurálja a feldolgozószál-készlet szálainak minimális számát. További információ: Minimális szálak.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
TieredCompilation
A TieredCompilation
tulajdonság azt konfigurálja, hogy az igény szerinti (JIT) fordító rétegzett fordítást használ-e. Állítsa be az értéket a false
rétegzett fordítás letiltásához. További információ: Rétegzett fordítás.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
A TieredCompilationQuickJit
tulajdonság konfigurálja, hogy a JIT-fordító gyors JIT-t használ-e. Állítsa be az értéket a false
gyors JIT letiltásához. További információ: Quick JIT.
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
TieredCompilationQuickJitForLoops
A TieredCompilationQuickJitForLoops
tulajdonság konfigurálja, hogy a JIT-fordító gyors JIT-t használ-e hurkokat tartalmazó metódusokon. Állítsa be az értéket a true
gyors JIT engedélyezéséhez a hurkokat tartalmazó metódusokon. További információ: Quick JIT for loops.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
RétegzettPGO
A TieredPGO
tulajdonság azt szabályozza, hogy engedélyezve van-e a dinamikus vagy rétegzett profilalapú optimalizálás (PGO). Állítsa be az értéket a true
rétegzett PGO engedélyezéséhez. További információ: Profilalapú optimalizálás.
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
UseWindowsThreadPool
A UseWindowsThreadPool
tulajdonság konfigurálja, hogy a szálkészlet szálkezelése delegálva legyen-e a Windows-szálkészletbe (csak Windows esetén). Az alapértelmezett érték a false
.NET-szálkészlet használata. További információ: Windows-szálkészlet.
<PropertyGroup>
<UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>
Hivatkozással kapcsolatos tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Visszaállítással kapcsolatos tulajdonságok
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
AssetTargetFallback
A AssetTargetFallback
tulajdonság lehetővé teszi további kompatibilis keretrendszerverziók megadását a projekthivatkozásokhoz és a NuGet-csomagokhoz. Ha például egy csomagfüggőséget ad meg, PackageReference
de a csomag nem tartalmaz olyan objektumokat, amelyek kompatibilisek a projektjeivel TargetFramework
, a AssetTargetFallback
tulajdonság megjelenik. A hivatkozott csomag kompatibilitását a rendszer a megadott cél-keretrendszerek használatával újraellenőrizi AssetTargetFallback
. Ez a tulajdonság lecseréli az elavult tulajdonságot PackageTargetFallback
.
A tulajdonságot egy vagy több cél-keretrendszerverzióra állíthatja beAssetTargetFallback
.
<PropertyGroup>
<AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>
DisableImplicitFrameworkReferences
A DisableImplicitFrameworkReferences
tulajdonság implicit elemeket vezérel FrameworkReference
a .NET Core 3.0-s és újabb verzióinak megcélzásakor. A .NET Core 2.1- vagy .NET Standard 2.0-s és korábbi verzióinak megcélzásakor az implicit PackageReference-elemeket egy metacsomagban lévő csomagokra vezérli. (A metacsomagok olyan keretrendszeralapú csomagok, amelyek csak más csomagoktól való függőségekből állnak.) Ez a tulajdonság az olyan implicit hivatkozásokat is szabályozza, mint például System
a System.Core
.NET-keretrendszer célzása.
Állítsa be ezt a tulajdonságot az true
implicit FrameworkReference vagy PackageReference elemek letiltására. Ha ezt a tulajdonságot true
állítja be, explicit hivatkozásokat adhat csak a szükséges keretrendszerekhez vagy csomagokhoz.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
DisableTransitiveFrameworkReferenceDownloads
Állítsa be a DisableTransitiveFrameworkReferenceDownloads
tulajdonságot, hogy true
elkerülje a projekt által közvetlenül nem hivatkozott futtatókörnyezeti és célcsomagok letöltését.
<PropertyGroup>
<DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>
DisableTransitiveProjectReferences
A DisableTransitiveProjectReferences
tulajdonság implicit projekthivatkozásokat vezérel. Állítsa be ezt a tulajdonságot implicit true
ProjectReference
elemek letiltására. Az implicit projekthivatkozások letiltása az örökölt projektrendszerhez hasonló nem tranzitív viselkedést eredményez.
Ha ez a true
tulajdonság, az a függő projekt összes függőségére vonatkozó beállításhoz PrivateAssets="All"
hasonló hatással van.
Ha ezt a tulajdonságot true
állítja be, explicit hivatkozásokat adhat hozzá csak a szükséges projektekhez.
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
ManagePackageVersionsCentrally
A ManagePackageVersionsCentrally
tulajdonság a .NET 7-ben lett bevezetve. Ha az adattár gyökerében lévő Directory.Packages.props fájlba állítja true
, a projektek gyakori függőségeit egyetlen helyről kezelheti. A Címtár.Packages.props fájl elemeivel PackageVersion
adhat hozzá verziókat a gyakori csomagfüggőségekhez . Ezután az egyes projektfájlokban kihagyhatja Version
az attribútumokat a PackageReference
központilag felügyelt csomagokra hivatkozó elemekből.
Példa Directory.Packages.props fájlra:
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
</ItemGroup>
Egyéni projektfájl:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>
További információkért lásd a központi csomagkezelést (CPM).
Visszaállítással kapcsolatos tulajdonságok
A hivatkozott csomagok visszaállítása telepíti az összes közvetlen függőséget és a függőségek összes függőségét. Testre szabhatja a csomagok visszaállítását olyan tulajdonságok megadásával, mint például RestorePackagesPath
a és RestoreIgnoreFailedSources
a . Ezekről és más tulajdonságokról további információt a visszaállítási célban talál.
<PropertyGroup>
<RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>
UseMauiEssentials
Állítsa be a UseMauiEssentials
tulajdonságot úgy, true
hogy explicit hivatkozást deklaráljon egy OLYAN projektre vagy csomagra, amely a MAUI Essentialstól függ. Ez a beállítás biztosítja, hogy a projekt lekéri a MAUI Essentials megfelelő ismert keretrendszer-referenciáját. Ha a projekt egy MAUI Essentials-t használó projektre hivatkozik, de nem állítja be ezt a tulajdonságot true
, buildre vonatkozó figyelmeztetés NETSDK1186
jelenhet meg.
<PropertyGroup>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
A ValidateExecutableReferencesMatchSelfContained
tulajdonság használható a végrehajtható projekthivatkozásokkal kapcsolatos hibák letiltására. Ha a .NET azt észleli, hogy egy önálló végrehajtható projekt egy keretrendszerfüggő végrehajtható projektre hivatkozik, vagy fordítva, akkor hibát okoz NETSDK1150 és NETSDK1151. Ha el szeretné kerülni ezeket a hibákat, ha a hivatkozás szándékos, állítsa a tulajdonságot a ValidateExecutableReferencesMatchSelfContained
következőre false
: .
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
A WindowsSdkPackageVersion
tulajdonság a Windows SDK-célcsomag verziójának felülbírálásához használható. Ez a tulajdonság a .NET 5-ben lett bevezetve, és az elem erre a FrameworkReference
célra való használatát váltja fel.
<PropertyGroup>
<WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>
Feljegyzés
Nem javasoljuk a Windows SDK-verzió felülírását, mert a Windows SDK célcsomagjai a .NET 5+ SDK részét képezik. Ehelyett a legújabb Windows SDK-csomagra való hivatkozáshoz frissítse a .NET SDK verzióját. Ez a tulajdonság csak ritkán használható, például előzetes verziójú csomagok használata vagy a C#/WinRT verziójának felülbírálása.
Futtatáshoz kapcsolódó tulajdonságok
A következő tulajdonságokat használják egy alkalmazás elindításához a dotnet run
paranccsal:
RunArguments
A RunArguments
tulajdonság határozza meg azokat az argumentumokat, amelyeket az alkalmazás a futtatáskor ad át az alkalmazásnak.
<PropertyGroup>
<RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>
Tipp.
Az alkalmazásnak továbbítandó további argumentumokat a következő beállítással --
dotnet run
adhatja meg:
RunWorkingDirectory
A RunWorkingDirectory
tulajdonság határozza meg az alkalmazás folyamatának munkakönyvtárát. Lehet abszolút elérési út vagy a projektkönyvtárhoz viszonyított elérési út. Ha nem ad meg könyvtárat, OutDir
akkor a rendszer munkakönyvtárként használja.
<PropertyGroup>
<RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>
Projekthez kapcsolódó tulajdonságok tesztelése
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
- IsTestProject
- IsTestingPlatformApplication
- Engedélyezés[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnablePlaywright
- EnableMSTestRunner
- EnableNUnitRunner
- GenerateTestingPlatformEntryPoint
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- TestingExtensionsProfile
- UseVSTest
IsTestProject
A IsTestProject
tulajdonság azt jelzi, hogy egy projekt tesztprojekt. Ha ez a tulajdonság be van állítva true
, az ellenőrzéssel ellenőrizheti, hogy a projekt hivatkozik-e egy önálló végrehajtható fájlra, le van tiltva. Ennek az az oka, hogy a tesztprojektek OutputType
Exe
api-jait általában egy hivatkozott végrehajtható fájlban hívják meg ahelyett, hogy futtatni próbálják. Emellett, ha egy projekt egy olyan projektre hivatkozik, amelynek IsTestProject
be van állítva true
, a tesztprojekt nem érvényesíthető hivatkozásként.
Ez a tulajdonság elsősorban a dotnet test
forgatókönyvhöz szükséges, és nincs hatással a vstest.console.exe használatára.
Feljegyzés
Ha a projekt az MSTest SDK-t adja meg, nem kell beállítania ezt a tulajdonságot. Automatikusan be van állítva. Hasonlóképpen, ez a tulajdonság automatikusan be van állítva a VSTesthez csatolt Microsoft.NET.Test.Sdk NuGet-csomagra hivatkozó projektekhez.
IsTestingPlatformApplication
Ha a projekt a Microsoft.Testing.Platform.MSBuild csomagra true
hivatkozik, a következőt állítja be IsTestingPlatformApplication
(ha nincs megadva az alapértelmezett érték is):
- Létrehozza a belépési pontot a tesztprojekthez.
- Létrehozza a konfigurációs fájlt.
- Észleli a bővítményeket.
Ha a tulajdonságot úgy állítja be, hogy false
letiltsa a csomag tranzitív függőségét. A tranzitív függőség az, amikor egy olyan projekt, amely egy adott csomagra hivatkozó másik projektre hivatkozik, úgy viselkedik, mintha a csomagra hivatkozik . Ezt a tulajdonságot false
általában egy tesztprojektre hivatkozó, nem tesztelési projektre állítja be. További információ: CS8892 hiba.
Ha a tesztprojekt MSTestre, NUnitra vagy xUnitra hivatkozik, a tulajdonság értéke megegyezik az EnableMSTestRunner, az EnableNUnitRunner vagy UseMicrosoftTestingPlatformRunner
az (xUnit) értékével.
Engedélyezés[NugetPackageNameWithoutDots]
Használjon egy tulajdonságot a mintával Enable[NugetPackageNameWithoutDots]
a Microsoft.Testing.Platform bővítmények engedélyezéséhez vagy letiltásához.
Ha például engedélyezni szeretné az összeomlási memóriakép bővítményt (NuGet-csomag : Microsoft.Testing.Extensions.CrashDump), állítsa a EnableMicrosoftTestingExtensionsCrashDump
következőre true
.
További információ: Bővítmények engedélyezése vagy letiltása.
EnableAspireTesting
Ha az MSTest projekt SDK-t használja, a EnableAspireTesting
tulajdonsággal behozhatja a teszteléshez Aspire
MSTest
szükséges összes függőséget és alapértelmezett using
direktívát. Ez a tulajdonság az MSTest 3.4 és újabb verzióiban érhető el.
További információ: Tesztelés a .NET Aspire használatával.
EnablePlaywright
Ha az MSTest projekt SDK-t használja, a EnablePlaywright
tulajdonsággal behozhatja a teszteléshez Playwright
MSTest
szükséges összes függőséget és alapértelmezett using
direktívát. Ez a tulajdonság az MSTest 3.4 és újabb verzióiban érhető el.
További információ: Playwright.
EnableMSTestRunner
A EnableMSTestRunner
tulajdonság engedélyezi vagy letiltja az MSTest-futó használatát. Az MSTest futó a VSTest egy könnyű és hordozható alternatíva. Ez a tulajdonság az MSTest 3.2-s és újabb verzióiban érhető el.
Feljegyzés
Ha a projekt az MSTest SDK-t adja meg, nem kell beállítania ezt a tulajdonságot. Automatikusan be van állítva.
EnableNUnitRunner
A EnableNUnitRunner
tulajdonság engedélyezi vagy letiltja az NUnit-futó használatát. Az NUnit futó egy könnyű és hordozható alternatíva a VSTest. Ez a tulajdonság az NUnit3TestAdapter 5.0-s és újabb verziójában érhető el.
GenerateTestingPlatformEntryPoint
Ha úgy állítja be a GenerateTestingPlatformEntryPoint
tulajdonságot, hogy false
letiltsa a program belépési pontjának automatikus létrehozását egy MSTest, NUnit vagy xUnit tesztprojektben. Ezt a tulajdonságot false
akkor érdemes beállítani, ha manuálisan határoz meg egy belépési pontot, vagy amikor egy olyan végrehajtható projektre hivatkozik, amely szintén belépési ponttal rendelkezik.
További információ: CS8892 hiba.
A VSTest-projekt belépési pontjának létrehozásának szabályozásához használja a tulajdonságot GenerateProgramFile
.
TestingPlatformCaptureOutput
A TestingPlatformCaptureOutput
tulajdonság azt szabályozza, hogy a teszt végrehajtható írásainak összes konzolkimenete rögzítve legyen és elrejtve legyen-e a felhasználó elől a dotnet test
tesztek futtatásakor Microsoft.Testing.Platform
. Alapértelmezés szerint a konzol kimenete rejtett. Ez a kimenet tartalmazza a szalagcímet, a verzióinformációkat és a formázott tesztadatokat. Állítsa be ezt a tulajdonságot úgy, hogy false
az MSBuild kimenettel együtt jelenítse meg ezeket az információkat.
További információ: Teljes platformkimenet megjelenítése.
TestingPlatformCommandLineArguments
A TestingPlatformCaptureOutput
tulajdonság lehetővé teszi parancssori argumentumok megadását a tesztalkalmazáshoz a tesztek futtatásakor dotnet test
Microsoft.Testing.Platform
. Az alábbi projektfájl-kódrészlet egy példát mutat be.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
A TestingPlatformDotnetTestSupport
tulajdonság lehetővé teszi annak megadását, hogy a VSTest használható-e a tesztek futtatásakor dotnet test
. Ha ezt a tulajdonságot true
állítja be, a VSTest le van tiltva, és az összes Microsoft.Testing.Platform
teszt közvetlenül fut.
Ha olyan megoldással rendelkezik, amely VSTest-tesztprojekteket, valamint MSTest-, NUnit- vagy XUnit-projekteket tartalmaz, akkor módonként egy hívást kell kezdeményeznie (vagyis dotnet test
nem futtat teszteket a VSTest és az újabb platformokról egy hívásban).
TestingPlatformShowTestsFailure
A TestingPlatformShowTestsFailure
tulajdonság lehetővé teszi annak ellenőrzését, hogy a rendszer egyetlen hibát vagy egy sikertelen teszt összes hibáját jelenti-e, dotnet test
amikor teszteket futtat. Alapértelmezés szerint a tesztelési hibák egy .log fájlba vannak összegezve, és a tesztprojektenként egyetlen hiba lesz jelentve az MSBuildnek. A sikertelen tesztenkénti hibák megjelenítéséhez állítsa be ezt a tulajdonságot true
a projektfájlba.
TestingExtensionsProfile
Az MSTest project SDK használatakor a TestingExtensionsProfile
tulajdonság lehetővé teszi a használni kívánt profil kiválasztását. Az alábbi táblázat az engedélyezett értékeket mutatja be.
Érték | Leírás |
---|---|
Default |
Engedélyezi az MSTest.SDK ezen verziójához javasolt bővítményeket. |
None |
Nincs engedélyezve bővítmény. |
AllMicrosoft |
Engedélyezze a Microsoft által szállított összes bővítményt (beleértve a korlátozó licenccel rendelkező bővítményeket is). |
További információ: MSTest futóprofil.
UseVSTest
Állítsa be a UseVSTest
tulajdonságot úgy, hogy true
az MSTest-futóról a VSTest-futóra váltson az MSTest projekt SDK használatakor.
Üzemeltetéssel kapcsolatos tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
AppHostDotNetSearch
A AppHostDotNetSearch
tulajdonság konfigurálja, hogy az alkalmazáshoz létrehozott natív végrehajtható fájl hogyan keres egy .NET-telepítést. Ez a tulajdonság csak a közzététel során létrehozott végrehajtható fájlt érinti, nem a buildet.
<PropertyGroup>
<AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>
Az alábbi táblázat az érvényes értékeket sorolja fel. Több értéket is megadhat, pontosvesszővel elválasztva.
Érték | Értelmezés |
---|---|
AppLocal |
Az alkalmazás végrehajtható mappája |
AppRelative |
Az AppHostRelativeDotNet által megadott végrehajtható alkalmazás elérési útja |
EnvironmentVariables |
DOTNET_ROOT[_<arch>] Környezeti változók értéke |
Global |
Regisztrált és alapértelmezett globális telepítési helyek |
Ez a tulajdonság a .NET 9-ben lett bevezetve.
AppHostRelativeDotNet
A AppHostRelativeDotNet
tulajdonság lehetővé teszi egy relatív elérési út megadását a végrehajtható alkalmazás számára, hogy megkeresse a .NET-telepítést, ha erre van konfigurálva. AppHostRelativeDotNet
A tulajdonság beállítása azt jelenti, hogy AppHostDotNetSearch
az .AppRelative
Ez a tulajdonság csak a közzététel során létrehozott végrehajtható fájlt érinti, nem a buildet.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
Ez a tulajdonság a .NET 9-ben lett bevezetve.
EnableComHosting
A EnableComHosting
tulajdonság azt jelzi, hogy egy szerelvény COM-kiszolgálót biztosít. A beállítás true
azt EnableComHosting
is jelenti, hogy az EnableDynamicLoading a true
.
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
További információt a .NET-összetevők COM-nak való megjelenítése című témakörben talál.
EnableDynamicLoading
A EnableDynamicLoading
tulajdonság azt jelzi, hogy egy szerelvény dinamikusan betöltött összetevő. Az összetevő lehet com-kódtár vagy nem COM-kódtár, amely natív gazdagépről használható, vagy beépülő modulként használható. A tulajdonság true
beállítása a következő effektusokkal jár:
- Létre kell hozni egy .runtimeconfig.json fájlt.
- A RollForward értéke .
LatestMinor
- A NuGet-hivatkozások helyileg lesznek másolva.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Létrehozott fájltulajdonságok
A következő tulajdonságok a létrehozott fájlok kódját érintik:
DisableImplicitNamespaceImports
A DisableImplicitNamespaceImports
tulajdonság segítségével letilthatja az implicit névtérimportálást a .NET 6 vagy újabb verziót célzó Visual Basic-projektekben. Az implicit névterek az alapértelmezett névterek, amelyek globálisan importálva vannak egy Visual Basic-projektben. Állítsa be ezt a tulajdonságot úgy, hogy letiltsa az true
implicit névtérimportálást.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
Implicitusings
A ImplicitUsings
tulajdonság használatával engedélyezheti és letilthatja az implicit global using
irányelveket a .NET 6 vagy újabb verziót és A C# 10 vagy újabb verziót célzó C#-projektekben. Ha a funkció engedélyezve van, a .NET SDK irányelveket global using
ad hozzá az alapértelmezett névterek halmazához a projekt SDK típusától függően. Állítsa be ezt a tulajdonságot implicit global using
irányelvekretrue
, vagy enable
engedélyezze azt. Az implicit global using
direktívák letiltásához távolítsa el a tulajdonságot, vagy állítsa be a következőre false
: vagy disable
.
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Feljegyzés
A .NET 6 vagy újabb verziót megcélzott új C#-projektek sablonjai alapértelmezés szerint be vannak ImplicitUsings
állítva enable
.
Explicit global using
direktíva definiálásához adjon hozzá egy Használat elemet.
Elemek
Az MSBuild elemek bemenetek a buildelési rendszerbe. Az elemek a típusuknak megfelelően vannak megadva, ami az elem neve. Például Compile
Reference
két gyakori elemtípus. A .NET SDK a következő további elemtípusokat teszi elérhetővé:
A standard elemattribútumok bármelyikét használhatja például ezeken Update
Include
az elemeken. Új Include
elem hozzáadására és meglévő elem módosítására használható Update
. Például gyakran használják olyan elemek módosítására, Update
amelyeket implicit módon adott hozzá a .NET SDK.
AssemblyMetadata
Az AssemblyMetadata
elem egy kulcs-érték pár AssemblyMetadataAttribute szerelvény attribútumát adja meg. A Include
metaadatok lesznek a kulcs, a Value
metaadatok pedig az érték.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
Az InternalsVisibleTo
elem létrehoz egy InternalsVisibleToAttribute szerelvényattribútumot a megadott barátszerelvényhez.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Ha az ismerős szerelvény aláírt, megadhat egy választható Key
metaadatokat a teljes nyilvános kulcs megadásához. Ha nem ad meg Key
metaadatokat, és $(PublicKey)
egy elérhető, akkor a rendszer ezt a kulcsot használja. Ellenkező esetben a rendszer nem ad hozzá nyilvános kulcsot az attribútumhoz.
FrameworkReference
Az FrameworkReference
elem egy .NET-alapú megosztott keretrendszerre mutató hivatkozást határoz meg.
Az Include
attribútum megadja a keretrendszer azonosítóját.
A projektfájl kódrészlete az alábbi példában a Microsoft.AspNetCore.App megosztott keretrendszerre hivatkozik.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
PackageReference
Az PackageReference
elem egy NuGet-csomagra mutató hivatkozást határoz meg.
Az Include
attribútum a csomagazonosítót adja meg. Az Version
attribútum megadja a verzió vagy a verziótartományt. A minimális verzió, a maximális verzió, a tartomány vagy a pontos egyezés megadásáról további információt a Verziótartományok című témakörben talál.
Az alábbi példában szereplő projektfájl-kódrészlet a System.Runtime csomagra hivatkozik.
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
A függőségi eszközök olyan metaadatokkal is vezérelhetők, mint a PrivateAssets
.
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
További információ: Csomaghivatkozások a projektfájlokban.
TrimmerRootAssembly
Az TrimmerRootAssembly
elem lehetővé teszi, hogy kizárja a szerelvényt a vágásból. A vágás a futtatókörnyezet nem használt részeinek egy csomagolt alkalmazásból való eltávolításának folyamata. Egyes esetekben előfordulhat, hogy a vágás helytelenül távolítja el a szükséges hivatkozásokat.
Az alábbi XML kizárja a szerelvényt a System.Security
vágásból.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
További információ: Vágási beállítások.
Használat
Az Using
elem lehetővé teszi, hogy globálisan belefoglaljon egy névteret a C#-projektbe, így nem kell irányelveket using
hozzáadnia a névtérhez a forrásfájlok tetején. Ez az elem hasonló ahhoz az Import
elemhez, amely ugyanahhoz a célra használható a Visual Basic-projektekben. Ez a tulajdonság a .NET 6-tól érhető el.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Az elem használatával Using
globális using <alias>
és using static <type>
direktívák is definiálhatók.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Példa:
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />
Bocsát kiglobal using Results = global::Microsoft.AspNetCore.Http.Results;
<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />
Bocsát kiglobal using static global::Microsoft.AspNetCore.Http.Results;
További információ: aliasolt using
irányelvek és using static <type>
irányelvek.
Elem metaadatai
A standard MSBuild elemattribútumok mellett a .NET SDK a következő elem metaadatcímkéket is elérhetővé teszi:
CopyToPublishDirectory
Az CopyToPublishDirectory
MSBuild elem metaadatai a közzétételi könyvtárba másolt elemet vezérli. Az engedélyezett értékek olyan értékek, amelyek csak akkor másolják PreserveNewest
át az elemet, ha módosult, Always
amely mindig átmásolja az elemet, és Never
amely soha nem másolja az elemet. Teljesítmény szempontjából előnyösebb, PreserveNewest
mert növekményes buildelést tesz lehetővé.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
LinkBase
A projektkönyvtáron és annak alkönyvtárán kívül eső elemek esetén a közzétételi cél az elem Hivatkozás metaadataival határozza meg, hogy hová másolja az elemet. Link
azt is meghatározza, hogy a projektfán kívüli elemek hogyan jelenjenek meg a Visual Studio Megoldáskezelő ablakában.
Ha Link
nincs megadva a projektkontúlon kívül eső elemhez, az alapértelmezés szerint a következő lesz %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension)
. LinkBase
lehetővé teszi a projektkontúlon kívüli elemek ésszerű alapmappájának megadását. Az alapmappa alatti mappahierarchia megmarad a következőn keresztül RecursiveDir
: . Ha LinkBase
nincs megadva, az az elérési útból Link
hiányzik.
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
Az alábbi képen látható, hogyan jelenik meg a Megoldáskezelő az előző elemen Include
keresztül belefoglalt fájl.