网站首页 > 技术文章 正文
1. 编译
对于编写好的代码,我们称为之源代码,源代码都是文本内容,使用简单的记事本就可以编辑,只不过编写效果比较差,也没有任何提示,编码速度也非常的慢。
而使用专业的IDE开发工具,则会加速编码速度,并且还提供了许多的高级功能,让开发者尽情享受编码的快乐。
对于源代码,只有被编译器编译之后才可以运行,编译的过程就是对源代码进行内部解析,能让操作系统识别并运行起来。
1.1. 生成项目
对于.NET控制台应用程序的开发,我们使用的是VS2019开发工具,自带编译功能,可以直接将源代码编译,生成最终可供生产使用的软件程序。
在VS2019的解决方案资源管理器中,右击项目名称:
图34
在图34中可以点击“生成”或“重新生成”来编译当前项目的源代码,生成可执行的应用程序。
其实在上面我们使用的F5或“启动”按钮来运行应用程序,也存在一个编译的过程。
1.2. 查看组织文件
生成的最终应用程序文件,可以在文件资源管理器中查看:
图35
图35是右击解决方案名称出现的菜单,点击“在文件资源管理器中打开文件夹”,如图36所示:
图36
图36的各个文件和文件夹说明如下:
(1). *.sln文件:每个VS IDE工具创建的项目都存在一个解决方案名称.sln的文件,表示这是一个解决方案文件。
(2). *.cspro文件:每个解决方案下可以添加多个项目,每个项目都存在一个*.csproj文件。
(3). Program.cs:是一个类文件,是控制台应用程序的入口类,当然也可以修改成其它名称,但其中必须存在一个静态的Main()方法,静态是使用static关键字定义的。
(4). App.config:是一个应用程序的Xml配置文件,可以将一些经常改变的数据放在此文件中。
(5). bin:该文件用于存放编译生成的*.dll文件或调试相关的文件信息。
(6). obj:visual studio在编译过程中要生成一些中间文件,生成的这些中间文件就存放在obj文件夹中。obj文件夹下的Debug、Release文件夹分别存放调试版本、发布版本编译过程中生成的中间文件。编译完成后,这些文件就没什么用了,成为了垃圾,所以不用理会obj文件夹中的东西。
(7). Properties: Properties文件夹定义你程序集的属性、项目属性文件夹,一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息。
对于AssemblyInfo.cs类文件,在VS中双击“Properties”,如图37所示:
图37
图37就是对应用程序属性修改的可视化界面。
也可以打开AssemblyInfo.cs类文件修改:
图38
这些属性信息代表了应用程序的相关属性,可随软件产品一起给客户。
对于编译好的.NET控制台应用程序,都会存在一个扩展名为*.exe的可执行文件,该文件在Windows操作系统中,可以直接双击运行,可以放在任何的Windows系统上运行:
当我们直接按F5或启动按钮运行应用程序后,其实就存在一个编译的过程,是编译后再运行的,那行既然存在编译,就会存在*.exe文件,可以在如下路径找到:C:\Edu\Csharp\Yidosoft.Edu.Csharp.ConsoleApp\bin\Debug
重点是在bin\Debug目录下:
图39
现在双击图39的Yidosoft.Edu.Csharp.ConsoleApp.exe可执行文件,就可以运行控制台应用程序:
图40
其实这就是已经编译好的可执行文件,控制台应用程序比较简单,只需要将*.exe文件分发到别的电脑上就可以运行。
猜你喜欢
- 2024-09-27 微软发布 .Net Core 3.0 版重大更新,对开发者来说意味着什么?
- 2024-09-27 生信分析过程中这些常见文件的格式以及查看方式你都知道吗?
- 2024-09-27 .NET 各种混淆的含义、原理、实际效果和不同级别的差异
- 2024-09-27 Swashbuckle.AspNetCore3.0的二次封装与使用
- 2024-09-27 《Inside C#》笔记(十四)反射(c# dynamic 反射)
- 2024-09-27 Wasmer可以在各种操作系统上运行WebAssembly
- 2024-09-27 使用Fusion解析未引用的部分类型名称
- 2024-09-27 基于Log4Net组件快速实现日志记录
- 2024-09-27 Serilog源码解析——使用方法(sed源码)
- 2024-09-27 聊一聊被 .NET程序员 遗忘的 COM 组件
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)