从C#中SetdllDirectory中指定的path加载dll

我是新的dotnet.I有一个dotnet dll通过使用DllImport加载一个c DLL。 我想把所有的DLL放在一个不同于应用程序位置的文件夹中。 我不想修改环境variables。 所以我用setdlldirectory API并通过Assembly.Loadfrom(..)加载我的C#程序集。 我通过validationGetDllDirectory(..)的值来检查SetdllDirectory是否工作正常。 但它既不加载该C#DLL也不C DLL从该文件夹。 我能够加载C# DLL通过指定Assembly.Loadfrom中的path。 但无法加载c的DLL。

提前致谢!!

Solutions Collecting From Web of "从C#中SetdllDirectory中指定的path加载dll"

我建议使用下面的代码在PATH env变量中添加目录路径:

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

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

看看LoadFrom的文档,你会发现它说: 如果一个本地映像存在assemblyFile,它不会被使用。 该程序集不能作为域中立加载。

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