150 votes

Impossible de trouver une cible d'exécution pour le framework .NETCoreApp=v1 compatible avec l'une des cibles d'exécution.

J'essaie de migrer un projet Asp.Net Core RC1 vers RC2 et j'ai suivi la procédure suivante la documentation et ont également suivi la instructions pour la migration de DNX vers .NET CLI.

J'obtiens l'erreur suivante lorsque j'essaie dotnet run :

Impossible de trouver la cible d'exécution pour le framework '.NETCoreAPP, Version=v1.0'. compatible avec l'une des cibles d'exécution : 'win10-x64, win81-x64, win8-x64, win7-x64'. Causes possibles :

  1. Le projet n'a pas été restauré ou la restauration a échoué - exécuter 'dotnet restore'
  2. Le projet ne mentionne pas 'win10-x64, win81-x64, win7-x64' dans les 'runtimes'.

J'ai couru dotnet restore et il semble qu'il se soit terminé avec succès.

J'ai mis à jour tous les paquets pertinents vers RC2.

290voto

Angavar Points 378

J'aurais dû faire exactement ce que disait le message d'erreur. Lors de la migration à partir de la RC1, je n'ai pas réalisé que je devais spécifier un runtimes dans mon project.json fichier.

Dans mon project.json J'ai ajouté la section suivante :

"runtimes": {
    "win10-x64": { }
  }

Et j'étais prêt à partir.


Mise à jour du 27 février 2017

Les nouveaux modèles de projet dans Visual Studio 2017 RC ne requièrent plus la spécification des temps d'exécution (en project.json ou .csproj ) à l'avance si vous choisissez de déployer votre application en tant qu'application de type Framework Dependent Deployment (FDD).

Si, toutefois, vous choisissez de déployer votre application à l'aide de la fonction Self-contained Deployment (SCD), vous devrez alors spécifier toutes les durées d'exécution sur lesquelles vous souhaitez que votre application s'exécute à l'avance dans votre .csproj fichier.

Vous trouverez ci-dessous un exemple de .csproj pour une application qui utilise la méthode de déploiement SCD :

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.0</TargetFramework>
    <VersionPrefix>1.0.0</VersionPrefix>
    <DebugType>Portable</DebugType>
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
  </ItemGroup>
</Project>

Voir ce lien pour plus d'informations, qui comprend une description détaillée des deux types d'options de déploiement, ainsi que de leurs avantages et inconvénients.

42 votes

J'ai créé un nouveau projet dans VS 2015 Update 3. Et il manquait toujours cette section.

7 votes

Je pense qu'il n'est pas toujours nécessaire d'ajouter ce paramètre. La documentation dit : "Si vous êtes une bibliothèque de classes portable qui peut fonctionner sur n'importe quel runtime, vous n'avez pas besoin de spécifier un runtime." - C'est vrai pour la plupart de mes projets, mais cette erreur est apparue lorsque j'ai ajouté un projet Entity Framework Core à ma solution. Je pense que EF Core - au moins dans son état RC2 - a une limitation sur les plates-formes sur lesquelles il peut fonctionner, donc, les projets qui le référencent, pourraient avoir besoin de se conformer à ces paramètres. Mais je ne fais que supposer. La documentation est vraiment confuse à ce stade.

0 votes

Je suis d'accord, la documentation sur cette question en particulier reste rare. J'ai le sentiment que vous avez raison en ce qui concerne Entity Framework Core.

76voto

Mike_G Points 4519

J'ai reçu cette erreur après avoir mis à jour le modèle de base de VS2015 vers la version 1.0.1. C'est parce que j'ai une PCL qui cible les netstandard 1.4 si vous ne voulez pas avoir à le spécifier à chaque exécution, modifiez simplement le marquage de la dépendance pour Microsoft.NETCore.App à cela :

"Microsoft.NETCore.App": {
 "type": "platform",
 "version": "1.0.1"
}

1 votes

Le balisage ci-dessus a corrigé mon erreur de compilation, mais IIS Express n'a pas démarré après cela. Le changement de "version" : "1.0.1" en "version" : "1.0.0" a résolu le problème de IIS.

0 votes

@Ross mettre à jour la section tools dans project.json pour correspondre à la version NETCore.App

0 votes

Dans ce cas, "tools" : {"Microsoft.AspNetCore.Server.IISIntegration.Tools" : "1.0.0-preview2-final" },

35voto

juFo Points 3779

Dans project.json j'ai changé ceci (ajouté le type) :

//"Microsoft.NETCore.App": "1.1.0",
"Microsoft.NETCore.App": { "version": "1.1.0", "type": "platform" },

