web-dev-qa-db-fra.com

npm ne peut pas trouver la version du SDK de global.json

Je suis sur le point d'essayer de me familiariser avec asp.net core/npm/react en utilisant ceci comme modèle de projet de base:

https://github.com/jonmcquade/aspnetcore-react-redux#local-no-docker

À l’origine, j’ai rencontré des problèmes lors de l’essai de cette commande:

dotnet build -c Release -o ./app

L'erreur que je voyais:

Une version de SDK compatible pour la version de global.json: [2.1.0] à partir de [Global.json] n'a pas été trouvée Voulez-vous exécuter les commandes du kit de développement dotnet? Veuillez installer le kit de développement dotnet à partir de:
http://go.Microsoft.com/fwlink/?LinkID=798306&clcid=0x409

J'avais les versions spécifiques dans la documentation installées et j'ai installé les dernières versions, les plates-formes x64 et x86.

 enter image description here

Je reçois maintenant aussi cette erreur en exécutant la commande npm install ou la commande dotnet --version, mais des SDK sont installés.

On a l'impression que la configuration de la machine est en quelque sorte brisée. Il semble que je sois entré un peu dans le vif du sujet en essayant de faire fonctionner la commande dotnet build et que même NPM ne fonctionne plus.

Global.json c'est:

{
    "sdk": { "version": "2.1.0" }
}

Et le fichier .csproj contient:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.0-preview1-26216-03</RuntimeFrameworkVersion>
    <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
    <IsPackable>false</IsPackable>
    <AssemblyName>FlightSearch</AssemblyName>
    <RootNamespace>FlightSearch</RootNamespace>
    <ApplicationIcon>ClientApp\favicon.ico</ApplicationIcon>
    <Authors>Jon McQuade</Authors>
    <Company>ACME Freelancing, Inc.</Company>
    <StartupObject></StartupObject>
    <Product>Flight Search</Product>
    <Description>ASP .NET Core 2.1 MVC SPA with React and Redux</Description>
    <RepositoryUrl>http://github.com/jonmcquade/aspnetcore-react-redux</RepositoryUrl>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <TypeScriptToolsVersion>2.8</TypeScriptToolsVersion>
    <OutputType>Exe</OutputType>
    <Version>2.1</Version>
  </PropertyGroup>

Qu'est-ce qui me manque pour que cela fonctionne?

Puis-je vérifier certains problèmes de configuration de la machine? Peut-être que les variables d'environnement? J'ai essayé d'exécuter une réparation à l'aide des programmes d'installation, mais cela ne résout pas le problème.

4
Jammer

Le global.json spécifie la versionSDKde .NET Core utilisée pour créer votre application. Cela a peu à voir avec la version de .NET Core Runtime avec laquelle vous voulez exécuter votre application.

Votre application est un netcoreapp2.1, vous exécutez donc le runtime .NET Core 2.1. La version la plus ancienne du SDK pour cela est 2.1.300.

Comme il s’agit de la dernière version du .NET Core, vous n’avez en fait pas besoin du tout global.json: supprimez simplement le fichier de votre projet et l’outillage doit utiliser la dernière version qui est 2.1.300-rc1 sur votre ordinateur.

5
poke

Si vous rencontrez ce problème sous OSX, vous pouvez le résoudre comme suit:

which dotnet

ls + le résultat de la commande précédente

Vous devriez maintenant voir quelque chose comme: /usr/local/share/dotnet/dotnet

Le répertoire qui contient votre binaire dotnet doit également avoir un répertoire appelé sdk. Ainsi, pour l'exemple ci-dessus, vous pouvez exécuter ls /usr/local/share/dotnet/sdk, qui devrait générer un répertoire avec votre numéro de version actuel. Dans mon cas, il s'agit de 2.1.403 (il existe peut-être un meilleur moyen d'obtenir le numéro de version, mais je n'ai pas pu exécuter dotnet --version sans spécifier le bon sdk).

Si j'ouvre maintenant le fichier global.json dans le répertoire racine de mon application et que je change la version sdk en "2.1.403-osx-gs-x64", je devrais maintenant pouvoir exécuter la commande dotnet telle que dotnet run à partir de mon projet.

1
NM Pennypacker