我有一个C ++ DLL库(我们将其称为unmanaged.dll
),该库环绕在托管的.NET库中(我们将其称为managed.dll
)。 managed.dll
使用unmanaged.lib
导入/链接unmanaged.dll
。我还有一个使用managed.dll
的ASP.NET Web API项目(我们称为项目webapi.dll
)。现在,无论何时构建Web项目,在输出目录中我都会得到webapi.dll
和managed.dll
。然后,我手动将unmanaged.dll
复制到相同的输出文件夹中,以便(大概).NET可以找到并加载它。
但是,当我尝试运行webapi.dll
时,它失败并显示错误,提示它无法加载managed.dll
:
无法加载文件或程序集“ managed.DLL”或其依赖项之一。找不到指定的模块。
这特别奇怪,因为unmanaged.dll
位于同一文件夹中。
我感到很奇怪的是,如果我将unmanaged.dll
放在C:\Windows\system32
下,那么.NET可以正确地加载它!
我的问题是如何使.NET项目输出所在的文件夹中的unmanaged.dll
对.NET可见?
答案 0 :(得分:2)
是导致问题的IIS。遇到相同的问题,可以通过将dll添加到位于PATH变量中的文件夹中来解决它。