什么是.NET程序集?我在网上浏览了一下,我不明白这个定义。
当前回答
在.Net中,程序集可以是:
各种可管理部件的集合,其中包含类型(或 类),资源(位图/图像/字符串/文件),命名空间, 私有或公开编译的配置文件;部署到 本地或共享(GAC)文件夹;可被他人发现 项目/程序集和;可以进行版本控制。
其他回答
汇编是. net框架编程的基本部分。 它包含CLR在可移植可执行文件中执行MSIL(Microsoft中间语言)代码的代码,如果它没有关联的程序集清单,将不会执行。
程序集是构成逻辑功能单元的类型和资源的集合。.NET Framework中的所有类型都必须存在于程序集中;公共语言运行库不支持程序集之外的类型。每次使用Visual Basic . net创建Microsoft Windows®应用程序、Windows服务、类库或其他应用程序时,您都在构建单个程序集。每个程序集都存储为.exe或.dll文件。
来源:https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4
对于像我这样有Java背景的人来说,希望下面的图表能够阐明概念
程序集就像jar文件(包含多个.class文件)。您的代码可以引用现有的程序集,或者您的代码本身可以作为程序集发布,以供其他代码引用和使用(您可以将其视为Java中的jar文件,可以添加到项目依赖项中)。
最后,程序集是可以在任何安装了CLR的操作系统上运行的编译代码。这就相当于说.class文件或捆绑的jar可以在任何安装了JVM的机器上运行。
除了公认的答案,我还想给大家举个例子!
例如,我们都在使用
System.Console.WriteLine()
但是System.Console.WriteLine的代码在哪里? 哪个代码是实际将文本放到控制台上的?
如果你看一下Console类文档的第一页,你会在顶部附近看到以下内容: 这表明控制台类的代码位于名为mscorlib的程序集中。程序集可以包含多个文件,但在本例中,它只有一个文件,即动态链接库mscorlib.dll。
mscorlib.dll文件在。net中非常重要,它是。net中类库的主要DLL,它包含了所有基本的。net类和结构。
如果你懂C或c++,通常你需要一个#include指令在顶部引用一个头文件。包含文件为编译器提供函数原型。相反,c#编译器不需要头文件。在编译过程中,c#编译器直接访问mscorlib.dll文件,并从该文件中的元数据中获取有关其中定义的所有类和其他类型的信息。
c#编译器能够确定mscorlib.dll确实在名为System的命名空间中包含一个名为Console的类,该类具有一个名为WriteLine的方法,该方法接受一个字符串类型的参数。
c#编译器可以确定WriteLine调用是有效的,并且编译器在可执行文件中建立对mscorlib程序集的引用。
默认情况下,c#编译器将访问mscorlib.dll,但对于其他dll,你需要告诉编译器类所在的程序集。这些被称为引用。
我希望现在明白了!
Charles pitzold
看到这个:
在Microsoft .NET框架中,程序集是用于部署、版本控制和安全的部分编译代码库
程序集是.net应用程序的最小部署单元。 它可以是一个dll或exe。 主要有两种类型:
私人组装: dll或exe只是一个应用程序的唯一属性。它通常存储在应用程序根文件夹中 公共/共享组装: 它是一个可以同时被多个应用程序使用的dll。共享程序集存储在GAC中,即全局程序集缓存。
听起来困难吗?Naa…… GAC就是C:\Windows\Assembly文件夹,在这里您可以找到安装在PC上的所有软件的公共程序集/dll。
还有第三种也是最不为人知的装配类型:卫星装配。 附属程序集只包含静态对象,如图像和应用程序所需的其他非可执行文件。
推荐文章
- 为什么不是字符串。空一个常数?
- 为什么我不能在c#中有抽象静态方法?
- Nuget连接尝试失败“无法为源加载服务索引”
- net HttpClient。如何POST字符串值?
- 我如何使一个方法的返回类型泛型?
- 何时处理CancellationTokenSource?
- 如何获取正在执行的程序集版本?
- AutoMapper vs valueinjector
- 为什么控制台不。Writeline,控制台。在Visual Studio Express中编写工作?
- 什么是.NET程序集?
- 字符串不能识别为有效的日期时间“格式dd/MM/yyyy”
- 函数应该返回空对象还是空对象?
- 如何转换日期时间?将日期时间
- 如何在c#中连接列表?
- 在c#中引用类型变量的“ref”的用途是什么?