如何将dll文件放在其他目录下而不是exe所在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将dll文件放在其他目录下而不是exe所在相关的知识,希望对你有一定的参考价值。

动态链接库和EXE文件放在同一目录会加快程序的运行速度,如果不放在一个目录就要在EXE等可执行文件的内核代码增加转向指令。 参考技术A 这不科学吧,要么你就把c:\a\b加入环境变量中,不过一般不是公用dll都是跟主程序放在一起的!

为啥 refed Dll 应该与 .Net 中的 exe 放在同一目录中?

【中文标题】为啥 refed Dll 应该与 .Net 中的 exe 放在同一目录中?【英文标题】:Why refed Dll should be placed in same directory with the exe in .Net?为什么 refed Dll 应该与 .Net 中的 exe 放在同一目录中? 【发布时间】:2013-08-14 06:30:16 【问题描述】:

假设我在vs2010中有几个项目,一个名为app,它是主项目。当我在另一个类库项目中引用应用程序项目使用的dll时,我确保引用的dll已复制到bin类库项目的文件夹,但有一个运行时错误提醒我,除非我将 dll 放在主项目的 bin 文件夹中,否则无法找到引用的 dll。这是为什么呢?期待您的回答,谢谢!

【问题讨论】:

【参考方案1】:

有一个 .dll 搜索顺序。 参考http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx

【讨论】:

【参考方案2】:

我尝试搜索“为什么将引用的 dll 复制到 bin 文件夹中”,但找不到任何特定的帖子或博客,但这不是构建应用程序的正确方法吗? .net 确保来自其他引用项目的所有 dll 都被复制到可执行文件的 bin 文件夹中,这样就没有机器级别的依赖关系。如果您的项目 dll 在本地被引用,这是真的。如果您希望您的项目 dll 被多个项目引用,则要么分发这些 dll,要么您需要将这些 dll 放在分发这些 dll 的机器的全局程序集缓存 (GAC) 中。要做到这一点,链接是here。

您也不需要将每个引用的 dll 复制并粘贴到 bin 文件夹中。 .net 会自动执行此操作。如果不是您的情况,则右键单击“参考”区域中的子项目,转到属性,然后将“复制本地”设置为 True。这会将 dll 复制到您的输出/bin 文件夹中以进行分发,并且应该解决依赖关系在没有 DLL 的机器上。

我希望这会有所帮助。

问候,

萨马尔

【讨论】:

以上是关于如何将dll文件放在其他目录下而不是exe所在的主要内容,如果未能解决你的问题,请参考以下文章

vs2010怎么把生成的exe与依赖的dll放在不同文件夹下

将 .dll 和 .pyd 文件保存在其他目录中

QT树形控件学习心得

winform 部署 dll路径

在其他计算机上运行 Allegro 5

delphi 如何把其他exe文件加入dll中,并调用