是否在引用后将dll文件嵌入可执行文件中?

时间:2017-05-27 18:46:00

标签: c# dll reference .net-assembly

基本上我想知道的是,当我将visual studio中的引用添加到任何.dll文件时,这个dll会嵌入到可执行文件中吗?如果不是,可执行文件如何知道在哪里查找这些dll文件:

Reference to dll files

2 个答案:

答案 0 :(得分:2)

未嵌入装配体。

如果您引用的不是强名称程序集,则会将其复制到可执行文件所在的文件夹中(您也可以将程序集放在任何其他位置)。 CLR在包含可执行文件的文件夹中或在您可以为CLR设置的任何其他文件夹中查找此程序集。

如果您引用任何具有强名称的程序集,那么CLR将查找此程序集,方法与查找非强名称程序集以及全局程序集缓存(GAC - MSDN - GAC)相同。

答案 1 :(得分:0)

库可以通过两种主要方式链接到可执行文件:动态和静态。

动态意味着可执行文件在可执行文件中有一个标记,用于声明对库的依赖。假设它安装在系统上,操作系统或运行时环境负责查找该库。如果您使用这样的库,则需要知道它们来自何处(.NET,Visual Studio,第三方等),以便确保在分发应用程序时将它们安装在系统中。通常,您可以通过将其包含在与可执行文件相同的文件夹中(对于Windows)来确保使用所需库的版本,但是对于可能已经存在的库,您通常不希望这样做。在系统上。

静态意味着将库编译为可执行文件。可执行文件变得更大,并且您可以保证使用您创建程序的库的版本,但并非所有库都可以静态使用。

DLL,字面意思是指动态链接库,因此您需要知道所使用的库的来源,以确保它们出现在您希望应用程序运行的系统上。