【发布时间】:2022-10-15 00:11:35
【问题描述】:
我有一个 WebAPI 项目,我做了一个调用“swagger.exe”的后期构建过程,这是 NuGet 包提供的工具。要全局安装它,我使用了以下命令:
dotnet tool install -g --version 5.3.1 Swashbuckle.AspNetCore.Cli
问题是:我的 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]
请注意,我的 Windows 上安装了 Runtime 3.1.26。
另请注意,Swashbuckle.AspNetCore.Cli 版本 5.3.1 已于 2020 年发布! 2年多以前!
所以,问题是:为什么这个 2020 年的包需要 2 周前发布的 .NET 运行时?为什么它不能使用我已经拥有的其他运行时之一(并且昨天工作正常)?
我知道我可以只安装较新的版本,问题就会得到解决......只是想保持我的 CI 顺利运行,而不必在每次发布新的运行时版本时都修复它。
【问题讨论】:
-
你有很多版本。可能会发生一些冲突。通常最好删除旧版本并保留您正在使用的最新版本。
-
我同意社区成员的建议。我们可以看到您的机器上安装了多个版本的 .NET。当有多个版本可用时,您的应用程序可能会尝试使用它的最新版本,但您的应用程序可能与任何特定版本的 .NET 兼容并生成上述错误。我建议您只保留与您的应用程序兼容的 .NET 版本,您可以删除其他未使用的版本。这可能有助于避免上述错误。
-
好的,它没有回答所想的问题......为什么它以前可以工作,以及为什么旧程序现在需要最新版本的框架。
-
您的应用程序使用的 .Net Framework 可能存在一些问题或已损坏。此外,您的应用程序中的某些内容正在检查新的 .Net 版本,并在新的 .Net 可用时向您显示错误。
-
不是我的应用程序...它是 NuGet 上提供的“Swagger CLI”。我花时间检查了它的源代码,它没有这个错误消息。它不检查 .NET 版本。此验证以某种方式在运行时本身上进行。但是查看这个 CLI 工具的源代码实际上给了我一个想法来解决这个特定情况下的这个问题。
标签: asp.net-core swagger swashbuckle.aspnetcore