PCL在运行时在内存

时间:2016-03-16 02:39:28

标签: c# memory stream .net-assembly portable-class-library

背景:
我正在尝试创建一个应用程序,用户可以在其中创建可移植类库(PCL)并将其上载到我的软件中。由于我的软件是客户端/服务器架构,我希望在windows,ios,android和windows phone上运行客户端(Xamarin将用于移动设备)。我正在尝试为所有这些客户创建一个PCL 问题: PCL没有那么多的重载静态方法来动态加载程序集并将其保存在内存中。当我通过网络下载并希望将其反序列化为程序集时,我目前将程序集作为流。 Assembly.Load只接受AssemblyName的字符串(必须位于磁盘上)。

是否有解决方法,另一个库或其他选项从Stream在内存中加载程序集?

public static List<DeviceInformation> DeCompileDevicePackage(Stream ZipStream)
    {
        List<Assembly> packageassemblies = new List<Assembly>();
        ZipArchive archive = new ZipArchive(ZipStream);
        foreach (ZipArchiveEntry entry in archive.Entries)
        {
            using (Stream zipfile = entry.Open())
            {
                switch (entry.FullName.Substring(entry.Name.Length - 4))
                {
                    case ".dll":
                        //TestPortable.dll is located in the same folder as the exectuable and this PCL library
                        AssemblyName assemblyname = new AssemblyName("TestPortable, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
                        //I want to do something similar below but I want to use zipfile Stream instead of AssemblyName
                        Assembly assembly = Assembly.Load(assemblyname);
                        packageassemblies.Add(assembly);
                        break;
                    default:
                        //ignore files
                        break;
                }
            }
        }

你可以忽略这些邮件,因为我只是在它通过网络后将其解压缩。

0 个答案:

没有答案