0

私の新しいプロジェクト (windows-C#-vs2008) では、おそらくネットワーク サーバーから、実行可能ファイルを自律的に更新できるようにしたいと考えています。 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 に答える