Mono.Linker.LinkContext.GetAssemblies C# (CSharp) Метод

GetAssemblies() публичный Метод

public GetAssemblies ( ) : Mono.Cecil.AssemblyDefinition[]
Результат Mono.Cecil.AssemblyDefinition[]
		public AssemblyDefinition [] GetAssemblies ()
		{
			IDictionary cache = _resolver.AssemblyCache;
			AssemblyDefinition [] asms = new AssemblyDefinition [cache.Count];
			cache.Values.CopyTo (asms, 0);
			return asms;
		}

Usage Example

        public override void Initialize(LinkContext context)
        {
            base.Initialize (context);

            // we cannot override ProcessAssembly as some decisions needs to be done before applyting the [Preserve]
            // synonyms

            foreach (var assembly in context.GetAssemblies ()) {
                if (!assembly.HasCustomAttributes)
                    continue;

                foreach (var attribute in assembly.CustomAttributes) {
                    if (!attribute.Constructor.DeclaringType.Is (Namespaces.Foundation, "PreserveAttribute"))
                        continue;

                    if (!attribute.HasConstructorArguments)
                        continue;
                    var tr = (attribute.ConstructorArguments [0].Value as TypeReference);
                    if (tr == null)
                        continue;

                    // we do not call `this.ProcessType` since
                    // (a) we're potentially processing a different assembly and `is_active` represent the current one
                    // (b) it will try to fetch the [Preserve] attribute on the type (and it's not there) as `base` would
                    var type = tr.Resolve ();
                    Annotations.Mark (type);
                    if (attribute.HasFields) {
                        foreach (var named_argument in attribute.Fields) {
                            if (named_argument.Name == "AllMembers" && (bool)named_argument.Argument.Value)
                                Annotations.SetPreserve (type, TypePreserve.All);
                        }
                    }

                    // if the type is a custom attribute then it means we want to preserve what's decorated
                    // with this attribute (not just the attribute alone)
                    if (type.Inherits ("System", "Attribute")) {
                        if (preserve_synonyms == null)
                            preserve_synonyms = new HashSet<TypeDefinition> ();
                        preserve_synonyms.Add (type);
                    }
                }
            }
        }
All Usage Examples Of Mono.Linker.LinkContext::GetAssemblies