.NET 8应用引用.NET 6 NuGet包的运行时执行环境问询
.NET跨版本依赖的运行时执行逻辑
直接依赖场景解答
当你部署目标为.NET 8.0的InternetResourceAPI应用到已安装.NET 6.0运行时的IIS服务器后,ResourceFetcher(.NET 6.0 NuGet包)不会在.NET 6.0运行时上执行。
原因在于.NET Core/.NET 5+采用单运行时宿主模型:整个应用进程只会加载主应用指定的目标运行时(也就是.NET 8.0)。.NET设计时就保证了低版本类库对高版本运行时的向前兼容性,只要类库没有使用高版本运行时移除的API,.NET 6.0的ResourceFetcher就能在.NET 8.0运行时环境中正常运行,不会单独启动.NET 6.0的运行时进程。
间接依赖场景解答
对于InternetResourceAPI(.NET 8.0)→ResourceFetcher2(.NET 8.0)→SomeDependency(.NET 6.0)的间接依赖链,调用SomeDependency的代码时,不会使用服务器上的.NET 6.0程序集。
整个应用进程的运行时环境由主应用决定,依然是.NET 8.0。SomeDependency作为.NET 6.0类库,会在.NET 8.0运行时上执行,运行时会自动加载.NET 8.0版本的框架程序集来支撑其运行,而非服务器上的.NET 6.0框架程序集。只要SomeDependency兼容向前运行的要求(未使用已废弃/移除的API),就能在.NET 8.0环境中正常工作。
内容的提问来源于stack exchange,提问作者Ben Smith
相关产品推荐
相关产品推荐

