npm 无法从 global.json 中找到 SDK 版本

npm cannot find SDK version from global.json

我正忙着尝试在 asp.net core / npm / react 上使用它作为基础项目模板:

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

我最初 运行 在尝试这个命令时遇到了麻烦:

dotnet build -c Release -o ./app

我看到的错误:

A compatible SDK version for global.json version: [2.1.0] from [global.json] was not found Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

我安装了文档中的特定版本,并且安装了最新版本,包括 x64 和 x86 平台。

我现在也收到此错误 运行 npm install 命令或 dotnet --version 命令,但我安装了 SDK。

感觉机器配置不知何故变坏了。我似乎遇到了一些版本问题,试图让 dotnet build 命令正常工作,现在甚至 NPM 都无法正常工作。

Global.json 是:

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

.csproj 文件包含:

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

我缺少什么才能让它正常工作?

我可以检查一些机器配置问题吗?也许环境变量?我已尝试 运行 使用安装程序进行修复,但这并不能解决问题。

global.json 指定用于构建应用程序的 .NET Core 的 SDK 版本。这与您希望 运行 您的应用程序使用的 .NET Core 运行时版本无关。

您的应用程序是 netcoreapp2.1,因此您正在 运行安装 .NET Core 2.1 运行时。最早的 SDK 版本是 2.1.300.

由于这是最新的 .NET Core 版本,实际上您根本不需要使用 global.json:只需从您的项目中删除文件,工具应该使用最新版本 global.json =14=] 在你的机器上。

如果您 运行 在 OSX 遇到这个问题,您可以这样解决问题:

which dotnet

ls + 上一条命令的输出

您现在应该看到如下内容: /usr/local/share/dotnet/dotnet

包含你的 dotnet 二进制文件的目录也应该有一个名为 sdk 的目录,所以对于上面的例子你可以 运行 ls /usr/local/share/dotnet/sdk,它应该输出一个包含当前版本号的目录。在我的情况下是 2.1.403(可能有更好的方法来获取版本号,但我无法 运行 dotnet --version 没有指定正确的 sdk)

如果我现在打开应用程序根目录中的 global.json 文件并将 sdk 版本更改为 "2.1.403-osx-gs-x64",我现在应该能够 运行 dotnet 命令,例如我项目中的 dotnet run

只需确保您的机器上安装了所需的 SDK 版本。根据您的错误,它是 .NET core 2.1.0。您不再需要 global.json 文件。