Asp.net core 确定需要哪个.NET核心运行时
我发现了一些关于.NET Core SDK/运行时/工具版本控制困难的有趣文章,例如:Asp.net core 确定需要哪个.NET核心运行时,asp.net-core,.net-core,Asp.net Core,.net Core,我发现了一些关于.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的应用程序,则需要安装所有三个运行时