CodeSnippet.Cn
代码片段
Csharp
架构设计
.NetCore
西班牙语
kubernetes
MySql
Redis
Algorithm
Ubuntu
Linux
Other
.NetMvc
VisualStudio
Git
pm
Python
WPF
java
Plug-In
分布式
CSS
微服务架构
JavaScript
DataStructure
Shared
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(八)
0
.NetCore
Csharp
VisualStudio
小笨蛋
发布于:2021年04月10日
更新于:2021年04月10日
186
#custom-toc-container
**[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(一)](https://www.codesnippet.cn/home/list/16 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(一)")** **[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(二)](https://www.codesnippet.cn/home/list/17 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(二)")** **[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(三)](https://www.codesnippet.cn/home/list/18 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(三)")** **[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(四)](https://www.codesnippet.cn/home/list/19 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(四)")** **[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(五)](https://www.codesnippet.cn/home/list/20 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(五)")** **[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(六)](https://www.codesnippet.cn/home/list/21 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(六)")** **[通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(七)](https://www.codesnippet.cn/home/list/22 "通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(七)")** ### Visual Studio 在文章最后,我还要简单的说下Visual Studio。 通过上文得知,只需要一个txt记事本+csc.exe我们就可以开发出一个.NET程序,那么与之相比,.NET提供的开发工具VS有什么不同呢? 我们用记事本+csc.exe来编写一个.NET程序只适合小打小闹,对于真正要开发一个项目而言,我们需要文件管理、版本管理、一个好的开发环境等。而vs ide则就是这样一个集成代码编辑、编译、调试、追踪、测试、部署、协作、插件扩展这样多个组件的集成开发环境,csc.exe的编译功能只是vs ide中的其中之一。使用vside开发可以节省大量的开发时间和成本。 ### sln解决方案 当你用VS来新建一个项目时,VS会先为你新建一个整体的解决方案。这个解决方案表现为.sln和.suo后缀格式的文件,它们均是文本文件,对解决方案右键属性可以进行相应的修改,也可以直接用记事本打开。 在sln中,定义了解决方案的版本及环境,如包含的项目,方案启动项,生成或部署的一些项目配置等,你可以通过修改或重新定义sln来更改你的整个解决方案。 而suo则包含于解决方案建立关联的选项,相当于快照,储存了用户界面的自定义配置、调试器断点、观察窗口设置等这样的东西,它是隐藏文件,可删除但建议不要删除。 我们可以通过对比各版本之间的sln来修改sln,也可以使用网上的一些转换工具,也可以直接点击VS的文件-新建-从现有代码创建项目来让项目在不同VS版本间切换。 Visual Studio 2010 - # Visual Studio 4.0 Visual Studio 2012 - # Visual Studio 4.0 Visual Studio 2013 - # Visual Studio 12.00 Visual Studio 2015 - # Visual Studio 14 Visual Studio 2017 - # Visual Studio 15 #### 项目模板 VS使用项目模板来基于用户的选择而创建新的项目,也就是新建项目中的那些展示项(如mvc5项目/winform项目等等),具体表现为包含.vstemplate及一些定义的关联文件这样的母版文件。将这些文件压缩为一个 .zip 文件并放在正确的文件夹中时,就会在展示项中予以显示。 用户可以创建或自定义项目模板,也可以选择现有的模板,比如我创建一个控制台项目就会生成一个在.vstemplate中定义好的Program.cs、AssemblyInfo.cs(程序集级别的特性)、App.config、ico、csproj文件 ![图片alt](/uploads/images/20210605/153600-d648f389bac74d4db632a216f1283a49.png ''图片title'') #### csproj工程文件 这里面,csproj是我们最常见的核心文件,CSharp Project,它是用于构建这个项目的工程文件。 csproj是基于xml格式的MSBuild项目文件,其仍然是文本文件,可以打开并修改定义了的工程构造的属性,比如选择性的添加或删除或修改包含在项目中的文件或引用、修改项目版本、将其转换为其它类型项目等。 MSBuild是微软定义的一个用于生成应用程序的平台(Microsoft Build Engine),在这里为VS提供了项目的构造系统,在微软官方文档上有着详细的说明:https://msdn.microsoft.com/zh-cn/library/dd393573.aspx、https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild #### 项目属性杂项 现在,简单说明一下csproj文件的一些核心元素。我们用vs新建一个控制台项目,然后对项目右键属性打开项目属性,在应用程序页我们可以定义:程序集名称(生成出来的程序集以程序集名称作为文件名,相当于csc中的/out)、默认命名空间(每次新建类里面显示的命名空间)、目标框架、应用程序类型、程序集信息(AssemblyInfo中的信息)、启动对象(可同时存在多个Main方法,需指定其中一个为入口对象)、程序集资源(一些可选的图标及文件) 1.在生成页有: - 条件编译符号(全局的预编译#define指令,不用在每个文件头部定义,相当于csc中的/define) - 定义DEBUG/TRACE常量(用于调试输出的定义变量,如智能追踪的时候可以输出该变量) - 目标平台(指定当前面向什么处理器生成的程序集,相当于csc中的/platform。选择x86则生成的程序集生成32位程序,能在32/64位Intel处理器中使用。选择x64则生成64位,只能在64位系统中运行。选择Any CPU则32位系统生成32位,64位系统则生成64位。注意:编译平台和目标调用平台必须保持一致,否则报错。生成的32位程序集不能调用64位程序集,64位也不能调用32位)、首选32位(如果目标平台是Any CPU并且项目是应用程序类型,则生成的是32位程序集) - 允许不安全代码(unsafe开关,在c#中进行指针编程,如调换a方法和b方法的地址) - 优化代码(相当于csc中的/optimize,优化IL代码让调试难以进行,优化JIT代码) - 输出路径(程序集输出目录,可选择填写相对路径目录或绝对路径目录) - XML文档文件(相当于csc中的/doc,为程序集生成文档注释文件,浏览对方程序集对象就可以看到相关注释,VS的智能提示技术就运用于此) - 为COM互操作注册(指示托管应用程序将公开一个 COM 对象,使COM对象可以与托管应用程序进行交互) 2.在高级生成设置中有:语言版本(可以选择C#版本)、调试信息(相当于csc中的/debug。选择none则不生成任何调试信息,无法调试。选择full则允许将调试器附加到运行程序,生成pdb调试文件。选择pdb-only,自.NET2.0开始与full选项完全相同,生成相同的pdb调试文件。)、文件对齐(指定输出文件中节的大小)、DLL基址(起点地址) 3.在生成事件选项中可以设置生成前和生产后执行的命令行,我们可以执行一些命令。 4.在调试选项中有一栏叫:启用Visual Studio承载进程,通过在vshost.exe中加载运行项目程序集,这个选项可以增加程序的调试性能,启用后会自动在输出目录生成{程序集名称}.vshost.exe这样一个文件,只有当当前项目不是启动项目的时候才能删除该文件。 #### IntelliTrace智能追溯 还要介绍一点VS的是,其IntelliTrace智能追溯功能,该功能最早存在于VS2010旗舰版,是我用的最舒服的一个功能。 简单介绍,该功能是用来辅助调试的,在调试时可以让开发人员了解并追溯代码所产生的一些事件,并且能够进行回溯以查看应用程序中发生的情形,它是一个非常强大的调试追踪器,它可以捕捉由你代码产生的事件,如异常事件、函数调用(从入口)、ADO.NET的命令(Sql查询语句...)、ASP.NET相关事件、代码发送的HTTP请求、程序集加载卸载事件、文件访问打开关闭事件、Winform/Webform/WPF动作事件、线程事件、环境变量、Console/Trace等输出... 我们可以通过在调试状态下点击调试菜单-窗口-显示诊断工具,或者直接按Ctrl+Alt+F2来唤起该功能窗口。 ![图片alt](/uploads/images/20210605/153703-83b25e7d35004ceba7df1ea530f74bc4.png ''图片title'') 当然,VS还有其它强大的功能,我建议大家依次点完 菜单项中的 调试、体系结构、分析这三个大菜单里面的所有项,你会发现VS真是一个强大的IDE。比较实用且方便的功能举几个例子: 比如 从代码生成的序列图,该功能在vs2015之前的版本可以找到(https://msdn.microsoft.com/en-us/library/dd409377.aspx 、https://www.zhihu.com/question/36413876) ![图片alt](/uploads/images/20210605/153721-8a1ed7b85d074374a1be16a6c6607167.png ''图片title'') 比如 模块关系的代码图,可以看到各模块间的关系 ![图片alt](/uploads/images/20210605/153731-c6f48ea56f6646b78cb658cd67c1ab23.png ''图片title'') 比如 对解决方案的代码度量分析结果 ![图片alt](/uploads/images/20210605/153743-5b70e11b3d244bce8495882c0dba532a.png ''图片title'') 比如 调试状态下 函数调用的 代码图,我们可以看到MVC框架的函数管道模型 ![图片alt](/uploads/images/20210605/153756-2fb5377f632c4233b92fcc9dd246c985.png ''图片title'') 以及并行堆栈情况、加载的模块、线程的实际情况 ![图片alt](/uploads/images/20210605/153810-2e241caa32894d73b2a2bdbd313888de.png ''图片title'') ![图片alt](/uploads/images/20210605/153818-76632be1a6034f47a5db7e5dfc213744.png ''图片title'') 还有如进程、内存、反汇编、寄存器等的功能,这里不再一一展示 #### 链接 - 有关解决方案:https://msdn.microsoft.com/zh-cn/library/b142f8e7(v=vs.110).aspx - 有关项目模板: https://msdn.microsoft.com/zh-cn/library/ms247121(v=vs.110).aspx - 有关项目元素的说明介绍:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/16satcwx(v%3dvs.100) - 有关调试更多内容:https://docs.microsoft.com/zh-cn/visualstudio/debugger/ - 有关代码设计建议:https://docs.microsoft.com/zh-cn/visualstudio/code-quality/code-analysis-for-managed-code-warnings - 有关IntelliTrace介绍:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/dd264915(v%3dvs.100) ### 建议 我热爱编程。 我知道大多数人对技术的积累都是来自于平常工作中,工作中用到的就去学,用不到就不学,学一年的知识,然后用个五六年。 我也能理解人的理想和追求不同,有的人可能就想平淡点生活。有的人可能是过了拼劲,习惯了安逸。有的人已经认命了。 而我现在也每天饱满工作没多少时间,但在下班之余我仍然坚持每天都看一看书。 想学没时间学,想拼不知道往哪拼。有埋汰自己脑袋笨的,有说自己不感兴趣的。有明明踌躇满志,但总三天捕鱼两天晒网的。我身边的朋友大多都这样。 我想说,尽管我们每个人的境遇、思想、规划不同,但我肯定大家大部分是出于生计而工作。 而出于生计,那就是为了自己。而既然是为了自己,那就别每天浑浑噩噩过,即使你因各种原因而没有斗志。 编程来不得虚的,如果你没走上管理,那么你的技术好就是好,不好就是不好,混不得,一分技术一分钱。自己不扎实,你运气就不可能太好。 技术是相通的,操作系统、通信、数据结构、协议标准、技术规范、设计模式,语言只是门工具。要知其然也要知其所以然,只知道1个梨+1个梨=2个梨,不知道1个苹果+1个苹果等于啥就悲剧了。 那怎样提升自己?肯定不能像之前那样被动的去学习了。 光靠工作中的积累带来的提升是没有多少。你不能靠1年的技术重复3年的劳动,自己不想提升就不能怨天尤人。 上班大家都一样,我认为成功与否取决于你的业余时间。你每天下班无论再苦都要花一个小时来学习,学什么都行,肯定能改变你的人生轨迹。 比如你每天下班后都用一小时来学一个概念或技术点,那么300天就是300个概念或者技术点,这是何等的恐怖。 当然,这里的学要有点小方法小技巧的。不能太一条道摸到黑的那种,虽然这样最终也能成功,并且印象还深刻,但是总归效率是有点低的。 比如你从网上下载个项目源码,你项目结构不知道,该项目运用技术栈也不太了解,就一点一点的开始解读。这是个提升的好方法,但这样很累,可以成功,但是很慢。见的多懂的少,往往会因为一个概念上的缺失而在一个细小的问题上浪费很长时间。或者说一直漫无目的的看博客来了解技术,那样获取的知识也不系统。 我的建议是读书,书分两类,一类是 讲底层概念的 一类是 讲上层技术实现的。 可以先从上层技术实现的书读起(如何连接数据库、如何写网页、如何写窗体这些)。在有一定编程经验后就从底层概念的书开始读,操作系统的、通信的、数据库的、.NET相关组成的这些... 读完之后再回过头读这些上层技术的书就会看的更明白更透彻,最后再琢磨git下来的项目就显得轻松了。 现在技术发展很快,我建议大家有基础的可以直接看官方文档,(详细链接我已经在各小节给出)以下是部分常用总链接: - asp.net指南:https://docs.microsoft.com/zh-cn/aspnet/#pivot=core - Visual Studio IDE 指南:https://docs.microsoft.com/zh-cn/visualstudio/ide/ - C# 指南: https://docs.microsoft.com/zh-cn/dotnet/csharp/ - .NET指南:https://docs.microsoft.com/zh-cn/dotnet/standard/ - 微软开发文档:https://docs.microsoft.com/zh-cn/ 最后送给大家我经常做的两句话: 1.先问是不是,再问怎样做,最后我一定会问 为什么 2.没人比谁差多少,相信自己,坚持不断努力,你也能成功
这里⇓感觉得写点什么,要不显得有点空,但还没想好写什么...
返回顶部
About
京ICP备13038605号
© 代码片段 2024