总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点

前言

从 Visual Studio 2022 开始,微软开始淡化 .NET Framework 的概念,在项目向导中,只有使用带 ".NET Framework" 的项目模板创建的才是 .NET Framework 项目,使用其他模板创建的都是 .NET Core 项目

比如,如果你想创建 .NET Framework 版本的控制台项目,应该选择 "控制台应用(.NET Framework)" ,如果选择的是 "控制台应用" ,则创建的是 .NET Core 版本的控制台项目。

那么,.NET Framework 和 .NET Core 创建的项目有什么不一样的地方呢?

我整理一下这两种框架下创建的项目的不同之处,主要有这 2 处不同之处,所谓知已知彼,希望可以帮助大家更好地使用 .NET 进行开发。

首先看看项目工程文件 *.csproj

对于 .NET Framework 项目来说,必须到文件资源管理器中找到它的 *.csproj 文件,然后用文本编辑器如 NotePad 打开它,而对于 .NET Core 项目,可以直接在 Visual Studio 中双击项目节点打开 *.csproj 文件。

而且 .NET Core 项目中的 *.csproj 文件比 .NET Framework 中的简单很多,.NET Core 项目并没有像 .NET Framework 那样把项目中的文件加入到 *.csproj 文件中,这是 .NET Core 项目和 .NET Framework 项目的一个不同。这是为什么呢?

在 .NET Framework 项目中,项目中所有的代码文件都要添加到 *.csproj 文件中,如果一个 C# 文件放在项目文件夹下,但是没有被添加到 *.csproj 文件中,那么这个文件是不会被编译的。

这样会造成很多问题,比如 *.csproj 文件修改冲突的问题。两个开发人员共同开发一个项目,各自向项目中添加了文件,就很容易造成 *.csproj 文件修改冲突的问题,这非常影响团队开发的效率。

.NET Core 项目中的文件不用添加到 *.csproj 文件中,项目下所有的文件默认都被自动包含到项目中,除非被手动排除。这种配置方式正好和 .NET Framework 相反,因为毕竟在开发项目的时候,开发人员主动排除某个文件不是经常发生的,而向项目中添加文件是非常频繁的操作,所以这样的优化尽可能地避免了文件修改的冲突,从而提升了团队开发的效率。

配置系统不同

在专业的软件项目中,一些配置项的值应该是可以修改的,我们不应该把这些值硬编码到代码中,.NET Framework 和 .NET Core 项目还有一个不同之处就是 .NET Core 项目没有 App.config 或 Web.config 文件。

App.config 或 Web.config 文件是 .NET Framework 项目默认的配置方式,但这种方式非常简单,当项目变复杂以后,这种简单的配置文件就显得力不从心了,需要程序员自己编写配置系统,比如从自定义的配置文件读取配置项,这样不仅会有代码可用性和可读性比较差的问题,还有重复造轮子的问题,不利用 .NET 生态的发展。

所以 .NET Core 中去掉了这种简单的配置文件,重新打造功能齐全强大的配置系统,新的配置系统支持非常丰富的配置源,包括文件(JSON、XML、INI 等)、注册表、环境变量、命令行、Azure Key Vault 等,还支持自定义配置源,简化了配置相关代码的编写方法,提高了生产效率。

写在末尾

.NET Framework 和 .NET Core 创建的项目有些许的不同,这些不同主要都是为了提高开发效率,但大体还是相同的,一旦创建好项目后,进行的代码编写、调试、运行等,基本上就都相同的。

往期精彩

  1. 闲话 .NET(1):.NET Framework
  2. 闲话 .NET(2):.NET 起名的原因、读法和演变
  3. 闲话 .NET(3):.NET Framework 的缺点
  4. 闲话 .NET(4):为什么要跨平台?
  5. 闲话 .NET(5):.NET Core 有什么优势?
  6. 闲话 .NET(6):.NET Core 各个版本的特性
  7. 闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
  8. 闲聊 .NET Standard

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊程序人生,共同学习,共同进步

相关推荐
future14121 小时前
C#学习日记
开发语言·学习·c#
傻啦嘿哟2 小时前
Python 办公实战:用 python-docx 自动生成 Word 文档
开发语言·c#
唐青枫7 小时前
C#.NET log4net 详解
c#·.net
Nemo_XP13 小时前
HttpHelper类处理两种HTTP POST请求
c#
ChaITSimpleLove19 小时前
使用 Dockerfile 构建基于 .NET9 的跨平台基础镜像
.net·dockerfile·.net aspire·dotnet-sdk·pwsh·docker image·docker buildx
lijingguang19 小时前
在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)
开发语言·c#
¥-oriented20 小时前
【C#中路径相关的概念】
开发语言·c#
ArabySide20 小时前
【WCF】通过AOP实现基于JWT的授权与鉴权的实践
c#·jwt·aop·wcf
xiaowu08021 小时前
C# Task异步的常用方法
c#