Mono.Addins.AddinEngine.CheckHostAssembly C# (CSharp) Méthode

CheckHostAssembly() private méthode

private CheckHostAssembly ( Assembly asm ) : void
asm System.Reflection.Assembly
Résultat void
        void CheckHostAssembly(Assembly asm)
        {
            if (AddinDatabase.RunningSetupProcess || asm is System.Reflection.Emit.AssemblyBuilder || asm.IsDynamic)
                return;
            string codeBase;
            try {
                codeBase = asm.CodeBase;
            } catch {
                return;
            }

            Uri u;
            if (!Uri.TryCreate (codeBase, UriKind.Absolute, out u))
                return;

            string asmFile = u.LocalPath;
            Addin ainfo;
            try {
                ainfo = Registry.GetAddinForHostAssembly (asmFile);
            } catch (Exception ex) {
                // GetAddinForHostAssembly may crash if the add-in db has been corrupted. In this case, update the db
                // and try getting the add-in info again. If it crashes again, then this is a bug.
                defaultProgressStatus.ReportError ("Add-in description could not be loaded.", ex);
                Registry.Update (null);
                ainfo = Registry.GetAddinForHostAssembly (asmFile);
            }

            if (ainfo != null && !IsAddinLoaded (ainfo.Id)) {
                AddinDescription adesc = null;
                try {
                    adesc = ainfo.Description;
                } catch (Exception ex) {
                    defaultProgressStatus.ReportError ("Add-in description could not be loaded.", ex);
                }
                if (adesc == null || adesc.FilesChanged ()) {
                    // If the add-in has changed, update the add-in database.
                    // We do it here because once loaded, add-in roots can't be
                    // reloaded like regular add-ins.
                    Registry.Update (null);
                    ainfo = Registry.GetAddinForHostAssembly (asmFile);
                    if (ainfo == null)
                        return;
                }
                LoadAddin (null, ainfo.Id, false);
            }
        }