Exemple #1
0
        private async Task <AssemblyCatalogInfo> GetAssemblyCatalogInfoCore(string assemblyFilePath)
        {
            AssemblyCatalogInfo result = null;

            try
            {
                using (var stream = new FileStream(
                           assemblyFilePath,
                           FileMode.Open,
                           FileAccess.Read,
                           FileShare.Read | FileShare.Delete,
                           262144,
                           FileOptions.RandomAccess))
                {
                    using (var pereader = new PEReader(stream, PEStreamOptions.LeaveOpen))
                    {
                        if (!pereader.HasMetadata)
                        {
                            return(null);
                        }

                        var metadataReader = pereader.GetMetadataReader();
                        if (!metadataReader.ReferencesAssembly("System.ComponentModel.Composition"))
                        {
                            return(null);
                        }

                        result = new AssemblyCatalogInfo(this, metadataReader, assemblyFilePath);
                        await result.Populate().ConfigureAwait(false);
                    }
                }
            }
            catch (Exception)
            {
                result = null;
            }

            return(result);
        }
Exemple #2
0
        private async Task<AssemblyCatalogInfo> GetAssemblyCatalogInfoCore(string assemblyFilePath)
        {
            AssemblyCatalogInfo result = null;

            try
            {
                using (var stream = new FileStream(
                    assemblyFilePath,
                    FileMode.Open,
                    FileAccess.Read,
                    FileShare.Read | FileShare.Delete,
                    262144,
                    FileOptions.RandomAccess))
                {
                    using (var pereader = new PEReader(stream, PEStreamOptions.LeaveOpen))
                    {
                        if (!pereader.HasMetadata)
                        {
                            return null;
                        }

                        var metadataReader = pereader.GetMetadataReader();
                        if (!metadataReader.ReferencesAssembly("System.ComponentModel.Composition"))
                        {
                            return null;
                        }

                        result = new AssemblyCatalogInfo(this, metadataReader, assemblyFilePath);
                        await result.Populate().ConfigureAwait(false);
                    }
                }
            }
            catch (Exception)
            {
                result = null;
            }

            return result;
        }