public void BaseTypeWithBclBaseTypeWithSystemRuntime()
        {
            _builder.AddReferenceOnlyAssemblyByType <object>();
            var result   = _builder.Build();
            var type     = GetTypeByNameAndAssert(result, nameof(BaseTypeWithBclBaseType));
            var baseType = type.BaseType;

            Assert.NotNull(baseType);
            Assert.Equal(nameof(System.EventArgs), baseType.Name);
        }
        private void AddSystemRuntimeAssembly()
        {
            var runtimeAssembly = Assembly.Load(new AssemblyName("System.Runtime, PublicKeyToken=b03f5f7f11d50a3a"));

            _builder.AddReferenceOnlyAssembly(runtimeAssembly.Location);
            _builder.AddReferenceOnlyAssemblyByType <object>();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates a new plugin loader
        /// </summary>
        /// <param name="root">root folder, default is relative to executing assemlby</param>
        /// <param name="patterns"></param>
        public PluginLoader(ILogger logger = null, string rootDir = ".", IEnumerable <string> patterns = null)
        {
            logger.LogDebug("Getting files from {relpath}", rootDir);
            var files = new List <string>();

            if (patterns == null)
            {
                files.AddRange(Glob.Files(rootDir, "**/*.dll"));
            }
            else
            {
                foreach (var pattern in patterns)
                {
                    files.AddRange(Glob.Files(rootDir, Regex.Replace(pattern, @"^\./", "")));
                }
            }

            logger.LogDebug("Found {fct} files:\n {@files}", files.Count, files);

            var builder = new ReflectionMetadataBuilder();

            foreach (var file in files)
            {
                try
                {
                    builder.AddAssembly(Path.Combine(rootDir, file));
                }
                catch (Exception)
                {
                }
            }

            builder.AddReferenceOnlyAssemblyByType <object>(); // adds the corlib
            try
            {
                metaData = builder.Build(true);
            }
            catch (AggregateException aex)
            {
                throw;
            }
            catch (Exception ex)
            {
            }
        }