欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    VisualStudio介绍.ppt

    • 资源ID:5576416       资源大小:3.23MB        全文页数:79页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VisualStudio介绍.ppt

    2023/7/29,1,Visual Studio.NET 简介,VS功能VS版本VS体系VS2008特性VS2008 UI介绍Demo演示参考文献,2023/7/29,2,VS功能介绍,2023/7/29,3,VS功能介绍(1),VS 功能Visual Studio 是一套完整的开发工具。VS2008 能创建的应用程序Visual Basic Visual Basic 6.0(1998)Visual C+Visual C+4.x 及以上Visual C#Visual Studio Web 设计器传统 ASP,2023/7/29,4,VS功能介绍(2),VC+项目ATLC+/CLIMFCWin32Smart Device,2023/7/29,5,VS功能介绍(3),C#项目(C Sharp,意为 C+)WinFormsWPFASP.NETOfficeWCFWF,2023/7/29,6,VS版本,内容版本及功能版本类型,2023/7/29,7,VS版本(1),VS两个系列(核心库)Visual Studio 6.0(Win 32 SDK)Visual Studio.NET(.NET Framework SDK).NET版本()VS2002(.NET Framework SDK 1.0)VS2003(.NET Framework SDK 1.1)VS2005(.NET Framework SDK 2.0/3.0)VS2008(.NET Framework SDK 3.5)VS2010(.NET Framework SDK 4.0),2023/7/29,8,VS版本(2),VS 2008 标准版VS2008.Express.Edition(Chs)速成版:安装方便,适合学习之用或单语言快速开发。功能有限。专业版:功能完善,适合个人开发者团队版(用于开发人员)软件生命周期协同管理和性能分析VS2008.Team.Suite.DVD 团队版(集成套件)集成了for Software Architects、for Software Developers、for Software Testers所有功能的最强大的版本。团队版(服务器端):团队版系列产品均可连接此服务器端,在服务器保存程序数据,协调开发工作。,2023/7/29,9,VS体系,内容VS技术VS结构NET Framework 环境编译过程,2023/7/29,10,.NET技术路线,2023/7/29,11,.NET 结构,.NET包括四个组成部分虚拟对象系统元数据通用语言规范虚拟执行系统,2023/7/29,12,.NET 结构虚拟对象系统,概念VOS(virtual object system)VOS支撑着.net跨语言集成的特性。问题不同语言类型系统之间的相容性。机制VOS提供一个类型丰富的系统来容纳它所支持的各种语言的特性。VOS屏蔽了不同语言类型系统间的转换。,2023/7/29,13,.NET 结构-虚拟执行系统,概念VES(Visual Execution System)VES是VOS的实现,用来驱动运行环境。作用装入中间代码(MSIL)。使用JIT将MSIL转换为本地代码(native code)。装入元数据。代码管理服务(gc和exception)。定制与调试服务。线程和环境管理。,2023/7/29,14,.NET 结构元数据,概念Metadata描述数据的数据元数据是CLI组件合同的描述载体,组件平台的“黏合剂”。CLI元数据类型定义型元数据-代码中定义了什么引用型元数据代码中引用了什么特性Attributes扩展定义新的元数据作用编译器Metadata Class Loader JIT 智能提示,2023/7/29,15,.NET 结构-通用语言规范,概念CLS(Common Language Specification)CLS是CLR定义的语言特性集合。CLS主要用来解决互操作问题。相关术语CLICTS,2023/7/29,16,各种术语关系,2023/7/29,17,通用类型系统CTS,值类型ValueType 类引用类型Object 类,2023/7/29,18,CTS-类型,值类型 值类型直接包含它们的数据。值类型的实例要么在堆栈上,要么内联在结构中。值类型可以是内联的、用户定义的或枚举的。引用类型存储对值的内存地址的引用,位于堆上。是自描述类型(类/数组)、指针类型或接口类型。类类型是用户定义的类、装箱的值类型和委托。区别作为值类型的变量,每个都有自己的数据副本,因此对一个变量的操作不会影响其他变量。作为引用类型的变量可以引用同一对象;因此对一个变量的操作会影响另一个变量所引用的同一对象。,2023/7/29,19,CTS-值类型,2023/7/29,20,.NET Framework环境,简单的开发和部署统一的编程模型支持多种编程语言丰富的类库支持,2023/7/29,21,架构、语言、工具,2023/7/29,22,统一的编程模型,Windows API,2023/7/29,23,公共语言运行库CLR,概念Common Language Runtime负责执行托管代码过程.cpp等源文件 编译成 MSIL,它定义了要由CLR执行的指令。CLR中的编译器将MSIL编译成在特定平台上运行的机器码。创建出独立的应用程序。两步走确保不同的操作系统之间的可移植性语言之间的互操作性 MSIL执行期间的管理特性(内存管理和安全管理),2023/7/29,24,公共语言运行时,Class Loader,MSIL到本地代码编译器,Code Manager,垃圾收集器,安全引擎,调试,Type Checker,异常管理,线程支持,COM Marshaler,.NET Framework 类库支持,2023/7/29,25,公共语言运行-总结,公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务。运行库实现通用类型系统(CTS)运行库解决了两个最常见的应用程序错误:内存泄漏和无效内存引用。运行库简化了各种开发语言之间的互操作。运行库从不解释托管代码,而是通过实时(JIT)编译来生成本机代码。代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码,2023/7/29,26,编译和执行,源代码,编译,中间代码,元数据,2023/7/29,27,编译执行,2023/7/29,28,代码执行过程编译器,语言编译器Visual Basic vbc.exe C#csc.exeVisual C+-cl.exe JScript jsc.exe 第三方编译器(Eiffel、Perl、COBOL)公共语言运行库CLR是一个多语言执行环境。语言编译器将确定可用的运行库功能。,2023/7/29,29,代码执行过程中间语言,MSIL(Microsoft Intermediate Language)当编译为托管代码时,编译器将源代码翻译MSIL。MSIL可以有效地转换为本机代码且独立于 CPU 的指令。MSIL 汇编程序(ILdasm.exe)IL Disassembler。MetaData当编译器产生 MSIL 时,它也产生元数据。元数据描述代码中的类型,包括每种类型的定义、每种类型的成员的签名、代码引用的成员和运行库在执行时使用的其他数据。PE(Portable Executable 可移植可执行)文件通用对象文件格式(COFF)PE文件格式包含 MSIL 或本机代码以及元数据。PE使得操作系统能够识别公共语言运行库映像。PE文件中的元数据以及 MSIL 的存在使代码能够描述自身。,2023/7/29,30,代码执行过程,将MSIL编译为本机代码,两种编译器:.NET Framework 实时(JIT just-in-time)编译器。实时编译器将 MSIL 转换为特定于 CPU 的代码。CLR为它支持的每种计算机结构都提供了一种或多种 JIT 编译器。同一组 MSIL 可以在所支持的任何结构上 JIT 编译和运行。.NET Framework 本机映像生成器(Ngen.exe)它在应用程序运行之前而不是运行过程中执行从 MSIL 到本机代码的转换。它一次编译一个整个的程序集,而不是一次编译一个方法。它将本机映像缓存中生成的代码以文件的形式持久保存在磁盘上。,2023/7/29,31,VS2008特性,设计目标在Windows Server 2008,Vista和office 2007下最好的开发工具集。功能特性AzureWPF、WCP、WWF、CardSpaceLinQ、Ajax,2023/7/29,32,VS2008 UI介绍,内容VC+发展UI 设计C+/CLI语言集成/互操作,2023/7/29,33,Visual C+.NET,C-20世纪70年代(72年)BCPL和B标准CC+-20世纪80年代初C的一个超集标准CVisual C+-20世纪90年代初Microsoft对c+的一个特定的实现Microsoft Foundation ClassVisual c+.netMC+C+/CLI,2023/7/29,34,Visual C+的版本与平台,2023/7/29,35,用Visual C+.NET的开发范围,2023/7/29,36,VC+UI,VC+的UI设计MFC(C+)WinForms(C+/CLI、VB、C#)WPF(C#、VB)互操作ISO-C+MC+C+/CLIC#,2023/7/29,37,MFC,概念MFC库是类的一个庞大集合,作用是帮助Visual c+程序员创建功能强大的、基于Windows 的应用程序。用途常用来开发非托管代码。即不利用.NET Framework的代码。版本MFC 6.0-MFC7.0(.NET平台)趋势MFC-WinForm-WPF,2023/7/29,38,WinForm,概念一个windows窗体设计器,它是一个可视化编程工具,能极大地简化GUI和数据库编程。好处增强了软件的互操作性。不同语言的软件组建版本.net平台 2002、2003、2005、2008、2010趋势MFC-WinForm-WPF,2023/7/29,39,WPF,WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能首先,它清晰而又有效的将用户界面和程序实现分开。WPF使用一种基于XML的语言来定义用户界面从而完成上述的工作。这种语言被称为XAML,XML应用程序标记语言。其次,WPF使用一种基于向量而不是基于光栅的绘制引擎,这与的Windows的绘制引擎是截然不同的。,2023/7/29,40,比较(一),MFC生成本机代码,自然是很快。可是,消息循环,减缓了界面显示速度。winForm封装了 win32 的api,多次进行P/invoke 操作(大部分使用p/invoke操作封装),速度慢。WPF是一种新的模型,不再使用win32 模型,自己新建模型,使用dx 作为新的显示技术,直接访问驱动程序,加快了运行速度,可是,这种模型,需要支持dx 9 的显卡,硬件要求高。,2023/7/29,41,比较(二),开发效率上MFCWPFwinForm用MFC开发成本太高,对开发者能力要求更高.界面执行效率上MFC=WPFwinform随着计算机硬件的性能提高,多核cpu的普及,它们的差距会越来越小开发灵活性上WPFMFCwinForm美观上WPFwinFormMFC内存使用上WPFwinFormMFC使用范围WPFMFC=winForm,2023/7/29,42,C+/CLI语言,第一个C+/CLI程序C+/CLI托管对象模型ISO-C+与C+/CLI的集成,2023/7/29,43,第一个C+/CLI程序,inclued预编译指令指示编译器将一个指定文件的内容视为已经插入当前位置,并替换掉inclued语句。Stdafx.h它是由VS 生成的,引用了许多有用的、现成的代码#using预处理器指令应用了预包装的代码单元如mscorlib.dll将数据(.dll)导入到一个程序#usingusing指令声明申明程序要使用的命名空间,2023/7/29,44,第一个C+/CLI程序,追踪句柄 VS.指针*String msg;/C+/CLI版string*pMsg;/ISO-C+版分析追踪句柄是指向“托管堆上一个完整的对象”的指针为什么不直接采用ISO-C+指针的表示法?内容决定形式,形式反映内容垃圾收集导致对象地址的不稳定。指针的变化主要是由于托管堆的引入,所有牵扯到托管堆的指针都改变了形态和语义。,2023/7/29,45,第一个C+/CLI程序,gcnew VS.newmsg=gcnew String(Hello,World!);pMsg=new string(Hello,World!);delete msg?/仅仅用来调用析构函数以释放非托管资源,托管内存资源交由垃圾收集器负责(调用可选)delete pMsg/不仅用来调用析构函数,同时也用来施放对象内存(必须调用,否则造成内存泄漏),2023/7/29,46,C+/CLI语法,C+MC+C+/CLIMC+声明Public _gc class Person/引用类Public _value class Vector/值类Public _interface IMyFile/接口类C+/CLI声明Public ref class ManagedPerson/托管类Publci value class VectorPublic interface class IMyFilePublic class NativePerson/本地类Public enum class E,2023/7/29,47,C+/CLI托管对象模型,概念对象模型C+/CLI对象模型本地C+对象模型程序存储区代码区静态数据区动态数据区(堆和栈)C+/CLI指针追踪句柄内部指针固定指针,2023/7/29,48,对象模型,概念是类型实例在机器(虚拟机)中的表示形式上体现为指针作用对象模型是深刻认识现代面向对象、组件编程语言的根本。C+/CLI对象模型、本地C+对象模型,2023/7/29,49,堆,概念堆又名自由存储区。系统用链表来存储的空闲内存地址链。大小受限于计算机系统中有效虚拟内存。对象生命周期不会随方法执行完毕而消亡。优缺点由new 分配的内存,速度较慢。容易产生内存碎片,但使用方便。分类托管堆本地堆,2023/7/29,50,托管堆VS本地堆,本地堆本地堆是相对于.NET中的托管堆而言的。本地堆上的对象生命周期全部由程序员负责。在C+中表现为new操作符和delete操作符。托管堆托管堆上的对象生命周期部分地由垃圾收集器负责。在VC+2005及以上版本中可以用gcnew来在托管堆上为对象分配内存。对象内存的释放需要由垃圾收集器来负责。程序员也可以手动释放内存。,2023/7/29,51,栈,概念由编译器自动分配与释放。一块连续的存储空间,2M。线性结构(栈)。存放的对象式 函数的参考值,局部变量等。栈的剩余空间大于所申请空间,系统将为程序提供内存。栈上的对象生命周期一般比较短。方法执行结束后,栈会被清空,其上所有的对象都会随之而消亡。优缺点由系统自动分配,速度较快,程序员无法控制。,2023/7/29,52,栈对象的分配,ManagedClass myObject;在ISO-C+中,myObject被分配于栈上(?)在C+/CLI中,myObject的分配依赖于类型系统:值类型(value class):分配在栈上.引用类型(ref class):分配在托管堆上引用类(ref)和值类的区别它们的存储位置不同。值类型实例直接包含实例数据,通常位于方法的栈上,它们会随着方法调用后栈空间的消亡,而自动清除。引用类型实例则位于托管堆上,要想访问它们必须通过间接的追踪句柄来访问,其生命周期是全局性的,对象的释放由垃圾收集服务负责。值类型可以通过装箱和拆箱操作来在栈和托管堆上进行转换。,2023/7/29,53,栈对象的消亡,ManagedClass myObject;在ISO-C+中,在清空栈空间时,会自动调用ManagedClass的析构函数,并且myObject在栈上的空间也随之被释放在C+/CLI中,在清空栈空间时,也会自动调用ManagedClass的析构函数,但myObject要视ManagedClass的类型来定,如果是value class,那么其空间会随之被释放;如果是ref class,那么其在托管堆上的内存要交给垃圾收集器来处理,2023/7/29,54,CLI对象模型内存分配,2023/7/29,55,C+/CLI指针,指针类型追踪句柄tracking handle“托管堆上一个完整对象(whole object)”的引用内部指针Interior pointer包含本地指针,本地指针的超级固定指针Pinning pointer,2023/7/29,56,追踪句柄,说明内存中占用8字节4字节TypeHandle 4字节SyncblkIndex,2023/7/29,57,内部指针,内部指针托管堆上内部对象的地址IL提供了这种表示,C#没提供C+/CLI为系统级语言,可以指向引用句柄值类型或者装箱值类型句柄托管类型内部成员托管数组内部元素,2023/7/29,58,固定指针,说明Gc搬移对象参数传递时启动gc时出现问题采用固定指针告诉gc这块区域不可以搬移,可以指向与内部指针相同,2023/7/29,59,对象内存分配情况,2023/7/29,60,C+/CLI与ISO-C+的集成,C+/CLI集成技术简介代码/函数的集成对象模型的集成,2023/7/29,61,C+/CLI非托管互操作,C+/CLI支持三个级别地代码重用.NET框架支持的模块级的重用P/Invoke调用DLL中的unmanaged函数适合于只有DLL而没有源代码的情况组件级的重用COM互操作TIBimp.exeC+/CLI单独支持的互操作源代码级的重用C+interop,2023/7/29,62,一些有关C+/CLI的问题,一个CLI托管类型能够继承一个本地类型?一个CLI托管数组能够有多个本地类型实例?一个本地类型能够实现多个CLI接口?一个本地类型能够使用CLR的垃圾收集服务?一个在ISO-C+中抛出的异常能够在CLI中被捕获?。,2023/7/29,63,C+/CLI中集成技术,这些问题的答案实际上就是C+/CLI的集成技术所做的选择。C+/CLI对于ISO-C+采取了“集成”而非“替换”的策略,为基于ISO-C+的静态程序设计和基于CLI的动态程序设计建立一座互通互联的桥梁。C+/CLI的集成既不是让CLI全盘替换ISO-C+,也不是将两者全盘融合,亦不是让二者完全孤立并存,而是有所为,有所不为的融合集成。,2023/7/29,64,C+/CLI中集成的几个方面,代码和函数的集成变量、表达式、操作符号、类型转换、语句、异常、函数调用类型的集成类型继承、类型修饰、类型成员、构造与析构、参数化类型(模板、泛型)对象模型的集成内存管理、对象包含、对象布局、对象多态、指针与引用,2023/7/29,65,最简单的一个集成,inclued预编译指令指示编译器将一个指定文件的内容视为已经插入当前位置,并替换调inclued语句。Stdafx.h它是由VS 生成的,引用了许多有用的、现成的代码#using预处理器指令应用了预包装的代码单元如mscorlib.dll将数据(.dll)导入到一个程序#usingusing指令声明申明程序要使用的命名空间,2023/7/29,66,C+/CLI 与ISO-C+形式区别,ISO-C+,C+/CLI,2023/7/29,67,IJW(it just works)技术,IJW技术保证了所有的ISO-C+代码经过CL/CLI编译后行为保持不变在将ISO-C+代码和CLI代码混合时,IJW技术同样保证ISO-C+代码的行为保持不变绝大多数ISO-C+代码编译后将得到托管代码,即IL代码。部分不能编译为IL代码的采用P/Invoke调用实现IJW使用IL代码来表达ISO-C+语言的行为,2023/7/29,68,代码演示(1),用CL/CLR编译ISO-C+代码代码编译过程汇编,2023/7/29,69,代码演示(2),用CL/CLR编译混合代码代码编译过程汇编(actor/new),2023/7/29,70,代码演示(3),异常处理的集成代码编译过程汇编(filter/catch),2023/7/29,71,本地类型的简单集成,IJW对简单类型采用透明的集成策略,所有ISO-C+中的简单类型在CLI中被同样对待,具有同样的行为。IJW将ISO-C+本地自定义类型编译为ValueType的子类型。IJW通过全局函数来实现ISO-C+本地类型的成员函数。IJW通过对类型实例中的位操作,来访问ISO-C中本地类型的数据成员。C+/CLI对类型集成采取比较保守的策略,ISO-C+类型系统和CLI类型系统仍然保持各自独立。,2023/7/29,72,代码演示(4),本地类型的简单集成代码编译过程汇编(静态方法、构造器、字段、new),2023/7/29,73,本地类型的混合集成,C+/CLI不支持本地类型和CLI托管类型之间的继承。C+/CLI不支持在本地类型上应用CLI托管类型所使用的修饰符。(sealed)C+/CLI不支持在本地类型上应用CLI Attribute.C+/CLI不支持在本地类型内添加CLI托管类型所具有的成员。(event)C+/CLI托管类型的构造和析构语义有所变化C+/CLI支持在托管类型上使用ISO-C+的静态模板机制,但不支持在本地类型上使用CLI的动态泛型机制。,2023/7/29,74,对象内部机制的集成,C+/CLI只支持对托管引用类型进行垃圾收集服务,不支持对ISO-C+本地类型的垃圾收集服务。C+/CLI中的托管类型的内存布局和本地类的内存布局有明显的不同。C+/CLI中类型的多态机制(虚拟)也和本地类的多态机制不同。,2023/7/29,75,对象模型结构的集成,C+/CLI目前不支持在托管对象中内嵌本地对象。C+/CLI目前不支持在本地对象中内嵌托管对象。C+/CLI支持直接在托管对象中内嵌本地对象的指针。C+/CLI支持 间接地使用gcroot类 在本地对象内嵌托管对象地指针。,2023/7/29,76,代码演示(5),在托管对象中内嵌本地对象地指针代码编译过程汇编(封装c+到c#)在本地对象内嵌托管对象地指针(gcroot)代码编译过程汇编(提供丰富功能),2023/7/29,77,C+/CLI总结,使用C+Interop,可以将非托管的C+代码与托管的C+/CLI代码放在同一个文件中编译,互相之间进行无缝的访问。生成文件为一个包含非托管机器指令和MSIL指令的混合程序集,它们之间的调用采用P/Invoke。绝大多数非托管代码被编译为托管MSIL指令,并通过全局函数调用来完成互操作。C+本地类型被编译为value class,成员函数被编译为全局函数,数据成员则通过位操作来访问和赋值。通过MSIL和相关的元数据来实现C+本地对象模型。,2023/7/29,78,Demo演示,WinFormMaskedTextBoxListView_TreeViewAntiAliasDoubleBuffersimpleIEmyWorkPadimageWPF阴影计算器后台线程,2023/7/29,79,参考文献,MSDN中文网站MSDN中文网络广播http:/china微软中文技术论坛MSDN免费中文速递邮寄MSDN开发中心MSDN图书中心,

    注意事项

    本文(VisualStudio介绍.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开