返回顶部
首页 > 资讯 > 精选 >C#程序集指的是什么
  • 674
分享到

C#程序集指的是什么

2023-06-17 23:06:49 674人浏览 安东尼
摘要

这篇文章主要为大家展示了“C#程序集指的是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#程序集指的是什么”这篇文章吧。一、C#程序集的一些基本概念:程序集是包含一个或多个类型定义文件和资

这篇文章主要为大家展示了“C#程序集指的是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#程序集指的是什么”这篇文章吧。

一、C#程序集的一些基本概念:

程序集是包含一个或多个类型定义文件和资源文件的集合。它允许我们分离可重用类型的逻辑表示和物理表示。

程序集是一个可重用、可实施版本策略和安全策略的单元。它允许我们将类型和资源划分到不同的文件中,这样程序集的使用者便可以决定将哪些文件打包在一起部署。一旦CLR加载了程序集中包含清单的那个文件,它就可以确定程序集的其他文件中哪些包含了程序正在引用的类型和资源。任何程序集的使用者仅需要知道包含清单的文件名称。文件的划分对使用者是透明的,并且可以在将来改变,同时又不会破坏现有应用程序的行为。

C#程序集的特性:

程序集定义了可重用的类型。

程序集标识有一个版本号。

程序集可以包含与之相关的安全信息。

二、多文件集:

使用多文件集的三个原因:

可以将类型分别实现在不同的文件中,从而允许文件在互联网环境中进行增量下载。

可以按需要向程序集中添加资源或数据文件。(数据文件可以是任何格式:文本文件、excel电子表格、Word表格、或者任何我们喜欢的格式)。

可以使我们创建的程序集包含一些用不同编程语言实现的类型。

注意:Visual Studio .net集成开发环境(Integrated development environment,简称IDE)本身不支持创建多文件程序集,如果需要创建多文件程序集,必须求助于命令行工具

两个源代码文件:Rut.cs (包含很少使用的类型)Fut.cs (包含经常使用的类型)

csc  /t:module Rut.cs           //生成Rut.netmodule文件  csc  /out:UNIOnType.dll  /t:library  /addmodule Rut.netmodule  Fut.cs    //生成UnionType.dll类库文件 Run.netmodule文件作为程序集的一部分来对待

三、程序链接器:

程序链接器:Assembly Linker 即AL.exe

使用前提:

如果我们要创建的程序集包含来自不同编译器生成的模块,而使用的编译器又不支持类似于C#中/addmodule那样的命令行开关,或者生成模块时还不知道程序集的打包需求,这时程序集链接器就显得非常有用。

使用实例:

csc /t:module Rut.cs   csc /t:module Fut.cs   al /out: UnionType.dll /t:library Fut.netmodule Rut.netmodule

四、资源文件的添加

1.使用csc.exe来添加资源文件:

/resource 将把指定的资源文件嵌入到产生的程序集PE文件中,并更新ManifestResourceDef表中的内容。

/linkresource 将向ManifestResourceDef和FileDef清单表中添加一条目,使其指向一个单独的资源文件。

2.使用AL.exe来添加资源文件:

/embed[resource]:该命令行接受任何类型的文件,将其内容嵌入到产生的PE文件中。同时,清单中的ManifestResourceDef表将被更新以反映该资源的存在。

/link[resource]:该命令将只更新清单中的ManifestResourceDef表和FileDef表,以反映资源的存在,并标识出程序集的哪个文件包含着资源文件。资源文件本身不会被嵌入到程序集PE文件中,它仍然保持独立,并且须和其它程序一起打包、部署。

3.将Win32资源嵌入到程序集中:

通过AL.exe或csc.exe添加/win32res命令行开关指定一个.res文件路径来实现。

通过AL.exe或csc.exe添加/win32icon命令行开关并指定一个.ico文件路径来实现。

五、C#程序集版本信息:

版本号由四个部分组成:主版本号、次版本号、生成版本号、修订版本号

