MSBuild kompatibilitástörő változások a .NET Core 2.1- 3.1-ben
A következő kompatibilitástörő változások dokumentálva vannak ezen a lapon:
Kompatibilitástörő változás | Bevezetett verzió |
---|---|
A tervezési idejű buildek csak legfelső szintű csomaghivatkozásokat adnak vissza | 3.1 |
Erőforrás-jegyzékfájl nevének módosítása | 3,0 |
Az SDK-ban már megtalálható projekteszközök | 2.1 |
.NET Core 3.1
A tervezési idejű buildek csak legfelső szintű csomaghivatkozásokat adnak vissza
A .NET Core SDK 3.1.400-tól kezdve a cél csak legfelső szintű csomaghivatkozásokat ad RunResolvePackageDependencies
vissza.
Bevezetett verzió
.NET Core SDK 3.1.400
Módosítás leírása
A .NET Core SDK korábbi verzióiban a cél a RunResolvePackageDependencies
következő MSBuild elemeket hozta létre, amelyek információkat tartalmaztak a NuGet-objektumok fájljából:
PackageDefinitions
PackageDependencies
TargetDefinitions
FileDefinitions
FileDependencies
Ezeket az adatokat a Visual Studio használja a Függőségek csomópont feltöltéséhez Megoldáskezelő. Ez azonban nagy mennyiségű adat lehet, és az adatokra nincs szükség, kivéve, ha a Függőségek csomópont ki van bontva.
A .NET Core SDK 3.1.400-es verziójától kezdve a legtöbb elem alapértelmezés szerint nem jön létre. A rendszer csak a típuselemeket Package
adja vissza. Ha a Visual Studiónak szüksége van az elemekre a Függőségek csomópont feltöltéséhez, az adatokat közvetlenül az eszközfájlból olvassa be.
A változás oka
Ezt a módosítást a Visual Studióban a megoldásbetöltési teljesítmény javítása érdekében vezettük be. Korábban az összes csomaghivatkozás betöltődött, ami sok olyan hivatkozást tartalmazott, amelyeket a felhasználók többsége soha nem látna.
Javasolt művelet
Ha olyan MSBuild logikával rendelkezik, amely ezektől az elemektől függ, állítsa be a tulajdonságot true
a EmitLegacyAssetsFileItems
projektfájlba. Ez a beállítás lehetővé teszi az összes elem létrehozásának korábbi viselkedését.
Kategória
Msbuild
Érintett API-k
n/a
.NET Core 3.0
Erőforrás-jegyzékfájl nevének módosítása
A .NET Core 3.0-tól kezdve az alapértelmezett esetben az MSBuild egy másik jegyzékfájlnevet hoz létre az erőforrásfájlokhoz.
Bevezetett verzió
3,0
Módosítás leírása
A .NET Core 3.0 előtt, ha nem LogicalName
, ManifestResourceName
vagy DependentUpon
metaadatokat adott meg a projektfájl egyik EmbeddedResource
eleméhez, az MSBuild létrehozott egy jegyzékfájlnevet a mintában <RootNamespace>.<ResourceFilePathFromProjectRoot>.resources
. Ha RootNamespace
nincs definiálva a projektfájlban, akkor alapértelmezés szerint a projekt neve lesz. Például egy Űrlap1.resx nevű erőforrásfájl létrehozott jegyzékneve a gyökérprojekt könyvtárában a MyProject.Form1.resources volt.
A .NET Core 3.0-tól kezdődően, ha egy erőforrásfájl azonos nevű forrásfájllal van együtt helyezve (például Form1.resx és Form1.cs), az MSBuild a forrásfájl típusadatait használja a jegyzékfájl nevének a mintában <Namespace>.<ClassName>.resources
való létrehozásához. A rendszer kinyeri a névteret és az osztálynevet a megosztott forrásfájl első típusából. Például egy Form1.resx nevű erőforrásfájl létrehozott jegyzékneve, amely egy Form1.cs nevű forrásfájllal van együtt helyezve, a MyNamespace.Form1.resources. Fontos megjegyezni, hogy a fájlnév első része eltér a .NET Core korábbi verzióitól (MyProject helyett MyNamespace).
Feljegyzés
Ha a projektfájl egyik EmbeddedResource
elemén meg van LogicalName
adva , ManifestResourceName
vagy DependentUpon
metaadatok vannak megadva, akkor ez a módosítás nem érinti ezt az erőforrásfájlt.
Ez a kompatibilitástörő változás a tulajdonság .NET Core-projektekhez való EmbeddedResourceUseDependentUponConvention
hozzáadásával lett bevezetve. Alapértelmezés szerint az erőforrásfájlok nincsenek explicit módon felsorolva egy .NET Core-projektfájlban, így nem DependentUpon
rendelkeznek metaadatokkal a létrehozott .resources fájl elnevezéséhez. Ha EmbeddedResourceUseDependentUponConvention
az alapértelmezett értékre true
van állítva, az MSBuild egy megosztott forrásfájlt keres, és kinyer egy névteret és egy osztálynevet a fájlból. Ha be false
van állítvaEmbeddedResourceUseDependentUponConvention
, az MSBuild az előző viselkedésnek megfelelően hozza létre a jegyzéknevet, amely egyesíti RootNamespace
és a relatív fájl elérési útját.
Javasolt művelet
A legtöbb esetben nincs szükség műveletre a fejlesztő részéről, és az alkalmazásnak továbbra is működnie kell. Ha azonban ez a módosítás megszakítja az alkalmazást, a következőkre van lehetőség:
Módosítsa a kódot az új jegyzéknévre való várakozáshoz.
A projektfájlban való beállítással
EmbeddedResourceUseDependentUponConvention
false
tiltsa le az új elnevezési konvenciót.<PropertyGroup> <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention> </PropertyGroup>
Kategória
Msbuild
Érintett API-k
n/a
.NET Core 2.1
Az SDK-ban már megtalálható projekteszközök
A .NET Core 2.1 SDK már magában foglalja a parancssori felület általános eszközkészletét, és már nem kell a projektből hivatkoznia ezekre az eszközökre.
Módosítás leírása
A .NET Core 2.0-ban a projektek külső .NET-eszközökre hivatkoznak a <DotNetCliToolReference>
projektbeállítással. A .NET Core 2.1-ben ezen eszközök némelyike megtalálható a .NET Core SDK-ban, és a beállításra már nincs szükség. Ha ezekre az eszközökre hivatkozik a projektben, a következőhöz hasonló hibaüzenet jelenik meg: A .NET Core SDK tartalmazza a "Microsoft.EntityFrameworkCore.Tools.DotNet" eszközt.
A .NET Core 2.1 SDK-ban mostantól elérhető eszközök:
<DotNetCliToolReference> érték | Eszköz |
---|---|
Microsoft.DotNet.Watcher.Tools |
dotnet-watch |
Microsoft.Extensions.SecretManager.Tools |
dotnet-user-secrets |
Microsoft.Extensions.Caching.SqlConfig.Tools |
dotnet-sql-cache |
Microsoft.EntityFrameworkCore.Tools.DotNet |
dotnet-ef |
Bevezetett verzió
.NET Core SDK 2.1.300
Javasolt művelet
Távolítsa el a beállítást a <DotNetCliToolReference>
projektből.
Kategória
Msbuild
Érintett API-k
n/a
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: