web-dev-qa-db-fra.com

comment déterminer si une application .net est une application "de base"?

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?

26
user7066345

Mis à jour pour .NET Core> = 2.x et/ou VS2017

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>

Ancienne réponse pour .NET Core 1.x et VS2015

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.

9
Tseng

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

  • project.json
  • appsetting.json
  • startup.cs

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

1
Jani Devang