例:2.5.719.2 主版本号与次版本号组成“面向公众”的版本部分,第三个版本号719表示程序集的生成版本,***一个版本号2表示对生成版本的修订版本。

一个程序集的三个相关版本号:

AssemblyFileVersion: 该版本号存储在Win32版本资源中,它仅仅是一个辅助性的信息。

AssemblyInfORMationalVersionAttribute:该版本号也存储在Win32版本资源中,仅辅助性作用。

AssemblyVersion:该版本号存储在AssemblyDef清单元数据表中。这个版本号非常重要,它用来惟一地标识一个程序集。

六、语言文化:

不提倡创建包含代码的卫星程序集,但还是有可能做到。如果我们愿意,仍然可以用System.Reflection.AssemblyCultureAttribute定制特性来代替AL.exe的/culture命令行开关来指定语言文化。示例如下:

//将程序集的语言文化设置为瑞士德语

[assembly :AssemblyCulture (“de-CH”)]

通常情况下,我们创建的程序集不应该引用卫星程序集。也就是一个程序集的AssemblyRef条目指向的都应该是语言文化中性的程序集。如果想访问一个卫星程序集中的类型或成员,我们应该使用反射技巧。

卫星程序集:标识着特定语言文件的程序集称为卫星程序集。

七、共享程序集:

1..NET框架支持的两种程序集:

弱命名程序集:Weakly named assembly

强命名程序集:Strongly named assembly

二者之间的真正区别在于:强命名程序集有一个发布者的公钥/私钥对签名,其中的公钥/私钥匙对惟一地标识了程序集的发布者。

强命名集包含四个惟一标识程序集的特性:文件名(没有扩展名)、版本号、语言文化标识和一个公有密钥标识。

例:”MyTypes,Version=1.0.8123.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”

2.强命名实用工具:

Strong Name Utility即SN.exe 和.Net框架SDK,以及Visual studio .Net一起发布的一个工具。

例:SN –k MyCompany.keys

该命令告诉SN.exe创建一个名为Mycompany.keys的文件。Mycompany.keys文件将包含一对以二进制格式存储的公有密钥和私有密钥。

查看公有密钥:(必须执行下面两步)

SN –p MyCompany.keys MyCompany.publickey

SN –tp MyCompany.publickey

创建强命名程序集:

[assembly: AssemblykeyFile ( “MyCompany.keys”)]

3.程序集的两种部署方式:即私有部署方式和全局部署方式

私有部署方式将程序集部署在应用程序的基目录及其子目录下,弱命名程序集只能进行私有部署。

全局部署方式将程序集部署在一些CLR确知的地方。强命名程序集既可以进行私有部署,也可以进行全局部署。

4.System.Reflection.AssemblyName类:

利用它,我们可以很容易地创建一个程序集名称,并获取一个程序集名称的各个部分。公有实例属性:如CultureInfo、FullName、KeyPair、Name以及Version.该类提供了几个公有实例方法,如GetPublicKey、GetPublicKeyToken、SetPublicKey、以及SetPublicKeyToken。

八、其他

元数据标识是一个4字节的数值,其高位字节表示标记的类型(0x01 = TypeRef ,0x02 =TypeDef, 0x26 = FileDef , 0x27 = ExportedType)

为使我们创建的C#程序集出现在.NET选项卡的列表中,可以将下面的子键添加到注册表中:HKEY_LOCAL_MacHINE\SOFTWARE\Microsoft\.NETFramework\

以上是“C#程序集指的是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: C#程序集指的是什么

