从c#中SetdllDirectory中指定的路径加载dll

Roh*_*arg 6 c c# windows winapi

我是dotnet的新手.我有一个dotnet dll,c通过使用加载一个dll DllImport.我想将所有dll放在一个与应用程序位置不同的文件夹中.我不想修改环境变量.所以我使用setdlldirectoryAPI并加载我的c#程序集Assembly.Loadfrom(..).我SetdllDirectory通过验证值来检查它是否正常工作GetDllDirectory(..).但它既不从该文件夹加载C#dll也不加载c dll.我可以C#通过specyfing路径加载DLL Assembly.Loadfrom.但是无法加载c dll.

提前致谢!!

小智 14

我建议使用以下代码在运行时将目录路径添加到PATH env变量:

var dllDirectory = @"C:/some/path";
Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + dllDirectory);
Run Code Online (Sandbox Code Playgroud)

这样,更改只会影响正在运行的进程,并在退出时被丢弃.


Car*_*ory 0

查看LoadFrom的文档,您会发现它说:如果 assemblyFile 存在本机映像,则不会使用它。该程序集无法作为域中性加载。

我相信您需要将 DLL 目录添加到 EXE 的路径中。