Ark.Piranha.RetargetReferencesProcessor.ProcessAssemblyReferences C# (CSharp) Метод

ProcessAssemblyReferences() защищенный Метод

protected ProcessAssemblyReferences ( Mono.Cecil.ModuleDefinition moduleDef, IList assemblyNameRefs ) : void
moduleDef Mono.Cecil.ModuleDefinition
assemblyNameRefs IList
Результат void
        protected override void ProcessAssemblyReferences(ModuleDefinition moduleDef, IList<AssemblyNameReference> assemblyNameRefs)
        {
            for (int i = assemblyNameRefs.Count - 1; i >= 0; --i) {
                AssemblyNameReference replacement = null;
                var other = assemblyNameRefs[i];
                var otherName = other.Name + "," + other.Version;
                if (_assemblyReplacements.TryGetValue(other.Name, out replacement)) {
                    assemblyNameRefs[i].Version = replacement.Version;
                    assemblyNameRefs[i].PublicKeyToken = replacement.PublicKeyToken;
                    assemblyNameRefs[i].IsRetargetable = replacement.IsRetargetable;
                    var replacementName = replacement.Name + "," + replacement.Version;
                    Trace.WriteLine(string.Format("Replacing {0} with {1}.", otherName, replacementName), "RetargetReferences");
                } else {
                    if (_removeOthers) {
                        try {
                            var otherAss = moduleDef.AssemblyResolver.Resolve(other);
                            var otherProfile = otherAss.GetAssemblyProfileFromAttribute();
                            if (otherProfile != null && otherProfile.IsPortable) {
                                Trace.WriteLine(string.Format("Keeping {0}.", otherName), "RetargetReferences");
                                continue;
                            }
                        } catch(Exception ex) {
                            Trace.WriteLine(string.Format("Failed resolving {0}.", otherName), "RetargetReferences");
                        }
                        Trace.WriteLine(string.Format("Removing {0}.", otherName), "RetargetReferences");
                        assemblyNameRefs.RemoveAt(i);
                    } else {
                        Trace.WriteLine(string.Format("Keeping {0}.", otherName), "RetargetReferences");
                    }
                }
            }
            base.ProcessAssemblyReferences(moduleDef, assemblyNameRefs);
        }