微软.NET6开发中解决方案和项目的概念

我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,下面我就重点讲讲微软.NET6开发中解决方案和项目的概念。我将介绍 Visual Studio 2022的解决方案和项目的结构及组成。

解决方案是用于集中统一管理一组具有相关性的项目的Visual Studio工程结构。有时一个复杂的工程无法在一个项目中完成编写,需要分解为多个项目,为了方便管理这个工程的多个项目,便产生了解决方案。

一个解决方案对应一个SLN文件,它是一个文本文件,包含一组描述解决方案对应的VS版本和所管理项目的相关信息的文本。新建项目时默认会同时新建一个解决方案,可见VS的工程管理是以解决方案为基础进行的。同一个解决方案的项目一般会放在SLN文件所在的文件夹中,以便于源代码版本管理工具进行管理。 

项目是一组具有紧密关联的代码和相关资源的集合,也是编译生成的基本单位。

一个项目会被编译为一个程序集(DLL)或应用程序(EXE)。一个项目对应一个csproj文件,它是一个XML文本文件,包含一组描述项目类型、项目信息、所包含的代码和相关资源的一系列XML节点。同一个项目的相关文件一般会放在csproj文件所在的文件夹中。   

创建解决方案和项目

下面来说一说解决方案和项目的创建方法。创建解决方案和项目主要有以下两种方法:   

(1)新建项目时让Visual Studio自动创建一个解决方案:默认情况下相当于创建空白解决方案,之后继续用解决方案名称创建一个同名项目放到解决方案文件夹中。

下面说一下具体的操作。

1。打开VS

2。在启动窗口中单击创建新项目

3。单击文件

4。单击新建

5。单击项目

6。选择项目类型

7。编辑项目名称和解决方案名称,可以取一样的名字

8。单击下一步,项目和对应的解决方案将同时创建完成

(2)新建空白解决方案:使用这种方法可以创建一个没有项目的空白解决方案,之后可以继续创建项目。实际上相当于创建一个以解决方案命名的文件夹,然后在文件夹中创建一个以解决方案命名的SLN文件。

下面说一下具体的操作。

1。在解决方案资源管理器的解决方案处右击

2。在菜单中选择添加

3。单击新建项目

4。选择项目类型

5。编辑项目名称

7。单击下一步,在解决方案中完成了项目的新建

引用其他项目和第三方程序包

下面来说一说这个问题,在应用开发中免不了要使用其他人写好的库,特别是一些比较基础和通用的功能,自己实现不仅要消耗额外的时间,还可能产生未知的bug。使用第三方库可以很好地避免这些问题。一个复杂的项目为了方便团队协作和积累基础代码,也会分割成多个项目。所以了解如何引用其他项目和第三方库是非常重要的。   

(1)引用其他项目   

引用其他项目的操作步骤如下:

1。在“解决方案资源管理器”的“解决方案”下展开要引用的其他项目,在“依赖项”处右击,在弹出的快捷菜单中选择“添加项目引用”命令

2。在“引用管理器”窗口中勾选要引用的项目,然后单击“确定”按钮

3。引用完成后在主项目的依赖项的项目中就可以看到引用的其他项目

(2)引用第三方程序包

两种方法引用程序包,

一种叫使用包管理器进行引用,如下:

1。在解决方案资源管理器的解决方案下展开要引用的第三方库的项目

2。在依赖项处右击,在弹出的菜单中选择管理nuget程序包

3。在浏览标签搜索要引用的库

4。在右侧选择要安装的版本并安装

5。之后在主项目的依赖项的包中可以看到引用的第三方库。

另一种叫使用包管理控制台进行引用,如下:

1。单击菜单的工具栏

2。点nuget包管理器

3。点程序包管理器控制台

4。打开程序包管理器控制台

5。通过nuget网页来搜索包

6。找到包后,复制package manager标签下的命令

7。粘贴到控制台运行就可以安装

(3)卸载程序包和项目引用

开发项目时可能需要卸载引用,例如调整引用关系或更换成相同功能的其他程序包。卸载引用有如下两种简单且常用的方法:

1)从项目的csproj文件中删除对应的“PackageReference”或“ProjectReference”节。

2)在解决方案资源管理器下的项目的依赖项中找到要卸载的程序包或项目,单击选中后按Delete键或者右击后在快捷菜单中选择移除命令。
 