本文链接: https://lsjlt.com/news/294489.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#程序集指的是什么
    这篇文章主要为大家展示了“C#程序集指的是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#程序集指的是什么”这篇文章吧。一、C#程序集的一些基本概念:程序集是包含一个或多个类型定义文件和资...
    99+
    2023-06-17
  • c编译程序指的是什么
    这篇文章给大家分享的是有关c编译程序指的是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。c编译程序又称c语言编译器,是指用c语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。c编译程序首先会检查源...
    99+
    2023-06-06
  • System.LINQ程序集是什么
    这篇文章主要讲解了“System.LINQ程序集是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“System.LINQ程序集是什么”吧!LINQ,即Language Integrated...
    99+
    2023-06-17
  • csrss.exe指的是什么程序
    这篇文章主要为大家展示了“csrss.exe指的是什么程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“csrss.exe指的是什么程序”这篇文章吧。csrss.exe是系统的一个正常进程,所在...
    99+
    2023-06-15
  • 小程序指的是什么
    小编给大家分享一下小程序指的是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!小程序是一种不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开应用;小程序体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题...
    99+
    2023-06-29
  • 360tray.exe指的是什么程序
    小编给大家分享一下360tray.exe指的是什么程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!360tray.exe是奇虎360公司出厂的360安全卫士木马...
    99+
    2023-06-08
  • 12306指的是什么小程序
    这篇文章将为大家详细讲解有关12306指的是什么小程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。12306是指“铁路12306”,是中国铁路客户服务中心推出的官方手机购票应用软件,而12306官方支付...
    99+
    2023-06-22
  • C#的程序结构是什么
    本篇内容主要讲解“C#的程序结构是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#的程序结构是什么”吧!C# 程序结构在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 ...
    99+
    2023-06-17
  • Redis集群指的是什么
    小编给大家分享一下Redis集群指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本文主要围绕如下几个方面介绍集群集群简介...
    99+
    2024-04-02
  • C++的程序流程结构是什么
    这篇文章主要介绍了C++的程序流程结构是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的程序流程结构是什么文章都会有所收获,下面我们一起来看看吧。前言C/C++支持最基本的三种程序运行结构:顺序结构、...
    99+
    2023-06-29
  • runtime broker程序指的是什么意思
    这篇文章给大家分享的是有关runtime broker程序指的是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。runtime broker是Windows8或10帮助Metro App进行权限管理的一个核...
    99+
    2023-06-08
  • C++中%指的是什么
    本篇内容主要讲解“C++中%指的是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中%指的是什么”吧!C++中的%的解释两种意思:1、格式化字符串输出2、整数取余目前printf支持以下...
    99+
    2023-07-05
  • jquery包装集指的是什么
    这篇“jquery包装集指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jquer...
    99+
    2024-04-02
  • C#类中方法执行顺序指的是什么
    小编给大家分享一下C#类中方法执行顺序指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!有些中级开发小伙伴还是搞不太明白在继承父类以及不同场景实例化的情况下...
    99+
    2023-06-15
  • C#概念指的是什么
    这篇文章给大家介绍C#概念指的是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#概念谈到C#入门我们首先来看看C#,它是是一种简洁、类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET Framewor...
    99+
    2023-06-17
  • C语言指的是什么
    小编给大家分享一下C语言指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!壹C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能...
    99+
    2023-06-29
  • microsoft visual c++指的是什么
    这篇文章将为大家详细讲解有关microsoft visual c++指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。microsoft visual c++是一些微软的组件,里面包括一些C++标准...
    99+
    2023-06-06
  • c助手指的是什么
    这篇文章主要介绍c助手指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!c助手是一款快捷回复、im辅助备注软件,支持QQ、微信、钉钉、旺旺,非采用内存读取等方式进行识别,分为用户画像和快捷输入两个功能模块。C助...
    99+
    2023-06-06
  • 计算机中解释程序指的是什么
    这篇文章主要介绍计算机中解释程序指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!解释程序是一种语言处理程序,在运行用户程序时,可以直接执行源程序或源程序的内部形式(中间代码)。解释程序的优点是:结构简单,易于...
    99+
    2023-06-14
  • C# Windows应用程序的方法是什么
    这篇文章主要介绍“C# Windows应用程序的方法是什么”,在日常操作中,相信很多人在C# Windows应用程序的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# Windows应用程序的方法...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作