Question VS 2015. Définition du cadre cible correct pour le projet Web ASP.NET 5


J'ai créé un nouveau projet ASP.NET 5 MVC dans Visual Studio 2015. Sur l'assistant de création de projet, j'ai choisi d'afficher les modèles pour .NET Framework 4.6, puis sur l'écran suivant, "Application Web" d'ASP.NET 5 Preview. Modèles

Cependant, après la création, il apparaît que le projet n'a répertorié que "dnx451" et "dnxcore50" dans la section "frameworks" de project.json:

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

J'ai essayé de changer "dnx451" en "dnx46". Le projet a bien été construit mais lorsque j'ai essayé de l'exécuter, j'ai reçu le message d'erreur suivant:

Le framework cible d'exécution actuel n'est pas compatible avec '...'.

Cadre cible d'exécution actuel: 'DNX, Version = v4.5.1 (dnx451)' Type:   Architecture CLR: x86 Version: 1.0.0-beta5

Comment est-il possible de changer ce "framework cible" pour le projet ASP.NET 5?

Voici mon global.json maintenant:

{
  "projects": [
    "src",
    "test",
    "wrap"
  ],
  "sdk": {
    "version": "1.0.0-beta5",
    "runtime": "clr",
    "architecture": "x86"
  }
}

mais peu importe ce qui y est inscrit. J'ai déjà essayé différentes versions de 1.0.0-beta5 et la dernière version 1.0.0-beta6


36
2017-07-28 09:05


origine


Réponses:


Le problème est que DNX est conscient que votre projet cible dnx46 mais IIS n'est pas :). Ainsi, IIS démarre en tant que .NET 4.5.1 (par défaut) et tente de charger votre projet qui n'est pas compatible avec 4.5.1.

Dans une future version de VS Tooling, nous allons faire un meilleur travail de détection mais jusque-là, les applications Web qui veulent cibler les versions .NET sont un peu difficiles. au dessus 4.5.1. Pour l'instant, je suggère d'utiliser simplement dnx451 Jusque là (si vous ne dépendez pas de la fonctionnalité .NET 4.5.2 / 4.6), je vous fournirai ci-dessous quelques instructions sur la manière de faire fonctionner ce logiciel si vous devez utiliser la version 4.5.2 ou supérieure.

Remarque: dnx452 et dnx46 sont pleinement pris en charge dans les applications de console et lors de l'utilisation de serveurs autres qu'IIS (tels que Kestrel ou WebListener). Fondamentalement, tout ce que vous pouvez lancer en utilisant le natif dnx.exe bootstrapper fonctionne avec dnx451 et dnx46 mais les autres environnements d'hébergement (IIS, IIS Express) ont besoin d'indications supplémentaires pour lancer la structure appropriée.

Pour que cela fonctionne aujourd'hui, vous devez définir une variable d'environnement DNX_IIS_RUNTIME_FRAMEWORK au framework cible que vous souhaitez utiliser. Vous pouvez le faire dans la page Propriétés du projet pour l'application Web, sous l'onglet Débogage. Choisissez simplement le profil IIS Express et ajoutez la variable d'environnement ci-dessous:

Launch Profile

Nous allons obtenir cela ajouté à la Problèmes connus, comme on dirait que nous l'avons manqué, et comme je l'ai dit plus haut, nous allons améliorer l'expérience par défaut dans VS, ce n'est donc pas nécessaire :).


54
2017-07-28 21:34



"DNX_IIS_RUNTIME_FRAMEWORK" : "DNX46"

La valeur est sensible à la casse


2
2017-08-28 16:50