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:

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.xprojektekre vonatkozik: . Ez nem vonatkozik a használt netstandard2.xprojektekre.

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.Libraryhaszná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 PackageIda , 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ót DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONStrue (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

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

Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:

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.0bin\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-x64pé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.0mó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 NuGet-csomag függőségei a kimeneti könyvtárba lesznek másolva. Ez azt jelenti, hogy bármelyik gépen futtathatja a beépülő modul kimenetét dotnet build .

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

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 Exetulajdonsá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:

<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, truea 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, truea 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 publishRelease 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éke true . 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ót DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONStrue (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ó projekt PublishRelease é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ékekkel PublishRelease, 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-containeddotnet 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 PublishSelfContainedSelfContained.

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

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

Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:

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.0hogy 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 LogicalNameegy elemhez EmbeddedResource meg van adva a , ManifestResourceNamevagy 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 truevan állítva: . Ha a falseLogicalNameManifestResourceNameprojektfá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, TreatWarningsAsErrorstrue de továbbra is implicit módon aktivált buildeket szeretne optimalizálni, beállíthatja a következőt OptimizeImplicitlyTriggeredBuildTrue: . 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:

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

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

<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 AnalysisLevelad meg, nem kell AnalysisMode értéket megadnia. Azonban ha mégis, AnalysisLevel elsőbbséget AnalysisModeé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 AllAnalysisModeAnalysisLevellatest-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éget AnalysisModeé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 truecé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 truebeá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 _SkipUpgradeNetAnalyzersNuGetWarningtrue 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

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>

Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:

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 trueProjectReference 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 truetulajdonsá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).

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

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

Ebben a szakaszban a következő MSBuild tulajdonságokat dokumentáljuk:

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 CompileReference 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 UpdateInclude 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 ki global using Results = global::Microsoft.AspNetCore.Http.Results;
  • <Using Include="Microsoft.AspNetCore.Http.Results" Static="True" /> Bocsát ki global 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, Alwaysamely mindig átmásolja az elemet, és Neveramely 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>

Kapcsolatleíró

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

Solution Explorer showing item with LinkBase metadata.

Lásd még