0

在我的新项目(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;
            }
4

1 回答 1

1

您可以查看ClickOnce 部署作为框架的一部分。您也可以签出 wyUpdate。还有BitsUpdater

于 2010-11-06T10:45:37.467 回答