我是新接触dotnet的,我有一个使用DllImport加载c dll的dotnet dll。我想把所有的all放在一个与应用程序位置不同的文件夹中。我不想修改环境变量。因此,我使用setdlldirectory应用程序接口并通过Assembly.Loadfrom(..)加载我的c#程序集。通过验证GetDllDirectory(..)的值,我检查了SetdllDirectory是否工作正常。但是它既没有从该文件夹中加载C# dll,也没有从该文件夹中加载c dll。我可以通过在Assembly.Loadfrom中指定路径来加载C#动态链接库。但无法加载c dll。
提前感谢!!
发布于 2012-07-11 01:06:33
我建议在运行时将目录路径添加到path env变量,使用以下代码:
var dllDirectory = @"C:/some/path";
Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + dllDirectory);这样,更改只会影响正在运行的进程,并在它退出时被丢弃。
发布于 2012-07-11 00:22:16
看一看LoadFrom的文档,您会发现它说:如果存在assemblyFile的本机映像,则不使用它。程序集不能以非特定于域的身份加载。
我认为您需要将DLL目录添加到EXE的路径中。
https://stackoverflow.com/questions/11410940
复制相似问题