.NET主要项目类型

.NET项目主要有:

控制台应用(Console App)

ASP.NET Core Web应用

.NET标准库(.NETStandard Library)

.NET库(.NET Library)

其中.NET标准库2.0版本可以在.NET Framework4.6或更高版本的项目中使用,是泛用性较好的.NET项目类型。

从.NETCore3.0开始,又增加了.NET WinForm桌面应用和.NET WPF桌面应用项目,不过这两种项目只能在 Windows系统中运行,不具备.NET跨平台的能力。

.NET6推出了新的跨平台图形界面框架Maui。

.NET库项目由.NET类和其他嵌入式资源组成,这些类无法直接在系统中运行,只能直接或间接地通过.NET应用项目来使用。它就像一个工具箱,存放着各种工具类,等待着应用项目去使用。

.NET应用项目本质上和库项目一样,但是编译器会为应用项目额外添加一些启动信息,.NET在运行时可以根据这些信息创建进程并运行其中的启动代码运行应用。

.NET库只能被相同或更高版本且体系结构兼容的.NET项目引用,无法在.NET Framework中使用。.NET库与.NET标准库的主要区别在于能使用特定.NET版本框架的API,这也是其兼容性较差的原因。除非项目依赖于这些API,否则推荐优先使用.NET标准库。

解决方案和项目文件解析


解决方案文件

如下是前面操作演示的解决方案文件:

1. Microsoft Visual Studio Solution File, Format Version 12.00

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/374732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE5 获得UE内的音频组件与频谱

打开Audio Synesthesia插件 在Sounds内Analysis选择Synesthesia NRT 创建好后选择Settings,下面的sound选择你要选择的音乐 在Actor里添加Constant QNRT变量,选择刚刚创建的NRT 添加Audio组件 这里需要先运行SetSound,然后获得当前音频的总长度,Get Duration并设置变量 绑定时间…

zabbix-监控应用程序(Mysql、Nginx)

基础环境:zabbix服务端、两台zabbix被监控端、分别安装Mysql和Nginx环境拓扑图: 实验目标:可以通过zabbix监控到被监控端上安装的mysql与nginx,通过zabbix实时检测mysql和nginx的数据。实验步骤:1.在8.7服务器上安装My…

Asp .Net Core 系列:Asp .Net Core 集成 NLog

简介 NLog是一个基于.NET平台编写的日志记录类库,它可以在应用程序中添加跟踪调试代码,以便在开发、测试和生产环境中对程序进行监控和故障排除。NLog具有简单、灵活和易于配置的特点,支持在任何一种.NET语言中输出带有上下文的调试诊断信息…

Linux 命令基础

Shell概述 Linux操作系统的Shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 Shell是用户和Linux内核之间的接口程序,如果把硬件想象成一个球体的中心,内核围绕在硬件的外层管理着…

基于Python机器学习算法农业数据可视化分析预测系统(完整系统源码+数据库+详细文档+论文+部署教程)

文章目录 基于Python机器学习算法农业数据可视化分析预测系统完整源码获取方式在文章末尾一、项目简介二、开发环境三、项目技术四、功能结构五、功能实现模型构建封装类用于网格调参训练模型系统可视化数据请求接口模型评分 0.5*mse 六、系统实现七、总结完整源码获取 基于Pyt…

Qt程序设计-自定义QLineEdit控件添加鼠标单击事件

本文讲解Qt自定义QLineEdit控件添加鼠标单击事件。 QLineEdit控件默认没有单击事件,但是项目开发中有时需要单击事件,比如单击QLineEdit控件弹出软键盘。具体实现过程如下: 创建项目,在项目中添加一个类,命名为MyLineEdit 输入继承QLineEdit #ifndef MYLINEEDIT_H #defi…

Redis(十二)Bigkey

文章目录 游标案例生成100万测试数据key生产上限制keys */flushdb/flushall等危险命令不使用keys *&#xff1a;scan Biigkey案例多大算大发现bigkey渐进式删除生产调优示例问题 游标案例 生成100万测试数据key shell: for((i1;i<100*10000;i)); do echo "set k$i v…

分享76个节日PPT,总有一款适合您

分享76个节日PPT&#xff0c;总有一款适合您 76个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1-j7toLaBUBAJbkd85xe4VQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

HiveSQL——设计一张最近180天的注册、活跃留存表

