J'ai besoin de mettre à jour une nouvelle application .NET et je pense qu'il a été mentionné que c'était .NET Core. Comment puis-je examiner les propriétés de la solution pour déterminer s’il s’agit bien d’une application "principale"?
Le projet Web a une référence System.Core mais j'ai googlé cela et il semble que System.Core.dll fait partie du framework .NET depuis au moins .NET f/w 3.5.
L'application a un fichier package.json, mais l'existence de ce fichier dans un sln ne garantit pas nécessairement que l'application est une application de base .NET. J'ai également lu qu'une application de base .NET peut fonctionner sur différentes versions du framework .NET.
Alors, comment puis-je déterminer si une application .NET est en effet une application "Core"? En d'autres termes, qu'est-ce qui fait d'une application Core une application Core?
Dans les projets VS2017 .NET Core, utilisez à nouveau la structure .csproj.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreappx.y</TargetFramework>
</PropertyGroup>
ou
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandardx.y</TargetFramework>
</PropertyGroup>
Il y a quelques indicateurs.
L'existence project.json
suggère qu'il s'agit de l'un des nouveaux formulaires de projet (sachez que project.json
disparaîtra avec .NET Core/.NET Core Tools for VS avec la version 1.1).
A l'intérieur, vous aurez une section frameworks, comme
"frameworks": {
"net45": {
"frameworkAssemblies": {
"System.Runtime.Serialization": "4.0.0.0"
}
},
"netstandard1.0": {
"imports": [ "dnxcore50", "portable-net45+win8" ],
"dependencies": {
}
},
"netstandard1.3": {
"imports": [ "dnxcore50", "portable-net45+win8" ],
"dependencies": {
"System.Runtime.Serialization.Formatters": "4.0.0-rc3-24212-01"
}
}
}
Dans le cas d'applications (ASP.NET Core Web Project ou nouvelles applications console basées sur project.json), netstandard1.x
sera nommé netcoreapp1.0
.
S'il existe plusieurs entrées, l'application ou la bibliothèque cible plusieurs plates-formes (et créera plusieurs fichiers binaires dans des dossiers séparés).
Mise à jour
Bien sûr, j'ai oublié un autre indicateur. L'application .NET Core fait référence Microsoft.NETCore.App
(soit comme "type": "platform"
pour les applications portables ou sans pour les applications autonomes). netstandard1.x
(bibliothèques de classes) font référence NETStandard.Library
.
Les applications .NET Core sont basées sur System.Runtime
qui fait partie de .NET Framework 4.5 et plus récent et utilisé pour les applications Windows (et Windows Phone) 8.0/8.1/10, donc portable-net45+win81
les packages sont également compatibles avec .NET Core.
Cela étant dit, ASP.NET Core est une pile Web qui peut s'exécuter à la fois sur .NET Framework complet (4.5 ou supérieur) et sur .NET Core. Donc, le simple fait d'avoir une application ASP.NET Core ne dit pas grand-chose sur la plate-forme qu'elle vise.
Il est assez facile de déterminer l'application Asp.net Core.
Il y a quelques identifiants. Il y a peu de fichiers dans un projet qui aident à déterminer le projet principal
Des fichiers comme
À l'intérieur de project.json, il comprend
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
Ici, par dependencies
, on peut déterminer le type de projet. L'application Core Core fait référence à Microsoft.NETCore.App (soit comme "type": "plate-forme" pour les applications portables ou sans pour les applications autonomes) .
Les applications Asp.net Core sont indépendantes de la plate-forme, donc une application ASP.NET Core n'exprime pas beaucoup sur la plate-forme.