`
ruilinruirui
  • 浏览: 1049903 次
文章分类
社区版块
存档分类
最新评论

一. Microsoft.NET开发平台的体系机构

 
阅读更多

1.将源代码编译成托管模块

托管模块是一个标准的 windows可移植可执行(PE)文件。该文件需要CLR才能执行,最终用户必须在字迹的机器上安装CLR。

  托管模块的组成部分:PE标头,CLR标头,元数据,中间语言IL代码。

  其中,元数据包含两种主要类型的表:描述在源代码中定义的类型和成员的表,描述源代码引用的类型和成员的表。其作用:

1) 元数据在编译时不需要头和库文件。编译器可直接同托管模块中读取元数据

2) 使用编辑器的intellisence功能分析元数据

2. 将托管模块组合为程序集

  程序集assembly是一个或多个托管模块或资源文件的逻辑分组。

3. 加载公共语言运行库CLR

  可以在System32目录下查找MSCoreEE.dll文件,来判断是否已经安装了.net框架。

4. 执行程序集代码

JIT编译器将IL编译成CPU指令。

  CLR提供了一个在OS进程中执行多个托管应用程序的功能,称为AppDomain。

5. 公共语言规范CLS

CLS定义了所有语言必须支持的最小特性集。

  在代码中,让编译器检查CLS兼容性

  [assembly:CLSCompliant(true)]

6. 非托管代码的互操作性

1) 托管代码可以调用DLL中的非托管函数,基于P/Invoke平台机制

   2)托管代码可以使用现有的COM组件

7. 打包部署

1)DLL地狱:当安装一个新的应用程序时,会发现它不知何故损坏了一个已安装的应用程序。

  仅仅用文件名区分程序集是不行的,因为两个可能重名,这样后安装的会覆盖掉前面安装的。必须使用强名称程序集。

   2) 若要让自己的程序集出现在 添加引用|.net选项卡中,可将下列子键添加到注册表中。

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/AssemblyFolders/MyLibName

MyLibName是我创建的名称,使其指向程序集文件的目录路径/MyLibPath

3)程序集版本资源信息

[assembly: AssemblyTitle("WinAppTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("EKING")]
[assembly: AssemblyProduct("WinAppTest")]
[assembly: AssemblyCopyright("版权所有 (C) EKING 2006")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("c27c97d5-2f66-4137-8b39-842b0a4d99c1")]

     程序集版本号由四部分组成:主版本,次版本,内部版本号,修订版本号

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

4)部署方式

   直接拷贝;生成msi文件;生成cab文件用于internet下载压缩文件

5)控件配置管理

Machine.config

对可执行exe程序:配置文件.exe.config

对web程序:根目录和子目录对应的配置文件Web.config

可以使用 管理工具->Microsoft.net 框架配置

8.共享程序集,全局程序集缓存GAC

1) 强名称程序集

  包括4个自定义属性,用以唯一区别程序集:文件名(无扩展名),版本号,区域性标识,公钥标记。如:

Mytypes,Version=1.3.6.1,Culture=neutral,PublicKeyToken=b77a5c561934e089

Mytypes,Version=2.0.3.5,Culture=neutral,PublicKeyToken=b77a5c561934e089

Mytypes,Version=1.3.6.1,Culture=neutral,PublicKeyToken=e03f5648ddfsdfsd59

采用公钥/私钥技术来区分不同公司开发的具有相同自定义属性的程序,公钥标记是公钥64位的 hash 值。

  System.Reflection.AssemblyName类,可以方便的获取程序集名的不同部分。

创建 强名称程序集的步骤:

第一步,获取一个密钥: SN -k Mytypes.keys

第二步,应用到源代码中,签名清单:

    [assembly: AssemblyKeyFile("Mytypes.keys")]

2) 全局程序集缓存GAC

  GAC的目的是存放一个程序集的多个版本。

  只有希望程序集被其他许多程序共享时,才建议将程序集部署到GAC中。

  如果一个程序集要被多个应用程序访问,程序集必须被放到一个公共目录中,并且当检测到对程序集的引用时,CLR必须自动查找此目录。这个公用位置称为GAC,通常在目录C:/WINNT/assembly中。

   安装工具 GACUtil /i

分享到:
评论

相关推荐

    亮剑.NET深入体验与实战精要2

    1.5 .NET开发几把小刀 52 1.5.1 using之多变身 52 1.5.2 @符号的妙用 54 1.5.3 预处理指令,有你更轻松 55 1.6 Visual Studio.NET 2008 实战 58 1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3...

    《ASP.NET程序设计实用教程》配套资料-cd, ppt

     本书适合作为高校及各类培训机构的动态网站编程教材或者教学参考书,也可以作为.NET自学人员和.NET开发人员的参考书。 <br> <br>前 言 <br> ASP.NET语言是目前应用开发中的核心语言,也是目前...

    ASP.NET在线测评系统

    主要基于Internet技术同时兼顾Window应用来实现软件的创建、部署、使用的.net框架是微软21世纪主推的开发平台,并且,也是微软下一代操作系统策略的核心。 相比于JAVA是一个标准,.Net是一个架构,它包含了在操作...

    亮剑.NET深入体验与实战精要3

    1.5 .NET开发几把小刀 52 1.5.1 using之多变身 52 1.5.2 @符号的妙用 54 1.5.3 预处理指令,有你更轻松 55 1.6 Visual Studio.NET 2008 实战 58 1.6.1 如何创建ASP.NET项目 58 1.6.2 如何创建Windows项目 61 1.6.3...

    rxjs-fruits:学习RxJS的游戏:red_apple::banana:

    他是大中型公司,组织和机构的顾问,他们使用C#和JavaScript进行软件体系结构,Web和跨平台开发。 他的主要方面是MEAN-Stack,ASP.NET-Core,Docker,Azure,域驱动设计和微服务。 此外,他还在为知名杂志撰写...

    桃源企业文件管理系统 3.2.rar

    《桃源企业文件管理系统》主要部署在windows操作系统基础上,安装前需装Microsoft.NET Framework SDK2.0、3.0或3.5(2003系统自带该组件),应用软件管理目录具有IIS及asp.net完全权限。 在上述系统应用环境中,部署...

    千博政府网站管理系统 v2014 Build0813

    千博政府网站管理系统是基于微软.Net2.0企业平台进行开发的新型电子政务管理系统。.Net 2.0平台的稳定性、安全性以及各种特殊性能一直被业界所公认。截止到2008年,世界百强企业有超过半数正在使用或已准备使用.Net...

    千博政府网站管理系统 v2013 Build1025

    千博政府网站管理系统是基于微软.Net2.0企业平台进行开发的新型电子政务管理系统。.Net 2.0平台的稳定性、安全性以及各种特殊性能一直被业界所公认。截止到2008年,世界百强企业有超过半数正在使用或已准备使用.Net...

    桃源企业文件管理系统 v3.3.zip

    作为一套专业的企业级网络软件,该软件依照微软技术架构体系,采用流行、成熟、安全的三层结构开发,有关产品的主要功能如下: 1、文件及目录操作:前台用户登录后可实现类似windows资源管理器的目录创建、删除和...

    桃源企业文件管理系统源码 v3.2

    作为一套专业的企业级网络软件,该软件依照微软技术架构体系,采用流行、成熟、安全的三层结构开发,有关产品的主要功能如下: 1、文件及目录操作:前台用户登录后可实现类似windows资源管理器的目录创建、删除和...

Global site tag (gtag.js) - Google Analytics