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

.NET Core Web 服务部署到 Ubuntu NET Framework:是早期的 .NET 实现,仅支持 Windows 平台,包含运行时(CLR)和类库(如 ASP.NET、WinForms、WPF 等),主要用于 Windows 桌面和 Web 应用开发。.NETSDK:SDK 包含 Runtime,同时可以为.Net 开发人员提供.Net 项目的运行编译打包环境。是用于构建、编译和运行 .NET 应用程序的工具集合,包含编译器、运行时、库和命令行工具(如。CLI),支持跨平台开发(Windows、Linux、macOS)。 阅读详情

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)
VS中使用NuGet安装依赖时提示:无法安装程序包“xxx”。你正在尝试将此程序包安装到目标为“.NETFramework,Version=v4.5”的项目中 场景 在使用NuGet添加项目依赖,比如添加MQTTnet时提示: 安装程序包“MQTTnet3.0.0”。你正在尝试将此程序包安装到目标为“.NETFramework,Version=v4.5”的项目中 但该程序包中不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系程序包作者。 注: 博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 这是因为程序包所需要的N. 阅读详情

相关推荐

错误形式的警告: 已使用“.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7,

此包可能与项目不完全兼容。在 Visual Studio → NuGet 管理器 → 选择。这样可以消除大部分 NU1701 / NU190x 警告。最新版本是否支持 net8.0。(18.1+ 或 19.x)

jacke121的专栏 350

将 .NET Framework 项目转换为 .NET Standard 项目

如今 .NETCore是未来发展的主流(至少在 .NET 5 发布之前),而我们如果要改造一个项目为 .NETCore项目,则它引用的项目应当先改造为 .NET Standard 项目。 下表给出了每种平台支持指定的 .NET Standard 版本的最低版本(参考): 简单说明一下:.NET Standard 2.0 支持 .NET Core 2.0 和 .NETFramework4.6.1(最好使用 4.7.2 或更高),所以使用这些版本的话就不用进行多平台配置了。.NET ...

weixin_45499836的博客 2564

LLC谐振电路增益公式推导

LLC谐振电路增益公式理解

金凯*博客 1万+

.net项目中的多目标框架配置初步

.net 项目的解决方案文件夹中,可以使用directory.build.props和directory.build.targets文件来配置解决方案基本信息。对于多框架目标(比如既支持.net4.6又支持.netcore3.1),则可以在directory.build.props配置文件中配置。在vs中打开后,这两个文件位于Solution Items节点下面。 打开Directory.Build.Props文件后,可以看到TargetFrameworks节点信息如下,包含了net46和netcor

就在昨天之技术点滴 2561

FreeRtos——10、全局看门狗设计

RTOS 里的看门狗不只是为了证明 CPU 还在动,而是为了证明每个业务逻辑都在按预期的节奏“呼吸”。

qq_40170041的博客 901

从共现矩阵到共现图一步到位——详解版

