您必须安装或更新 .NET 才能运行此应用程序

Dan*_*iro 19 swagger asp.net-core swashbuckle.aspnetcore

我有一个 WebAPI 项目,并且执行了一个调用“swagger.exe”的构建后过程,这是 NuGet Package 提供的工具。为了全局安装它,我使用了以下命令:

dotnet tool install -g --version 5.3.1 Swashbuckle.AspNetCore.Cli
Run Code Online (Sandbox Code Playgroud)

问题是:我的 CI 流程昨天运行良好。今天它不再起作用了。我将问题范围缩小到了 swagger 可执行文件...只需调用它,不带任何参数,它就会返回以下消息:

终端截图

You must install or update .NET to run this application.

App: C:\Users\DRibeiro\.dotnet\tools\swagger.exe
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '3.1.27' (x64)
.NET location: C:\Program Files\dotnet\

The following frameworks were found:
  3.1.21 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  3.1.26 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.12 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  5.0.17 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  6.0.6 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  6.0.7 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Run Code Online (Sandbox Code Playgroud)

请注意,我的 Windows 上安装了运行时 3.1.26。

另请注意,Swashbuckle.AspNetCore.Cli5.3.1 版本于 2020 年发布!2年多前了! NuGet 屏幕截图

所以,问题是:为什么 2020 年的这个包需要 2 周前发布的 .NET 运行时?为什么它不能使用我已经拥有的其他运行时之一(并且昨天工作正常)?

我知道我可以安装较新的版本,问题就会得到解决...只是想让我的 CI 顺利运行,而不必每次发布新的运行时版本时都修复它。

Sup*_*a43 8

现代 .NET 的答案

添加到dotnet--roll-forward LatestMajor的参数或设置环境变量。DOTNET_ROLL_FORWARD=LatestMajor

--前滚


Dan*_*iro 0

事实证明,我们的自动软件分发系统没有正确完成其工作,并向我们的 CI 计算机发送了不正确的 .NET 运行时文件。可能是网络管理员的一些人为错误。

我从系统上断开了这台特定的 CI 机器的连接并重新安装了运行时,一切正常。