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.TaskPackageReference
is hozzá kell adnia egy 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>
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 azGenerateAssemblyInfo
, a true
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>
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>
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 beállításával megtarthatja true
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 internal
is ellenőrizni kell-epublic
.
<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>(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ódotEnableStrictModeForBaselineValidation
a 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 false
értéktrue
. 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ő 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étretrue
. 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 célfájlt, például a 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.CompileLibraries a DependencyContext.CompilationOptions 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-ttrue
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 PublishSelfContained
ajánlott használniSelfContained
.
<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, és így tovább egészen visszanet5.0
..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
, 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
, 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 ManifestResourceName
meg van adva a , DependentUpon
vagy EmbeddedResource
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 DependentUpon
meg van adva a nem vagy EmbeddedResource
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 GenerateRequiresPreviewFeaturesAttribute
úgy állítja be, hogy az False
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 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 .NET 8-ról .NET 9-re 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
8
: .
<PropertyGroup>
<AnalysisLevel>8</AnalysisLevel>
</PropertyGroup>
Igény szerint 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 preview
kódelemzők verzióját használja, és engedélyezi a recommended
szabályok készletét.
<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. |
9.0 |
A .NET 9 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
9.0-<mode> |
A .NET 9 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. |
9 |
A .NET 9 kiadáshoz elérhető szabályok halmaza akkor is használható, ha újabb szabályok érhetők el. |
9-<mode> |
A .NET 9 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.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. |
Feljegyzés
- Ha a EnforceCodeStyleInBuild értéket állítja be
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é tudni, hogy ez mely szabályokat tartalmazza, tekintse meg a %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig fájlt. (.NET 7 és korábbi verziók esetén a fájlkiterjesztés .editorconfig.) |
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, vizsgálja meg a %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig fájlt. (.NET 7 és korábbi verziók esetén a fájlkiterjesztés .editorconfig.) |
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 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
- Ha a EnforceCodeStyleInBuild értéket állítja be
true
- Ha például összetett értéket használ az AnalysisLevelhez,
<AnalysisLevel>9-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 EnableNETAnalyzers
célják, a true
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 EnforceCodeStyleInBuild
beállításával true
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 AssetTargetFallback
állíthatja be.
<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>
SDK-val kapcsolatos tulajdonságok
Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:
SdkAnalysisLevel
A .NET 9-ben SdkAnalysisLevel
bevezetett tulajdonság a szigorú SDK-eszközök konfigurálására használható. Segít az SDK figyelmeztetési szintjeinek kezelésében olyan helyzetekben, amikor előfordulhat, hogy nem tudja rögzíteni az SDK-kat global.json vagy más módon. Ezzel a tulajdonsággal úgy jelezheti egy újabb SDK-nak, hogy úgy viselkedjen, mintha egy régebbi SDK lenne egy adott eszköz vagy funkció tekintetében, anélkül, hogy telepítenie kellene a régebbi SDK-t.
A tulajdonság megengedett értékei az SDK-funkciósávok, például a 8.0.100 és a 8.0.400. Az érték alapértelmezés szerint a futó SDK SDK-funkciósávja. Az SDK 9.0.102 esetében például az érték 9.0.100. (A .NET SDK verziószámával kapcsolatos információkért lásd: A .NET verziója.)
<PropertyGroup>
<SdkAnalysisLevel>8.0.400</SdkAnalysisLevel>
</PropertyGroup>
További információ: SDK Analysis Level Property and Usage.
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
- MSTestAnalysisMode
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 IsTestingPlatformApplication
hivatkozik, a következőt állítja be true
(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.
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 using
Aspire
szükséges összes függőséget és alapértelmezett MSTest
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 using
Playwright
szükséges összes függőséget és alapértelmezett MSTest
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
A GenerateTestingPlatformEntryPoint
tulajdonság false
beállítása letiltja a program belépési pontjának automatikus létrehozását egy MSTest- vagy NUnit-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ó: Microsoft.Testing.Platform profil.
UseVSTest
Állítsa a UseVSTest
tulajdonságot úgy, hogy true
váltson a Microsoft.Testing.Platformról a VSTest futóra az MSTest projekt SDKhasználatakor.
MSTestAnalysisMode
Ez a tulajdonság dönti el, hogy mely elemzők legyenek engedélyezve, melyik súlyosságnál. További információ: MSTest-kódelemzési.
Ü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 EnableComHosting
azt true
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 true
irányelvekreenable
, vagy global using
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 Include
Update
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 alábbi táblázat az engedélyezett értékeket mutatja be.
Érték | Leírás |
---|---|
PreserveNewest |
Csak akkor másolja át az elemet, ha módosult a forráshelyen. |
IfDifferent |
Csak akkor másolja át az elemet, ha a forrásban vagy a célhelyen módosult. Ez a beállítás olyan helyzetekben hasznos, amikor vissza kell állítania a közzététel után bekövetkező módosításokat. |
Always |
Mindig másolja az elemet. |
Never |
Soha ne másolja át az elemet. |
Teljesítmény szempontjából előnyösebb, PreserveNewest
mert növekményes buildelést tesz lehetővé. Kerülje a Always
használatát, és használja helyette a IfDifferent
, így az I/O-írások hatástalanok lesznek.
<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.