1.共现矩阵 判断大量不同文本之间,相邻词的联系,两词在所有文本中相邻的次数在矩阵中用数值表示。(参考此) 例子如下: 1.1 文本 • I like deep learning. • I like NLP. • I enjoy flying. 1.2 共现矩阵 2.共现图 2.1 数据预处理(节点和边) 获取文件node.csv和edge.csv。代码详见github仓库 2.2 共现图的制作 2.2.1 gephi的安装(参考此) (1)先下载gephi (2) 再配置java环境(下载java1.8

微乐的博客 4403

Nuget包之间的依赖

  为什么我们使用依赖呢??原因是某些资源是基于某些资源的基础上才可以运行的,比如bootstrap基于Jquery,EntityFramework.zh-Hans基于EntityFramework,如果你删除了Jquery而bootstrap还在使用,这样bootstrap肯定会报错或者说没有效果,删除EntityFramework也是会使得EntityFramework.zh-Hans出错!!...

weixin_30776545的博客 194

安卓光速虚拟机ADB调试实战:从密钥配置到设备连接

本文详细介绍了在安卓光速虚拟机中进行ADB调试的完整实战流程。核心在于通过密钥配置解决设备未授权问题,并启用网络调试与端口映射,最终实现电脑与虚拟机的稳定连接。文章提供了从原理理解、脚本修改到实战命令和疑难排查的全方位指南,帮助开发者和爱好者高效利用光速虚拟机作为移动测试沙盒。

CAT789的专栏 557

.NET Standard 支持的 .NET Framework 和 .NET Core

NET Standard 是针对多个 .NET 实现推出的一套正式的 .NET API 规范。推出 .NET Standard 的背后动机是要提高 .NET 生态系统中的一致性。.NET 5 及更高版本采用不同的方法来建立一致性,这种方法在大多数情况下都不需要 .NET Standard。但如果要在 .NET Framework 和其他任何 .NET 实现(例如 .NET Core)之间共享代码,则库必须面向 .NET Standard 2.0。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 9万+

赛豆科技 AIVA 汽车智能体架构演进面试题与答案

摘要 赛豆科技AIVA汽车智能体架构从座舱AI演进到整车智能体,最终实现自进化的超级智能体。其核心是"先有AI再有车"的理念,将AI作为产品主轴而非附加功能。架构设计采用端-边-云协同,确保低延迟响应;整车智能体通过Planner、Tool Registry等关键组件实现自主决策;自进化机制结合车端个性化学习和云端群体学习,并设置多重安全验证。多域协作采用分层架构,关键安全功能仍由确定性逻辑控制。该架构实现了从被动响应到主动服务的范式转变,使车辆能够持续进化。

AI天才研究院 122

LAMMPS后处理—如何构建二维云图-接触角呢?

计算接触角

Rockyoung 6523

搭建私有Nuget服务器(.Net Core框架)

目录概述搭建nuget服务Baget服务服务器搭建后台管理nuget包设置私有nuget服务器地址命令行下载自己推送的包 概述 在私有服务器上搭建Nuget服务,本地打包推送nuget包,实现对.net core项目自定义包的管理。 NuGet是用于微软.NET(包括 .NET Core)开发平台的软件包管理器。NuGet能够令你在项目中添加、移除和更新引用的工作变得更加快捷方便。 我们通过“工具-Nuget包管理器-管理解决方案的Nuget程序包”可以看到下图的页面,可以从网上搜索我们需要的nuget包,

AI_eye的博客 4140

【YOLOv11】从零搭建基于YOLOv11深度学习算法的农作物虫害检测系统(附带环境搭建+完整代码+讲解)

《基于YOLOv11的农作物病虫害智能检测系统》项目摘要 本项目开发了一个基于YOLOv11深度学习算法的农作物病虫害检测系统,支持玉米、水稻、草莓和西红柿等四大类经济作物的30多种病虫害识别。系统采用多模态检测方式,支持图片、视频和实时摄像头输入,并集成了完整的Web应用框架。 技术架构上,系统以PyTorch实现YOLOv11算法为核心,结合Flask搭建深度学习服务,SpringBoot构建业务后端,Vue3+TypeScript开发前端界面,MySQL数据库存储检测数据。系统具备用户权限管理功能,支

AnChenliang_1002的博客 812

.NET 8.0 项目升级到 .NET 9.0

.NET 8.0 项目升级到 .NET 9.0,发现AutoMapper-v13.0.1正常,AutoMapper.Extensions.Microsoft.DependencyInjection-v12.0.1已弃用,将AutoMapper和AutoMapper.Extensions.Microsoft.DependencyInjection版本都降至12.0.0版本后,异常消除.可能因为之前项目内的AutoMapper-v13.0.1语法不支持。选择相应程序包-右侧选择版本,点击更新即可。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 11万+

SCI投稿Title Page、Cover letter、Highlights、Manuscript模板

(简要介绍一下论文的创新性). I hope this paper issuitable for “Journal Name”.版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/weixin_48615832/article/details/120317336。

qq_15963745的博客 3700

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1 原文:ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1一、前言   最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10...

weixin_30596165的博客 158

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

(转)【Core】当前 .NET SDK 不支持将 .NET Core 2.2 设置为目标。请将 .NET Core 2.1 或更低版本设置...

转自:https://www.cnblogs.com/chuankang/p/10725150.html 问题起因: 新的电脑,打开core2.2的项目时,因为没有安装2.2 sdk,项目编译失败 所以在选择目标框架下拉框选择安装其他目标框架 会跳转到官网下载sdk:https://dotnet.microsoft.com/download/visual-studio-sdks?...

dengguawei0519的博客 552

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NET Core项目编译程序记录

里面版本号,需要新增编译其版本只需要使用分号做结尾。的属性值判断版本号时可以通过Or进行基本的运算。如何高版本项目降版本如NET4.5.2。不同版本项目引用不同版本的Nuget包。Unidecode.NET包进行适配。如何项目生成多个版本。即为即将要引用的包,

dotNET跨平台 65

告别‘无法引用’:将你的.NET Core服务打包成NuGet供老框架项目使用的保姆级指南

本文详细介绍了如何将.NET Core服务打包成NuGet包供老框架项目使用,解决混合技术栈开发中的兼容性问题。通过多目标框架打包、处理API差异、自动化打包与版本管理等实战技巧,帮助开发者高效实现代码共享。特别适合需要同时维护新旧系统的开发团队。

weixin_29234509的博客 329

VS2022迁移VS2019项目遇到的.Net Framework 引用程序集问题解决方案

在GitHub上发现TrafficMonitor的开源代码,想要自己过一遍这个项目。打开项目时发现关于NET framework的问题

m0_46746801的博客 4539

告别硬编码!将.NET Core业务逻辑打包成NuGet包,供.NET Framework 4.7.2项目复用(含私有仓库搭建)

本文详细介绍了如何将.NET Core业务逻辑打包成NuGet包,供.NET Framework 4.7.2项目复用,包括.NET Standard桥梁选择、NuGet包创建、私有仓库搭建及客户端集成实践。通过实际案例展示,帮助团队高效解决跨平台代码共享问题,提升维护效率和代码质量。

weixin_30505225的博客 566

SharpGL 跨平台兼容性详解:.NET Framework、.NET Core 与 .NET Standard 2.1+

想要在.NET应用中集成OpenGL图形渲染功能?**SharpGL** 是您的终极解决方案!这款强大的C#库不仅封装了所有现代OpenGL特性,还提供了跨平台兼容性,让您可以在不同版本的.NET框架中无缝使用。本文将为您详细解析SharpGL在.NET Framework、.NET Core和.NET Standard 2.1+环境下的完整兼容性指南,帮助您快速选择最适合的开发平台。🎯 ##

gitblog_00416的博客 490

Unity项目手动导入NuGet包全流程:从原理到避坑实践

在Unity开发中,依赖管理是项目架构的基础环节。其核心原理在于理解.NET库的目标框架与Unity脚本运行时的兼容性关系,特别是.NET Standard 2.0与IL2CPP的适配机制。这项技术的工程价值在于突破Unity官方包管理器的生态限制,让开发者能够安全可控地引入海量.NET社区资源,如RestSharp、MessagePack等高性能库,从而扩展项目能力边界。实际应用场景涵盖网络通信、数据序列化、第三方SDK集成等需要特定功能库的模块开发。本文聚焦于通过手动导入方案,系统解决NuGet包在Un

weixin_27960253的博客 300

.NET Standard多目标框架类库项目文件修改配置

选择“类库”,用于创建面向.NET或.NET Standard的类库的项目。注意:不要选择“类库(.NET Framework)”,将TargetFramework标签改为TargetFrameworks,然后里面输入需要增加的版本.多Net框架类库安装nuget包,不同版本需要增加条件

海盗Sharp的博客 2011

Visual Studio更改并下载.Net Framework目标框架以及Nuget包下载

🌈总的来说,如果选择第一种方法,项目用的目标框架替换成现在VS所用的,再进行开发,可能由于目标框架的不同,导致代码出现错误,还有更甚者:更改后与其他人原本的目标框架开发的代码进行合并时,出现的错误更多,因此,从软件开发以及项目调试上看,用第二种方法的效果更好,起码只是增加了安装步骤而已。注:更改安装时,VS需关闭,所以如有打开VS中的项目代码请先保存好,退出VS先;另外,本文也介绍VS中NuGet包的安装!最后,文中若有不足,敬请批评指正!

SteveDraw的博客 1万+

Microsoft Visual Studio 2022添加.NET Framework 4.6.2框架,然后说下.NET目标包的作用。

目标包用于当你安装了高版本sdk需要定位到低版本的情况下需要安装的一种包。这种包可以在需要的情况下让你可以选择低版本的编译目标(Framework) 而免于安装低版本的sdk。

bugtraq的博客 9670
上一篇: 1. NET 6.0 前言
下一篇: 3 .NET CLI 命令和项目结构
dabusidede
博客等级 码龄9年 84粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值