如何确认 IIS 是否正在使用 dotnet 6

How to confirm IIS is using dotnet 6

提问人:Matt W 提问时间:8/24/2023 更新时间:8/25/2023 访问量:39

问:

我已经在 IIS 下构建并部署了一个 dotnet 6 应用程序。应用程序包含以下文件:6.0.300global.json

    {
        "sdk": {
            "version": "6.0.300"
        }
    }

IIS 应用池配置为在 .NET CLR 版本下使用。No Managed Code

已安装 dotnet () 的早期版本。3.1.421

如果我运行命令,我会看到并显示:dotnet --version3.1.425dotnet --info

    .NET runtimes installed:
      Microsoft.AspNetCore.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
      Microsoft.AspNetCore.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
      Microsoft.NETCore.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
      Microsoft.NETCore.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
      Microsoft.WindowsDesktop.App 3.1.31 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

如何最终确认 net6 版本是否用于运行应用程序?

.net-core net-6.0 iis-6

评论

0赞 JRichardsz 8/25/2023
你有 *.csproj 文件吗?
0赞 Guru Stron 8/25/2023
@JRichardsz既然帖子说“我已经构建了” - 可以安全地假设 OP 有 csproj 文件。
0赞 JRichardsz 8/25/2023
如果您有一个有效的 csproj,则可以安全地假定所需的网络版本位于该文件中。因此,如果您使用另一个网络版本运行它,则会抛出错误

答:

1赞 Guru Stron 8/25/2023 #1

--version输出 SDK 版本,而不是运行时。从文档中

打印出命令使用的 .NET SDK 版本,该版本可能受文件影响。仅在安装 SDK 时可用。dotnetglobal.json

它与在运行时为应用选择的运行时无关。

而且您可以完全确定永远不会使用较旧的主要运行时版本,因为运行时选择不支持回滚到以前的主要版本(原因很明显)。

.NET 版本选择文档中:

依赖于框架的应用前
滚 主机选择计算机上安装的最新修补程序版本。例如,如果在项目文件中指定了该运行时,并且安装了最新的 .NET 运行时,则使用该运行时。
net5.05.0.25.0.2

应用程序包含此global.json文件

global.json确定用于生成应用的 SDK,但所需的运行时由指定的目标框架确定(即,可以使用 .NET 7 SDK 生成 .NET 6 应用)。

但是,如果你想真正确定,你总是可以通过编程方式检查版本:

Console.WriteLine(Environment.Version);
Console.WriteLine(RuntimeInformation.FrameworkDescription);