コード例 #1
0
        private PluginArchive(ZipArchive archive)
        {
            if (archive == null)
            {
                throw new ArgumentNullException(nameof(archive));
            }

            var sw = new Stopwatch();

            _archive       = archive;
            _index         = new PluginPackageIndex();
            _assemblyCache = new Dictionary <ZipArchiveEntry, Assembly>();

            var index = _archive.GetEntry(IndexEntryName);

            if (index == null)
            {
                throw new CorruptPluginException(string.Format("Plugin is missing {0}", IndexEntryName));
            }

            using (var stream = index.Open())
                using (var reader = new StreamReader(stream))
                {
                    var serializer = new XmlSerializer(typeof(PluginPackageIndex));
                    sw.Restart();
                    _index = serializer.Deserialize(reader) as PluginPackageIndex;
                }
            sw.Stop();
            Console.WriteLine("Deserialize index: {0}ms", sw.ElapsedMilliseconds);
        }
コード例 #2
0
 public EmptyPluginArchive()
 {
     _index = new PluginPackageIndex
     {
         PluginArchiveVersion = PluginArchive.CurrentPluginArchiveVersion
     };
 }
コード例 #3
0
        private PluginArchive(ZipArchive archive)
        {
            if (archive == null)
            {
                throw new ArgumentNullException(nameof(archive));
            }

            var sw = new Stopwatch();

            _archive       = archive;
            _index         = new PluginPackageIndex();
            _assemblyCache = new Dictionary <ZipArchiveEntry, Assembly>();

            var index = _archive.GetEntry(IndexEntryName);

            if (index == null)
            {
                throw new CorruptPluginException(string.Format("Plugin is missing {0}", IndexEntryName));
            }

            using (var stream = index.Open())
            {
                sw.Restart();
                _index = PluginPackageIndex.Deserialize(stream);
            }
            sw.Stop();

            Log.DebugFormat("Deserialize index took: {0}ms", sw.ElapsedMilliseconds);
        }
コード例 #4
0
 public EmptyPluginArchive(Version pluginVersion)
 {
     _index = new PluginPackageIndex
     {
         PluginArchiveVersion = PluginArchive.CurrentPluginArchiveVersion,
         Version = pluginVersion.ToString()
     };
 }
コード例 #5
0
 public EmptyPluginArchive(PluginId id, Version pluginVersion)
 {
     _index = new PluginPackageIndex
     {
         Id = id.Value,
         PluginArchiveVersion = PluginArchive.CurrentPluginArchiveVersion,
         Version = pluginVersion.ToString()
     };
 }
コード例 #6
0
        private PluginPacker(ZipArchive archive)
        {
            if (archive == null)
            {
                throw new ArgumentNullException(nameof(archive));
            }

            _archive = archive;
            _index   = new PluginPackageIndex
            {
                PluginArchiveVersion = PluginArchive.CurrentPluginArchiveVersion,
                Assemblies           = new List <AssemblyDescription>(),
                NativeImages         = new List <NativeImageDescription>(),
                Version = new Version(0, 0, 0).ToString()
            };
        }