Beispiel #1
0
    /// <summary>
    /// Executes a LoadFrom in the app domain LoaderClass has been loaded into.  Attempts to load a given assembly, looking in the
    /// given paths & the current directory.
    /// </summary>
    /// <param name="path">The assembly to load</param>
    /// <param name="paths">Paths to search for the given assembly</param>
    public void LoadFrom(string path, string[] paths, ReliabilityFramework rf)
    {
        myRf = rf;

        AssemblyName an = new AssemblyName();

        an.CodeBase = assembly = path;

        //register AssemblyLoad and DomainUnload events
        AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(this.UnloadOnAssemblyLoad);
        AppDomain.CurrentDomain.DomainUnload += new EventHandler(this.UnloadOnDomainUnload);

        try
        {
            assem = Assembly.Load(an);
        }
        catch
        {
            try
            {
                FileInfo fi = new FileInfo(path);

                an          = new AssemblyName();
                an.CodeBase = assembly = fi.FullName;

                assem = Assembly.Load(an);
            }
            catch
            {
                if (paths != null)
                {
                    foreach (string basePath in paths)
                    {
                        try
                        {
                            an          = new AssemblyName();
                            an.CodeBase = assembly = ReliabilityConfig.ConvertPotentiallyRelativeFilenameToFullPath(basePath, path);

                            assem = Assembly.Load(an);
                        }
                        catch
                        {
                            continue;
                        }
                        break;
                    }
                }
            }
        }
    }
Beispiel #2
0
#pragma warning disable SYSLIB0012 // Assembly.CodeBase is obsolete

    /// <summary>
    /// Executes a LoadFrom in the app domain LoaderClass has been loaded into.  Attempts to load a given assembly, looking in the
    /// given paths & the current directory.
    /// </summary>
    /// <param name="path">The assembly to load</param>
    /// <param name="paths">Paths to search for the given assembly</param>
    public void LoadFrom(string path, string[] paths
                         )
    {
        AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly());

        try
        {
            assembly = path;
            assem    = alc.LoadFromAssemblyPath(assembly);
        }
        catch
        {
            try
            {
                FileInfo fi = new FileInfo(path);
                assembly = fi.FullName;
                assem    = alc.LoadFromAssemblyPath(assembly);
            }
            catch
            {
                if (paths != null)
                {
                    foreach (string basePath in paths)
                    {
                        try
                        {
                            assembly = ReliabilityConfig.ConvertPotentiallyRelativeFilenameToFullPath(basePath, path);
                            assem    = alc.LoadFromAssemblyPath(assembly);
                            break;
                        }
                        catch
                        {
                        }
                    }
                }
            }
        }
    }
Beispiel #3
0
#pragma warning disable SYSLIB0012 // Assembly.CodeBase is obsolete

    /// <summary>
    /// Executes a LoadFrom in the app domain LoaderClass has been loaded into.  Attempts to load a given assembly, looking in the
    /// given paths & the current directory.
    /// </summary>
    /// <param name="path">The assembly to load</param>
    /// <param name="paths">Paths to search for the given assembly</param>
    public void LoadFrom(string path, string[] paths
#if !PROJECTK_BUILD
                         , ReliabilityFramework rf
#endif
                         )
    {
#if !PROJECTK_BUILD
        myRf = rf;

        AssemblyName an = new AssemblyName();
        an.CodeBase = assembly = path;

        //register AssemblyLoad and DomainUnload events
        AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(this.UnloadOnAssemblyLoad);
        AppDomain.CurrentDomain.DomainUnload += new EventHandler(this.UnloadOnDomainUnload);
#else
        AssemblyLoadContext alc = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly());
#endif
        try
        {
#if !PROJECTK_BUILD
            assem = Assembly.Load(an);
#else
            assembly = path;
            assem    = alc.LoadFromAssemblyPath(assembly);
#endif
        }
        catch
        {
            try
            {
                FileInfo fi = new FileInfo(path);
                assembly = fi.FullName;
#if !PROJECTK_BUILD
                an          = new AssemblyName();
                an.CodeBase = assembly;

                assem = Assembly.Load(an);
#else
                assem = alc.LoadFromAssemblyPath(assembly);
#endif
            }
            catch
            {
                if (paths != null)
                {
                    foreach (string basePath in paths)
                    {
                        try
                        {
                            assembly = ReliabilityConfig.ConvertPotentiallyRelativeFilenameToFullPath(basePath, path);
#if !PROJECTK_BUILD
                            an          = new AssemblyName();
                            an.CodeBase = assembly;

                            assem = Assembly.Load(an);
#else
                            assem = alc.LoadFromAssemblyPath(assembly);
#endif
                            break;
                        }
                        catch
                        {
                        }
                    }
                }
            }
        }
    }