如何从shell扩展加载DLL?
我已经编写了一个小的shell扩展,存根可以工作,但是希望它从SQLite数据库读取一些信息 :如何从shell扩展加载DLL?,dll,wix,system.data.sqlite,regasm,shell-extensions,Dll,Wix,System.data.sqlite,Regasm,Shell Extensions,我已经编写了一个小的shell扩展,存根可以工作,但是希望它从SQLite数据库读取一些信息 : System.Data.SQLite.dll:仅管理核心程序集 SQLite.Interop.dll:本机互操作程序集 在过去,我成功地使用这两个DLL构建了桌面应用程序,方法是将它们放在与.exe文件相同的文件夹中。 但是对于shell扩展,没有.exe文件,所以我应该把这些DLL放在哪里 注意:现在我使用部署shell扩展,但我计划将来使用部署它们。您可能已经知道,程序集是相对于.exe及其
:仅管理核心程序集System.Data.SQLite.dll
:本机互操作程序集SQLite.Interop.dll
.exe
文件相同的文件夹中。但是对于shell扩展,没有
.exe
文件,所以我应该把这些DLL放在哪里
注意:现在我使用部署shell扩展,但我计划将来使用部署它们。您可能已经知道,程序集是相对于.exe及其.exe.config文件中的指令找到的。这意味着您的.dll必须“手动”加载其程序集 这与这里基本相同:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveLocally);
static Assembly ResolveLocally(object sender, ResolveEventArgs args)
{
string path = Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
new AssemblyName(args.Name).Name + ".dll"
);
if (!File.Exists(path))
{
return null;
}
return Assembly.LoadFrom(path);
}