Answers:
用更简单的术语来说:.NET运行时环境可以执行的一大堆(预编译)代码。.NET程序由一个或多个程序集组成。
.class
Java世界中的文件吗?
程序集是.net应用程序的最小部署单元。它可以是dll或exe。
它主要有两种类型:
私有程序集: dll或exe,仅是一个应用程序的专有属性。它通常存储在应用程序的根文件夹中
公共/共享程序集: 这是一个DLL,一次可以被多个应用程序使用。共享程序集存储在GAC中,即全局程序集缓存。
听起来很难?Naa ....
GAC只是C:\ Windows \ Assembly文件夹,您可以在其中找到PC中安装的所有软件的公共程序集/ dll。
还有第三种也是鲜为人知的组件类型:卫星组件。
附属程序集仅包含静态对象,例如图像和应用程序所需的其他非可执行文件。
希望这对读者有所帮助!
装配体
编译应用程序时,创建的MSIL代码存储在Assembly中。程序集既包括可以直接在Windows上运行的可执行应用程序文件,而无需任何其他程序(这些文件的扩展名为.exe),以及供其他应用程序使用的库(文件扩展名为.dll)。
除了包含MSIL,程序集还包括元信息(即,有关程序集中包含的信息的信息,也称为元数据)和可选资源(MSIL使用的附加数据,例如声音文件和图片)。元信息使程序集能够完全自我描述。您不需要其他信息即可使用程序集,这意味着您可以避免诸如未将所需数据添加到系统注册表中之类的情况,这在使用其他平台进行开发时通常会遇到问题。
这意味着部署应用程序通常就像将文件复制到远程计算机上的目录一样简单。由于目标系统上不需要任何其他信息,因此您可以从此目录运行可执行文件,并且(假设已安装.NET CLR)非常适合。
当然,您不一定要在一个地方包含运行应用程序所需的所有内容。您可能会编写一些代码来执行多个应用程序所需的任务。在这种情况下,将可重用的代码放置在所有应用程序均可访问的位置通常很有用。在.NET Framework中,这是全局程序集缓存(GAC)。在GAC中放置代码很简单-您只需将包含代码的程序集放置在包含此缓存的目录中即可。
程序集是硬盘驱动器上实际的.dll文件,用于存储.NET Framework中的类。例如,ASP.NET Framework中包含的所有类都位于名为System.Web.dll的程序集中。
更准确地说,程序集是.NET Framework中部署,安全性和版本控制的主要单元。因为程序集可以跨越多个文件,所以程序集通常称为“逻辑” dll。
注意
.NET Framework(2.0版)包括51个程序集。
程序集有两种类型:私有和共享。专用程序集只能由单个应用程序使用。另一方面,共享程序集可由位于同一服务器上的所有应用程序使用。
共享程序集位于全局程序集缓存(GAC)中。例如,System.Web.dll程序集和.NET Framework附带的所有其他程序集都位于全局程序集缓存中。
注意
全局程序集缓存实际上位于计算机的\ WINDOWS \ Assembly文件夹中。\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727文件夹中的每个程序集都有单独的副本。第一组程序集在运行时使用,第二组程序集在编译时使用。
在您的应用程序中使用程序集中包含的类之前,必须添加对该程序集的引用。默认情况下,ASP.NET应用程序引用全局程序集缓存中包含的最常见程序集:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.Web.Services.dll
System.Xml.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Web.Mobile.dll
若要使用.NET Framework中的任何特定类,您必须做两件事。首先,您的应用程序必须引用包含该类的程序集。其次,您的应用程序必须导入与该类关联的名称空间。
在大多数情况下,您不必担心引用必要的程序集,因为最常见的程序集是自动引用的。但是,如果需要使用专门的程序集,则需要为该程序集显式添加引用。例如,如果您需要使用System.DirectoryServices命名空间中的类与Active Directory进行交互,则需要在应用程序中添加对System.DirectoryServices.dll程序集的引用。
.NET Framework SDK文档中的每个类条目均列出了与该类关联的程序集和名称空间。例如,如果您在文档中查找MessageQueue类,则会发现该类位于System.Messaging.dll程序集的System.Messaging命名空间中。
如果使用的是Visual Web Developer,则可以通过选择菜单选项“网站”,“添加引用”并选择需要引用的程序集的名称来显式地添加对程序集的引用。例如,添加对System.Messaging.dll程序集的引用会导致清单1.4中的Web配置文件被添加到您的应用程序中。
例如。Web.Config
enter code here
如果您不想使用Visual Web Developer,则可以通过手动创建上述示例中的文件来将对System.Messaging.dll程序集的引用添加到
维基百科必须说:
在Microsoft .NET框架中,程序集是部分编译的代码库,用于部署,版本控制和安全性。有两种类型:进程程序集(EXE)和库程序集(DLL)。流程程序集表示将使用库程序集中定义的类的流程。.NET程序集包含CIL中的代码,这些代码通常是从CLI语言生成的,然后在运行时由CLR即时编译器编译为机器语言。程序集可以包含一个或多个文件。代码文件称为模块。程序集可以包含多个代码模块,并且由于可以使用不同的语言来创建代码模块,因此从技术上讲,可以使用几种不同的语言来创建程序集。
如果您确实浏览过,那么请您弄清楚自己不了解的内容会有所帮助
看到这个:
在Microsoft .NET框架中,程序集是部分编译的代码库,用于部署,版本控制和安全性
程序集是由类型和其他资源组成的运行时单元。装配件中的所有类型都具有相同的版本号。
通常,一个程序集只有一个名称空间,并且被一个程序使用。但是它可以跨越多个名称空间。同样,一个名称空间可以分布在多个程序集中。在大型设计中,程序集可能包含由清单(即目录)保持在一起的多个文件。
在C#中,程序集是.Net应用程序的最小部署。它可以是dll或exe。它具有两种类型:1.私有程序集2.公共/共享程序集
除了接受的答案外,我想举一个例子!
例如,我们都使用
System.Console.WriteLine()
但是System.Console.WriteLine!的代码在哪里?
实际将文本放置在控制台上的代码是什么?
如果查看Console类文档的第一页,则会在顶部附近看到以下内容:程序集:mscorlib(在mscorlib.dll中)这表明Console类的代码位于assem-bly中名为mscorlib。一个程序集可以包含多个文件,但是在这种情况下,它只是一个文件,它是动态链接库mscorlib.dll。
mscorlib.dll文件在.NET中非常重要,它是.NET中类库的主要DLL,它包含所有基本的.NET类和结构。
如果您了解C或C ++,通常需要在顶部引用一个#include指令来引用头文件。包含文件为编译器提供了函数原型。相反,C#编译器不需要头文件。在编译期间,C#编译器直接访问mscorlib.dll文件,并从该文件中的元数据获取有关其中定义的所有类和其他类型的信息。
C#编译器能够确定mscorlib.dll确实在名为System的命名空间中包含名为Console的类,该类具有名为WriteLine的方法,该方法接受单个string类型的参数。
C#编译器可以确定WriteLine调用是有效的,并且编译器在可执行文件中建立对mscorlib程序集的引用。
默认情况下,C#编译器将访问mscorlib.dll,但是对于其他DLL,您需要将其所在的程序集告诉编译器。这些被称为参考。
我希望现在很清楚!
从DotNetBookZero Charles pitzold
程序集是类型和资源的集合,形成功能的逻辑单元。.NET Framework中的所有类型都必须存在于程序集中。公共语言运行时不支持程序集外部的类型。每次使用Visual Basic .NET创建MicrosoftWindows®应用程序,Windows服务,类库或其他应用程序时,都在构建一个程序集。每个程序集都存储为.exe或.dll文件。
来源:https : //msdn.microsoft.com/zh-cn/library/ms973231.aspx#assenamesp_topic4
对于像我这样的Java背景的人,希望下图阐明概念-
程序集就像jar文件(包含多个.class文件)一样。您的代码可以引用现有的程序集,也可以将代码本身发布为程序集,以供其他代码引用和使用(您可以将其视为Java中的jar文件,可以将其添加到项目依赖项中)。
总而言之,程序集是可以在安装了CLR的任何操作系统上运行的已编译代码。这与说.class文件或捆绑的jar可以在安装了JVM的任何计算机上运行一样。
我发现此链接非常有帮助。它甚至使您了解IL在.NET中的作用。
http://www.codeguru.com/columns/csharp_learning/article.php/c5845/C-FAQ-15--What-is-an-Assembly.htm
Visual Studio解决方案由一个或多个项目组成。例如:控制台项目可以生成一个程序集。程序集在逻辑上是可以交付给客户的代码块,而实际上是.EXE(可执行程序)或.DLL(可由其他程序重用)。