CSharp(C#)语言_命名空间和程序集

引用其他程序集

  • 编译器接受源代码文件并生成名称为 程序集 的输出文件
  • 后缀.dll.exe
  • 在 Visual Studio 的 项目资源管理器中 右击 引用添加 引用相应的类库 / 程序集

命名空间

关键字: namespace
定义:命名空间是共享命名空间名的一组类和类型

命名空间名:

  • 你可以把命名空间名视为一个字符串,它加在类名或类型名的前面并且通过点进行分隔
  • 包括命名空间名、分隔点,以及类名的完整字符叫做类的 完全限定名

命名空间可以被嵌套

using指令

避免不得不使用的完全限定名:using命名空间指令 和 using别名指令
关于using指令的要点:

  • 必须在源文件的顶端,在任何类型声明之前
  • 应用于当前源文件中的所有命名空间

using System; //命名空间指令
using s = System; //using别名指令

程序集的结构

程序集不包含本地机器代码,而是公共中间语言代码。它还包含实时编译器(JIT)在运行时转换CIL到本机代码所需的一切,包含对它所引用的其他程序集的引用
扩展名通常为:.exe.dll

  • 程序集的清单包含以下几点:
    • 程序集名称标识符
    • 组成程序集的文件列表
    • 一个指示程序集中内容在哪里的地图
    • 关于引用的其他程序集的信息
  • 类型元数据部分包含该程序集中定义的所有类型的信息。这些信息包含关于每个类型要知道的所有事情
  • CIL部分包含程序集的所有中间代码
  • 资源部分是可选的,但可以包含图形或语言资源
    单文件程序集的结构

  程序集代码文件称为模块。尽管大部分程序集由单文件组成,但有些也有多个文件。对于有多个模块的程序集,一个文件是主模块(primary module),而其他的是次要模块(sccondary modules )

  • 主模块含有程序集的清单和到次要模块的引用
  • 次要模块的文件名以扩展名.nctmodule结尾
  • 多文件程序集被视为一个单一单元。它们一起部署并一起定版

多文件程序集

程序集标识符

  在.NET框架中,程序集的文件名不像在其他操作系统和环境中那么重要,更重要的是程序集的标识符(identity)

  • 程序集的标识符有4个组成部分,它们一起唯一标识了该程序集,如下所示:
    • 简单名 这只是不带文件扩展名的文件名。每个程序集都有一个简单名。它也被称为程序集名或友好名称(friendly name)
    • 版本号 它由4个句点分开的整数字符串组成,形式为MajorVersion.MinorVersion.Build.Revision,例如2.0.35.9
    • 文化信息 它是一个字符串,由2~5个字符组成,代表一种语言,或代表一种语言和一个国家或地区。例如,在美国使用英语的文化名是en-US。在德国使用德语,它是de-DE
    • 公钥 这个128字节字符串应该是生产该程序集的公司唯一的
        公钥是公钥/私钥对的一部分,它们是一组两个非常大的、特别选择的数字,可以用于创建安全的数字签名。公钥,顾名思义,可以被公开。私钥必须被拥有者保护起来。公钥是程序集的标识符的一部分

程序集标识符术语

强命名程序集

强命名程序集有一个唯一的数字签名依附于它。强命名程序集比没有强名称的程序集更安全

  • 强名称唯一标识了程序集。没有其他人能创建一个与之有相同名称的程序集,所以用户可以确信该程序集来自于其声称的来源
  • 没有CLR安全组件来捕获更改,带强名称的程序集的内容不能被改变

创建强命名程序集

要使用Visual Studio强命名一个程序集,必须有一份公钥/私钥对文件的副本。如果没有密钥文件,可以让Visual Studio产生一个。可以实行以下步骤:
(1)打开工程的属性
(2)选择签名页
(3)选择Sign the Assembly复选框并输入密钥文件的位置或创建一个新的
强命名程序集

程序集的私有方式部署

  在目标机器上部署一个程序就像在该机器上创建一个目录并把应用程序复制过去一样简单。如果应用程序不需要其他程序集(比如DLL),或如果所需的DLL在同一目录下,那么程序应该会就在它所在的地方良好工作。这种方法部署的程序集称为私有程序集,而且这种部署方法称为复制文件(XCopy)部署
  私有程序集几乎可以被放在任何目录中,而且只要它们依赖的文件都在同一目录或子目录下就足够了。事实上,可以在文件系统的不同部分有多个目录,每个目录都有同样的一组程序集,并且它们都会在它们各自不同的位置良好工作

  • 关于私有程序集部署的一些重要事情如下:
    • 私有程序集所在的目录被称为应用程序目录
    • 私有程序集可以是强命名的也可以是弱命名的
    • 没有必要在注册表中注册组件
    • 要卸载一个私有程序集,只要从文件系统中删除它即可

共享程序集和GAC

  私有程序集是非常有用的,但有时你会想把一个DLL放在一个中心位置,这样一个单独的复制就能被系统中其他的程序集共享。.NET有这样的贮藏库,称为全局程序集缓存(GAC)。放进GAC的程序集称为共享程序集

  • 关于GAC的一些重要内容如下:
    • 只有强命名程序集能被添加到GAC
    • GAC的早期版本只接受带.dlI扩展名的文件,现在也可以添加带.exe扩展名的程序集了
    • GAC位于Windows系统目录的子目录中。NET4.0之前位于\Windows\A.ssembly中,从NET 4.0开始位于\WindowsMicrosoft.NET assembly中
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在软件开发中,通常将功能模块按照职责划分为多个项目,每个项目属于一个程序。这种设计方法有助于模块复用、独立部署和代码维护。在这些项目中,可能会有一个单独的项目用来存放数据模型。以下是单独创建model程序的原因: 1. 数据模型是整个应用程序的核心,它包含了所有的数据结构和关系。将数据模型放在单独的程序中,可以使其他的项目更加清晰,而不需要关注模型的具体实现。 2. 在多个项目中使用相同的数据模型,可以减少代码重复,提高代码的可维护性和可重用性。 3. 数据库设计的变化不应该影响到应用程序的其他部分。将数据模型放在单独的程序中,可以确保像数据列的添加和删除等操作只会影响到数据模型程序,而不会影响到其他的程序。 4. 数据库访问代码通常需要手动编写,这种代码总是容易出错且重复性高。将数据模型放在单独的程序中,可以创建通用方法,使代码更加清晰且易于维护。 5. 数据模型程序可以具有独立的版本控制,这样可以控制在修改模型时对其他项目的影响。如果数据模型被放在其他项目中,每次修改时都需要在整个项目中进行更新和测试,这样可能会增加时间和成本。 综上所述,将数据模型放在单独的程序中可以提供更好的代码结构和可维护性,同时支持更好的版本控制和代码重用。这是软件开发过程中非常重要的方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑夜中的潜行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值