网站首页 > 技术文章 正文
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 组件
- 1515℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 577℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 514℃MySQL service启动脚本浅析(r12笔记第59天)
- 487℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 470℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 450℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 448℃MySQL server PID file could not be found!失败
- 最近发表
-
- 宝塔面板Nginx如何提高网站访问速度?
- 接口调试工具ApiPost中form-data/x-www-form-urlencoded/raw区别
- 高并发场景下,Nginx性能如何提升10倍?
- 高并发场景下,Nginx如何抗住千万级流量?
- 浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf
- 为什么你的网站加载慢?90%的人忽略了这2个设置。
- 别再无脑复制Nginx配置了!掌握这10个"性能核弹"级参数
- 你的Nginx配置,可能就是你网站最慢的一环,注意这几个优化参数
- 深入浅出HTTP压缩技术(http2压缩)
- C程序设计之:1-1/2+1/3-... + 1/n 的和
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)