在我的新项目(windows-C#-vs2008)中,我希望可执行文件能够自动更新自身——也许从网络服务器这里我所做的是将任何更新的 dll 下载到“隔离存储”(每个作为单独的 dll)然后修改CurrentDomain_AssemblyResolve() 方法
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
这样它在从可执行文件加载之前首先检查其隔离存储中是否存在库。但是,如果我想更改主 exe 中的某些内容怎么办。[我尝试创建一个加载程序项目(控制台 ap),它从中调用我的主程序(将输出更改为 dll),但是这次程序集解析事件没有被触发,因为参考 dll 是在新加载程序的 bin 文件夹下生成的编译期间的项目]任何帮助将不胜感激..
public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
try
{
string assemName = new AssemblyName(args.Name).Name;
object i_StoreRootDir = i_StorageFile.GetType().GetField
("m_RootDir", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(i_StorageFile);
string i_StorePath = CombinePaths(i_StoreRootDir.ToString(), I_STOREDIR, assemName, DLL_EXT);
if (File.Exists(i_StorePath))
{
return Assembly.LoadFrom(i_StorePath);
}
else
{
//load it from resource.
return null;
}
}
catch (Exception)
{
throw;
}