猿问

在.NET中为DllImport指定搜索路径

有没有一种方法可以指定要用DllImport导入的给定程序集的搜索路径?


[DllImport("MyDll.dll")]

static extern void Func();

这将在应用程序目录和PATH环境变量中搜索dll。但是有时dll将放置在其他位置。可以在app.config或清单文件中指定此信息,以避免动态加载和动态调用吗?


小怪兽爱吃肉
浏览 806回答 3
3回答

白衣非少年

这可能很有用DefaultDllImportSearchPathsAttribute类Eg[assembly: DefaultDllImportSearchPaths(DllImportSearchPath.UserDirectories)]还要注意,您也可以使用AddDllDirectory,这样就不会搞砸了:[DllImport("kernel32.dll", SetLastError = true)]static extern bool AddDllDirectory(string path);

人到中年有点甜

AddDllDirectory首次调用导入的函数之前,请尝试使用其他DLL路径进行调用。如果您的Windows版本低于8,则需要安装此修补程序,从而AddDllDirectory为Windows 7、2008 R2、2008和Vista(缺少XP的修补程序)添加缺少该功能的API 。
随时随地看视频慕课网APP
我要回答