程序集与类库(.NET)

时间:2009-12-11 14:24:21

标签: .net assemblies

任何人都可以在ASP.NET的“上下文”中指出使用程序集的优势。

据我了解,程序集作为可执行文件运行,只有一个入口点,可以在应用程序域内运行,但我在网上找到的合适例子很少。

4 个答案:

答案 0 :(得分:8)

程序集不仅仅是一个可执行程序......程序集本质上是一个.NET库,可能具有可执行入口点...

Wikipedia article with description of assemblies第一段:

  

在Microsoft .NET框架中,   assembly是部分编译的代码   用于部署的库,   版本控制和安全性。那里有两个   类型:流程程序集(EXE)和   库程序集(DLL)。一个过程   程序集代表一个过程   将使用库中定义的类   组件。 .NET程序集包含   CIL中的代码,通常是   从.NET语言生成,和   然后编译成机器语言   CLR的运行时及时   编译器。装配可以包括   一个或多个文件。代码文件是   称为模块。装配可以   包含多个代码模块和   因为可以使用不同的   语言来创建代码模块   技术上可以使用几个   创建一个不同的语言   部件。但Visual Studio却可以   不支持使用不同的语言   在一个集会中。

答案 1 :(得分:3)

程序集并不总是可执行文件。大多数人将它们定义为作为单个DLL或EXE文件呈现的类模块的集合。与它们最接近的是Java JAR。

他们有元数据(参见http://en.wikipedia.org/wiki/.NET_metadata),其中包含一系列信息,例如

  • 版本
  • 方法和类型

他们还有一个清单,它是此元数据的一部分(参见http://msdn.microsoft.com/en-us/library/1w45z383.aspx)。

您可以将程序集注册到全局程序集缓存(GAC)(请参阅http://en.wikipedia.org/wiki/Global_Assembly_Cache),然后您可以将它们提供给计算机上的所有其他程序。 (在Visual Studio中,使用“添加引用”,并浏览.Net选项卡,您正在观看GAC中的程序集列表。)

您不必在GAC中添加它们,您可以直接引用私有程序集,但在GAC中注册它们会使它们在计算机上全局可用。

此链接包含有关装配的合理信息:

答案 2 :(得分:2)

这个问题没有多大意义。程序集包含类库,它不是任何一种或类似的东西。即使你只有aspx文件,当有人第一次访问某个页面时,ASP.Net会将它编译成一个类,然后动态组装。

答案 3 :(得分:0)

@maxp,您在询问是否最好将该类作为.cs文件包含在项目中或作为编译的.dll包含在引用中?

我过去常常在类文件(.cs)中保留常用函数,并将它们包含在我正在处理的项目中。这些课程都在源代码控制之下,因此我只需确保在创建新项目时随时获得最新版本。但是最近,我已经开始编译它们并在GAC中注册它们。这有助于减少不是每个人都知道哪个版本的类包含在给定项目中的头痛。如果您对课程进行了更改,只需将其重新注册到GAC并更新所有应用并使用相同的版本。

我遇到的唯一真正的缺点是,如果您正在尝试调试并逐步执行逻辑。在编译并放入GAC之前,请确保您的类是可靠的。

希望这有助于回答您的问题。