在.NET中,是否需要注册DLL?

Hel*_*ios 11 .net c# dllregistration

是否有必要在目标计算机上注册已编译的DLL(用C#.NET编写).

目标机器将安装.NET,是否足以简单地将DLL丢弃到目标机器上?

Jor*_*oba 32

我觉得你有点困惑.为了使用它,从未需要注册dll.

使用dll只需要加载它(给定一个已知位置或库是否在系统路径中)并获取您想要使用的函数的地址.

在分发需要将某些条目添加到Windows注册表的COM或ActiveX对象时,使用了注册dll.为了使用COM服务(例如),您需要引用GUID(即唯一标识符),它允许您获取实现服务的dll句柄(或提供对它的访问).有时您可以参考完全限定的名称并获得相同的结果.

为了使所有这些工作,需要注册dll.这个"注册"过程只是在注册表中创建了几个条目,但主要是这两个:一个将GUID与dll的位置相关联(这样你就可以通过GUID引用它而不知道它到底在哪里)和第二个将全名与GUID相关联.但同样,这仅适用于COM或ActiveX对象.

在.NET中开发应用程序时,项目中引用的库会在需要时自动加载,而不必担心找到或加载它们.为此,框架检查引用库的两个位置.

  • 第一个位置是应用程序路径.
  • 第二个位置是GAC.

GAC(全局程序集缓存)允许您有效地注册要在整个系统中使用的dll,并作为旧注册机制的演变.

所以基本上你只需要将dll放在应用程序的同一个文件夹中.

  • 这是不正确的。如果程序集是强命名的,它将首先检查 GAC。如果不是强命名,那么系统会先检查GAC,然后按照以下步骤定位程序集 http://msdn.microsoft.com/en-us/library/15hyw9x3.aspx (2认同)

ang*_*son 5

您需要将其"删除"到需要它的应用程序才能找到它的目录中.

如果有多个应用程序,或者您希望将文件"删除"到应用程序目录以外的某个位置,则通常需要调整PATH变量,或者在全局程序集缓存(GAC)中注册程序集.