Maintenant, je peux construire à nouveau :-)

mettre à jour : Je peux maintenant reconstruire le site, mais je ne peux pas le faire fonctionner.

Vous devez vous assurer que vous avez le runtime et le sdk également :

*) Les outils Visual Studio incluent .NET Core 1.0.1. Pour ajouter la prise en charge de .NET Core 1.1, vous devez également installer le moteur d'exécution .NET Core 1.1.

https://www.microsoft.com/net/download/core#/current

1 votes

Il semble que vous ne puissiez pas exécuter le site web parce que vous devez installer .NET Core 1.1 SDK

0 votes

Et parfois la réinstallation du Runtime est aussi nécessaire, je l'ai découvert.

0 votes

Cela m'a aidé. Merci de m'avoir aidé. En commentant "Microsoft.NETCore.App" directement à partir des dépendances dans le project.json et en le changeant pour qu'il soit sous "frameworks" : { "netcoreapp1.1" : { "dependencies" : { "Microsoft.NETCore.App" : {"version" : "1.1.0", "type" : "platform" } } } },

20voto

NathanAldenSr Points 2774

J'ai reçu cette erreur parce que j'ai utilisé le gestionnaire de paquets NuGet incroyablement cassé dans Visual Studio 2015 pour mettre à jour mes dépendances project.json. Cela a donné ceci :

"frameworks": {
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.1"
      } 
    }
  }
}

dans ce domaine :

"dependencies": {
  "Microsoft.NETCore.App": "1.1.0"
},
"frameworks": {
  "netcoreapp1.0": {}
}

Bye bye, définition de la plate-forme !

15voto

BigTFromAZ Points 341

Si vous lisez ces deux liens :

Premièrement, https://learn.microsoft.com/en-us/dotnet/articles/core/tutorials/using-with-xplat-cli

et

deuxièmement, https://learn.microsoft.com/en-us/dotnet/articles/core/rid-catalog

Vous verrez que vous pouvez construire une version complètement portable en utilisant l'extrait suivant dans l'élément dependencies Root du fichier project.json. Il n'est pas nécessaire de spécifier les runtimes car il s'agit d'un runtime de niveau CORE qui devrait être agnostique à la plateforme, ou connu sous le nom de "Framework dependent" (dépendant du cadre)

"Microsoft.NETCore.App": {
    "type": "platform",
    "version": "1.0.1"
}

ou vous pouvez créer des applications pour plusieurs plateformes ciblées ("applications autonomes") en supprimant l'élément type : plateforme comme suit :

Ajoutez ceci à l'élément Root dependencies dans le fichier project.json

"Microsoft.NETCore.App": {
    "version": "1.0.1"
}

et ajoutez ceci en tant que nouvel élément de niveau racine

"runtimes": {
    "win10-x64": {},  /* one or more RIDs */
    "osx.10.10-x64": {}
  },

Multiple targeted requiert que vous fournissiez des noms de plateforme connus sous le nom de ".NET Core Runtime IDentifiers (RID)". Une liste de ces noms peut être trouvée sur le second lien ci-dessus. Elle comprend de nombreuses versions de Windows, Linux et OS X.

Pour une bonne vue d'ensemble des différentes options de déploiement, vous pouvez également consulter cette page :

https://learn.microsoft.com/en-us/dotnet/articles/core/deploying/index

Extrait du lien ci-dessus :

Vous pouvez créer deux types de déploiements pour les applications .NET Core :

Déploiement en fonction du cadre

Comme son nom l'indique, le déploiement dépendant du cadre (FDD) repose sur la présence d'une version partagée de .NET Core sur le système cible. Comme .NET Core est déjà présent, votre application est également portable entre les installations de .NET Core. Votre application ne contient que son propre code et toutes les dépendances tierces qui ne font pas partie des bibliothèques .NET Core. Les FDD contiennent des fichiers .dll qui peuvent être lancés en utilisant l'utilitaire dotnet à partir de la ligne de commande. Par exemple, dotnet app.dll exécute une application nommée app.

Déploiement autonome

Contrairement au FDD, un déploiement autonome (SCD) ne dépend pas de la présence de composants partagés sur le système cible. Tous les composants, y compris les bibliothèques .NET Core et le moteur d'exécution .NET Core, sont inclus dans l'application et sont isolés des autres applications .NET Core. Les SCD comprennent un exécutable (tel que app.exe sur les plateformes Windows pour une application nommée app), qui est une version renommée de l'hôte .NET Core spécifique à la plateforme, et un fichier .dll (tel que app.dll), qui est l'application proprement dite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X