Asp.net core 确定需要哪个.NET核心运行时

Asp.net core 确定需要哪个.NET核心运行时,asp.net-core,.net-core,Asp.net Core,.net Core,我发现了一些关于.NET Core SDK/运行时/工具版本控制困难的有趣文章,例如: 然而,我仍然不知道如何在实践中处理所有这些问题: 给定一个具有多个.Net核心依赖项的项目。如何确定最终用户计算机上需要哪一版本的运行时 运行时版本是否需要精确匹配,或者最终用户计算机上安装的运行时是否比所需版本更新 假设我想坚持使用运行时的一些LTS版本。如何确定需要引用的包的版本?如何确保没有引用新的包 哦,还有一个: 一旦我知道最终用户机器上需要哪个运行时版本,我如何(以编程方式)确定该运行时

我发现了一些关于.NET Core SDK/运行时/工具版本控制困难的有趣文章,例如:

然而,我仍然不知道如何在实践中处理所有这些问题:

  • 给定一个具有多个.Net核心依赖项的项目。如何确定最终用户计算机上需要哪一版本的运行时
  • 运行时版本是否需要精确匹配,或者最终用户计算机上安装的运行时是否比所需版本更新
  • 假设我想坚持使用运行时的一些LTS版本。如何确定需要引用的包的版本?如何确保没有引用新的包
  • 哦,还有一个:

  • 一旦我知道最终用户机器上需要哪个运行时版本,我如何(以编程方式)确定该运行时版本(或更新的向后兼容版本)是否可用

  • 首先,让我们看看当一个可移植的.NET核心应用程序通过
    dotnet yourapp.dll运行时会发生什么:

    • muxer可执行文件(
      windows上的dotnet.exe
      )从
      dotnet.exe
      旁边的
      host\fxr\
      下的文件夹加载主机框架解析程序(
      hostfxr
      )的版本
    • 主机框架解析程序查看
      yourapp.runtimeconfig.json
      (如果在使用
      dotnet exec
      时配置了另一个文件),以确定目标框架。这将提取框架名称(
      Microsoft.NETCore.App
      )和版本(例如
      1.1.0
    • 然后在
      shared\Microsoft.NETCore.App
      文件夹(基于框架名称)中查找可用版本
    • 它根据可用版本和yourapp.runtimeconfig.json中的框架版本决定使用哪个版本。或者,它可能决定出错,并抱怨所需版本不可用。

      • 您没有选择?@Tseng,谢谢您的输入-但我需要处理一个可移植的应用程序。那么,您需要a)安装SDK(任何版本都可以,但对于cli来说最新版本是最好的)和b)您的应用程序依赖的任何运行时。在windows上,运行时存储在windows上的
        C:\Program Files\dotnet\shared\Microsoft.NETCore.App
        (或用于x86运行时的
        C:\Program Files(x86)\dotnet\shared\Microsoft.NETCore.App
        )。至少对于cli工具
        dotnet
        ),您可以通过项目内部的global.json选择版本。但不确定部署场景,因此如果您有3个需要.NET Core 1.0、1.1和2.0的应用程序,则需要安装所有三个运行时