mercredi 13 février 2019

how to query gac for assembly files

I am trying to learn more about Reflection, and took some code already built and added to it. Now I am trying to query the GAC for other assemblies and build type instances, and etc. I modified the code I found here, but myAssemblyList is empty. Can you tell me what I am doing wrong? I debugged and placed a break at "var currentAssembly = value.GetAssembly(f);" and it returns null.

class Program
{
    static void Main(string[] args)
    {
        AppDomainSetup domaininfo = new AppDomainSetup();
        domaininfo.ApplicationBase = System.Environment.CurrentDirectory;
        Evidence adevidence = AppDomain.CurrentDomain.Evidence;
        AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence, domaininfo);

        Type type = typeof(Proxy);
        var value = (Proxy)domain.CreateInstanceAndUnwrap(
            type.Assembly.FullName,
            type.FullName);
        String myDir = "C:\\Windows\\Microsoft.NET\\assembly\\GAC_64\\";
        List<Assembly> myAssemblyList = new List<Assembly>();
        foreach (String f in Directory.GetFiles(myDir))
        {
            var currentAssembly = value.GetAssembly(f);
            myAssemblyList.Add(currentAssembly);
            Console.WriteLine(currentAssembly.FullName);
            Console.ReadLine();
        }
    }
}
public class Proxy : MarshalByRefObject
{
    public Assembly GetAssembly(string assemblyPath)
    {
        try
        {
            return Assembly.LoadFile(assemblyPath);
        }
        catch (Exception)
        {
            return null;
            // throw new InvalidOperationException(ex);
        }
    }
}





Aucun commentaire:

Enregistrer un commentaire