2 .NET 目标框架、项目、包 您所在的位置:网站首页 net461怎么装 2 .NET 目标框架、项目、包

2 .NET 目标框架、项目、包

2024-01-25 17:12| 来源: 网络整理| 查看: 265

Word文档地址:https://github.com/IceEmblem/LearningDocuments/tree/master/%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/Windows%20%E5%B9%B3%E5%8F%B0/Net

本篇文章带你了解目标框架,项目,包之间的关系

.NET 的框架体系

下表列表了常见的 .net的框架

名称 TFM(目标框架)/TxM .NET framework net11 net20 ...(一系列的版本) net472 net48 Windows Phone (SL) wp [wp7] ...(一系列的版本) wp81 .NET Standard netstandard1.0 netstandard1.1 ...(一系列的版本) netstandard2.0 netstandard2.1 .NET netcoreapp1.0 netcoreapp1.1 ...(一系列的版本) netcoreapp3.1 net5.0 net6.0

1…NET Standard .NET Standard 为规范框架,基于该框架的项目(包)可以被其他框架项目(包)使用,如项目A的框架为net6.0,包B的框架为netstandard2.1,则项目A可以引用包B

2.版本兼容性 高版本项目(包)可以引用低版本项目(包),如项目A的框架为net6.0,包B的框架为netcoreapp2.0,则A可以引用B,反之则不行

3.NET framework的兼容 从 .NET Standard 2.0 开始,引入了 .NET Framework 兼容性模式。 此兼容性模式允许 .NET Standard 和 .NET Core 项目引用 .NET Framework 库。但本人不推荐这种做法

.NET Standard与其他框架的关系 .NET Standard 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 | 2.1 .NET 和.NET Core 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 2.0 | 3.0 .NET Framework 1 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.6.1 2 | 4.6.1 2 | 4.6.1 2 | N/A3

举个例子,如果项目(包)B的目标框架为 .NET Standard 2.0,那么要想引用B,那么当前项目的目标框架必须大于或等于 .net core 2.0或 .NET Framework 4.6.1

Nuget包与框架

每个包都有其支持的目标框架 如下,Amazon.Lambda.Serialization.SystemTextJson包支持的目标框架有 .netcoreapp3.1 和 net6.0 在这里插入图片描述 如果我们项目的目标框架是netcoreapp2.1,那么我们无法安装该包 在这里插入图片描述 在这里插入图片描述 如果我们将项目的目标框架改为netcoreapp3.1,则可以正常安装 在这里插入图片描述

Nuget包依赖项分析

我们以Microsoft.Extensions.DependencyInjection包的依赖项进行分析 我们以下面几个项目进行分析 在这里插入图片描述

1.项目目标框架 .NET Framework 4.5 如果我们的项目是 .NET Framework 4.5,对应的 .NET Standard 为1.0 在这里插入图片描述 依赖项分析: -包依赖项 .NET Framework 4.6.1,该选项大于项目的目标框架,不适合 -包依赖项 .NET Standard 2.0,该选项大于项目的 .NET Standard 1.0,不适合 -…(其他选项不说了) 所以项目无法安装该包

2.项目目标框架 .netcoreapp2.1 如果我们的项目是 .netcoreapp2.1,对应的 .NET Standard 为2.0 依赖项分析: -包依赖项 .net6.0,该选项不适合 -包依赖项 .NET Standard 2.1,该选项不适合 -包依赖项 .NET Standard 2.0,该选项适合 所以项目会安装该包,并且安装该包在该框架下所依赖的4个包 在这里插入图片描述

3.项目目标框架 net5.0 如果我们的项目是 net5.0,对应的 .NET Standard 为2.1 依赖项分析: -包依赖项 .net6.0,该选项不适合 -包依赖项 .NET Standard 2.1,该选项适合 -所以项目会安装该包,并且安装该包在该框架下所依赖的2个包 在这里插入图片描述

包版本冲突

如下,我们在 .netcoreapp2.1 下安装了包Microsoft.Extensions.DependencyInjection 在这里插入图片描述 现在我们安装System.Threading.Tasks.Extensions 4.0 版本,会收到错误提示 在这里插入图片描述 意思就是下面这2个依赖包有冲突

TestConsoleApp1 -> Microsoft.Extensions.DependencyInjection 6.0.0 -> System.Threading.Tasks.Extensions (>= 4.5.4) TestConsoleApp1 -> System.Threading.Tasks.Extensions (>= 4.0.0)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有