6

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

提前致谢!!

4

2 回答 2

15

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

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

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

于 2012-07-10T17:06:33.350 回答
0

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

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

于 2012-07-10T16:22:16.410 回答