在 .NET 控件中部署非托管依赖 dll

Posted

技术标签:

【中文标题】在 .NET 控件中部署非托管依赖 dll【英文标题】:Deploy unmanaged dependecy dll within a .NET control 【发布时间】:2010-02-22 17:54:44 【问题描述】:

我有一个依赖于一堆 c++ 非托管 dll 的 c# wincontrol。

dotnetctrl.dll
 +
 +--myliba.dll
 +
 +--mylibb.dll

有没有办法在部署 dotnetctrl.dll 时包含这些 mylib[a|b].dll? 即当我在项目中添加对 dotnetctrl 的引用时,有没有办法让 mylib dll 在正确的路径中可用,就像 .NET 程序集一样?

【问题讨论】:

部署是什么意思?点击一次?设置项目?图书馆参考?复制/粘贴? 【参考方案1】:

单击非托管 DLL,然后在“属性”中,将“构建操作”更改为“无”,将“复制到输出目录”更改为“如果较新则复制”

【讨论】:

希望我能正确回答您的问题。这将在构建项目时自动将这些文件(无论它们在哪里)复制到与 .NET 程序集相同的文件夹中。【参考方案2】:

将 DLL 复制到 .NET 二进制文件所在的目录,它将在该目录中加载非托管 DLL。

希望这会有所帮助。

【讨论】:

以上是关于在 .NET 控件中部署非托管依赖 dll的主要内容,如果未能解决你的问题,请参考以下文章

如何将非托管 C++ 表单嵌入到 .NET 应用程序中?

从非托管进程中卸载 .NET DLL

.NET 无法在同一目录中找到非托管 DLL

将非托管 DLL 部署到输出目录

非托管 DLL 无法在 ASP.NET 服务器上加载

使用非托管 DLL 来自 .NET 的系统范围外壳挂钩