0 问题描述 现有一个用户活跃表user_active(user_id,active_date)、 用户注册表user_regist(user_id,regist_date)&#xff0c;表中分区字段都为dt(yyyy-MM-dd)&#xff0c;用户字段均为user_id; 设计一张 1-180天的注册活跃留存表&#xff1b;表结构如下&#xff1a; 1 数据分…

【知识整理】一文理解系统服务高可用

一、如何理解高可用 1、什么是高可用 高可用性&#xff08;英语&#xff1a; High Availability&#xff0c;缩写为 HA&#xff09;&#xff0c;指系统无中断地执行其功能的能力&#xff0c;代表系统的可用性程度&#xff0c;是进行系统设计时的准则之一。 2、决定可用性的两…

【Go】一、Go语言基本语法与常用方法容器

GO基础 Go语言是由Google于2006年开源的静态语言 1972&#xff1a;&#xff08;C语言&#xff09; — 1983&#xff08;C&#xff09;—1991&#xff08;python&#xff09;—1995&#xff08;java、PHP、js&#xff09;—2005&#xff08;amd双核技术 web端新技术飞速发展&…

前端学习第四天

目录 一、复合选择器 1.后代选择器 2.子代选择器 3.并集选择器 4.交集选择器 5.伪类选择器 1.伪类-超链接&#xff08;拓展&#xff09; 二、CSS特性 1.继承性 2.层叠性 3.优先级 1.优先级-叠加计算规则 2.emmet写法 三、背景属性 1.背景图 ​编辑2.背景图平铺方…

JDK和CGLIB动态代理原理

动态代理会在程序运行时&#xff0c;自动的为原对象生成一个代理对象。该代理对象的方法会有逻辑上的增强&#xff0c;其一方面会执行增强的逻辑&#xff0c;另一方面其实就是通过反射调用被代理类的方法&#xff0c;这个调用过程跟静态代理就很像了。 JDK动态代理Demo如下&…

day04.C++库函数(常用)

目录 一.常用数学函数 #include / #include 二.常用字符串处理函数 #include / #include 2.1常见的内存函数&#xff1a; &#xff08;1&#xff09;memcpy库函数 (2)memcmp库函数 (3)memset 2.2字符串常见库函数 &#xff08;1&#xff09;strlen (2)strcpy 三、其他常…

【Transformer-Hugging Face 06/10】 数据预处理实例

目录 一、说明二、自然语言处理2.1 Pad2.2 截断2.3 构建张量 三、TensorFlow四、处理语音五、计算机视觉六、填充七、Multimodal 一、说明 在数据集上训练模型之前&#xff0c;需要将其预处理为预期的模型输入格式。无论您的数据是文本、图像还是音频&#xff0c;都需要将它们…

Vulnhub靶机:hacksudoAliens

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hacksudoAliens&#xff08;10.0.2.46&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhub.com…

Log360,引入全新安全与风险管理功能,助力企业积极抵御网络威胁

ManageEngine在其SIEM解决方案中推出了安全与风险管理新功能&#xff0c;企业现在能够更主动地减轻内部攻击和防范入侵。 SIEM 这项新功能为Log360引入了安全与风险管理仪表板&#xff0c;Log360是ManageEngine的统一安全信息与事件管理&#xff08;SIEM&#xff09;解决方案…

数字图像处理(实践篇)四十六 OpenCV-Python 目标定位(Features2D + Homography)

目录 一 单映射Homography 二 涉及的函数 三 实践 一 单映射Homography 在计算机视觉中,平面的单应性被定义为一个平面到另外一个平面的投影映射。 单映射Homography 就是将一张图像上的点映射到另一张图像上的对应点的3x3变换矩阵。从下图中可以看出&#x

深兰科技陈海波出席CTDC2024第五届首席技术官领袖峰会:“民主化AI”的到来势如破竹

1月26日&#xff0c;CTDC 2024 第五届首席技术官领袖峰会暨出海创新峰会在上海举行。深兰科技创始人、董事长陈海波受邀出席了本届会议&#xff0c;并作为首个演讲嘉宾做了题为“前AGI时代的生产力革命范式”的行业分享。 作为国内顶级前瞻性技术峰会&#xff0c;CTDC首席技术官…

国考省考行测:判断推理,论证逻辑

国考省考行测&#xff1a;判断推理&#xff0c;论证逻辑 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和…