我是新的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。
提前致谢!!
我建议使用下面的代码在PATH env变量中添加目录路径:
var dllDirectory = @"C:/some/path"; Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + dllDirectory);
这样,更改只会影响正在运行的进程,并在退出时被丢弃。
看看LoadFrom的文档,你会发现它说: 如果一个本地映像存在assemblyFile,它不会被使用。 该程序集不能作为域中立加载。
我相信你将需要将DLL目录添加到EXE的路径。