Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core Bambol NuGet Restore命令正在运行旧版本的SDK_.net Core_Nuget_Nuget Package Restore - Fatal编程技术网

.net core Bambol NuGet Restore命令正在运行旧版本的SDK

.net core Bambol NuGet Restore命令正在运行旧版本的SDK,.net-core,nuget,nuget-package-restore,.net Core,Nuget,Nuget Package Restore,我有一个.NETCore2.2Web应用程序,已经在竹子上成功构建了几个月。最近有人重建了新的竹服务器(我们是内部部署的,不是云中的),作为竹升级的第一步,我的构建开始失败。错误是: C:\Program Files\dotnet\sdk\2.1.509\sdk\Microsoft.NET.sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5):错误NetSDK 1045:当前.NET sdk不支持针对.NET Core

我有一个.NETCore2.2Web应用程序,已经在竹子上成功构建了几个月。最近有人重建了新的竹服务器(我们是内部部署的,不是云中的),作为竹升级的第一步,我的构建开始失败。错误是:

C:\Program Files\dotnet\sdk\2.1.509\sdk\Microsoft.NET.sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5):错误NetSDK 1045:当前.NET sdk不支持针对.NET Core 2.2。以.NET Core 2.1或更低版本为目标,或使用支持.NET Core 2.2的.NET SDK版本

我的原始帖子错误地断言此错误发生在运行dotnet publish的脚本任务中。我现在意识到它实际上发生在前一个任务中——一个运行NuGet Restore的竹命令任务。我可以在命令行中重现这个问题,所以它似乎不是一个问题

总之,我有一个包含四个项目的.NET核心解决方案。所有四个项目都以.NETCore2.2为目标。我已经在我的build服务器上安装了NuGet 5.3.1。我导航到解决方案目录并运行

nuget恢复

我首先得到以下信息:

MSBuild自动检测:使用“C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin”中的MSBuild版本“15.9.21.664”

然后是以下错误的四个实例,每个项目一个:

C:\Program Files\dotnet\sdk\2.1.509\sdk\Microsoft.NET.sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(137,5):错误NetSDK 1045:当前.NET sdk不支持针对.NET Core 2.2。以.NET Core 2.1或更低版本为目标,或使用支持.NET Core 2.2的.NET SDK版本

是什么导致nuget还原操作使用.NET Core 2.1而不是2.2?msbuild自动检测是否有问题


我最初发现新服务器上没有安装.net core 2.2,所以我安装了它,所以现在两者都已安装完毕。但上述错误仍然存在,并继续引用.net core 2.1

不要运行
nuget restore
而是使用
dotnet restore

一种更简洁的设置方法是将dotnet可执行文件配置为竹子中的命令。通过这样做,您可以确保每次都运行正确的可执行文件。此外,您还将获得以下好处:

  • 该命令将显示它的版本
  • 这将扩展到其他生成代理
  • 增加了任务的清晰度(将显示为Dotnet2.2而不是脚本)

然后,您可以为每个步骤(例如,还原、生成、测试)指定专用任务

而不是运行
nuget restore
使用
dotnet restore

一种更简洁的设置方法是将dotnet可执行文件配置为竹子中的命令。通过这样做,您可以确保每次都运行正确的可执行文件。此外,您还将获得以下好处:

  • 该命令将显示它的版本
  • 这将扩展到其他生成代理
  • 增加了任务的清晰度(将显示为Dotnet2.2而不是脚本)

然后,您可以为每个步骤指定专用任务(例如,恢复、构建、测试)

对不起。回想起来,我意识到我原来的帖子是错误的。我对它进行了重要的编辑。主要的一点是,失败的不是带有dotnetpublish命令的脚本任务。它是前一个任务—运行NuGet Restore的命令任务。您可以在我更新的原始帖子中获得更多详细信息。对不起。回想起来,我意识到我原来的帖子是错误的。我对它进行了重要的编辑。主要的一点是,失败的不是带有dotnetpublish命令的脚本任务。它是前一个任务—运行NuGet Restore的命令任务。你可以在我更新的原始帖子中获得更多细节。