VS版本推荐:(2019,2022)
数据库版本推荐:SQLServer2012
项目类型:(控制台-->主要是学习用;窗体程序(windows、c/s、桌面应用)、web程序、web服务程序)
项目的组成:
【1】解决方案:主要是用来管理我们添加的各种项目。可以对解决方案内部的所有项目,统一编译。 开发一个项目:这个项目和我们说的“项目”不是一个概念。 我们在解决方案中的项目理解:一个类库、一个可启动程序,都可以称为一个项目。 一般一个解决方案,对应我们一个真实的“项目”。
【2】项目包括:类库、可启动程序(一般就是编译后是exe文件的,能够独立运行的,比如windows程序、web程序)
【3】程序集(Assembly):一个类库、一个可启动程序…都是程序集。
【4】模块:(针对开发角度)模块通常是按照功能划分组成的各个类库或可启动项。 一个模块:可能是一个类库。也可能是多个类库!也可能包括可启动项。
【5】引用:是将不同的类库或者程序集,关联到一块。这样的话,可以实现对另一个程序集的访问。
注意:引用只能是单向的,不能双向。(A引用B之后B是不能再引用A的) 引用的时候,高版本的程序集是可以引用低版本的程序集的。反之则不行。例如4.6版本的A引用4.6或者以下版本的B是可以的, 反之引用的程序集就会出现感叹号!
引用方法:通过右键添加引用,添加其他的更多扩展时可以通过nuget (尤其是在.NET Core的使用中,只有这一种方式)
【6】发布:在开发阶段我们一般使用debug,因为通过debug我们可以断点调试程序。在debug没有任何问题的情况下,再使用release发布。 两者的不同之处:debug调试生成会增加一些调试需要的信息,如果是大项目的话,生成的文件比较大。 release发布后,一般直接可以使用。尤其是web开发的时候。会做特殊优化。 比较特别的一点是,我们后面学习多线程的时候,我们讲过release会有bug!
请记住:解决方案中的每一个项目都有对应的debug和release文件夹。 当我们调试的或release的时候,每个对应的文件夹下面的文件都会自动更新。
编译后的文件分析
pdb后缀的文件与调试相关的,这个不用管。在UI对应的Debug文件夹里面会有项目的EXE、BLL、DAL、Models、DBUtility,其他的第三方的引入的dll或者相关的其他文件…
- BLL 文件夹内包含 BLL、DAL、Models、DBUtility
- DAL 文件夹内包含 DAL、Models、DBUtility
- DBUtility 文件夹内包含 DBUtility
- Models 文件夹内包含 Models
一个程序集在编译后生成的文件,首先包括他自己,其次包括他所引用的所有程序集。
当我们通过解决方案统一编译项目的时候,各个debug或release文件夹下面的文件都会被立即更新! 如果当我们程序调试过程中,由于你的调试的不正确等危险操作,导致这些文件不能立即更新,请自己手动删除 生成的所有文件即可。
【7】可启动项目的文件分析: dll exe:MisProject.exe MisProject.vshost.exe(VS开发阶段用的,最后开发完毕这个是没用的) 最后我们打包的时候,一般把项目可启动项目中release文件夹中的所有:dll文件、不带vshost的exe文件、 图片文件、其他的资源文件等,直接拷贝走就行了。
【8】第三方dll的引用:如果是.net开发的,直接引用。如果不是.net平台开发的(C\C++),请按照文档说明。 如果是.NET平台,不管你是用C#开发的,还是用VB.NET开发的,都可以自己引用。
项目生成分析
【1】dll和exe里面有什么?
注意:我们新建一个项目一般都会自动生成和项目名称一样的解决方案名称。
当然,我们可以自己单独创建一个空白解决方案,然后往里面添加需要的各种项目。
PS:当我们在一个项目中,引用其他项目,想使用里面的类,一定要在使用的地方,引入对应的命名空间。
通过使用ILDASM 工具查看,我们发现:
不管是C#开发的,还是VB.NET开发的,都会被首先编译成IL(微软中间语言)所以,C# 可以调用VB.NET开发的模块,反之亦然。不过需要注意的是:C# 和 VB语法不一样,但是IL中是一样的,为什么?因为有一个叫做CLS这样一个“语法翻译官”。两种不同的开发语言,数据类型看似不同,但是最后编译的IL都是.NET数据类型。
你好!不同国家翻译是不一样。入乡随俗!
【2】程序执行的过程
写代码-->调试后编译成IL-->编译程机器语言(其实是一个非常复杂的过程)
命名空间的使用 作用:就是用来对各种类进行管理。也就是一个类一定要归属于某一个特定的命名空间。 一个命名空间可以包括若干类。
namespace MyLibraryCSharp
{
public class TestB
{
public string Study()
{
return "我们正在学习C#开发技术!";
}
}
}
类必须在某一个命名空间下面。不能脱离命名空间!方法必须放到类里面。
命名空间的使用注意:
当我们引入一个程序集的时候,必须要同时添加using 命名空间,才能使用这个命名空间下面的类。不同的命名空间下面的类是允许同名的。当我们在一个类文件中,引入了不同的命名空间,但是如果这些命名空间中有相同的类名,我们必须通过完全限定名来使用,也就是:命名空间.类 这种方式,否则就会出现错误提示。
特别注意:类库项目是不能直接启动的。
作者:晨岩
本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!
暂无评论内容