Exemplo n.º 1
0
        public virtual AssemblyNameReference ImportReference(AssemblyNameReference name)
        {
            Mixin.CheckName(name);

            AssemblyNameReference reference;

            if (module.TryGetAssemblyNameReference(name, out reference))
            {
                return(reference);
            }

            reference = new AssemblyNameReference(name.Name, name.Version)
            {
                Culture          = name.Culture,
                HashAlgorithm    = name.HashAlgorithm,
                IsRetargetable   = name.IsRetargetable,
                IsWindowsRuntime = name.IsWindowsRuntime,
            };

            var pk_token = !name.PublicKeyToken.IsNullOrEmpty()
                                ? new byte [name.PublicKeyToken.Length]
                                : Empty <byte> .Array;

            if (pk_token.Length > 0)
            {
                Buffer.BlockCopy(name.PublicKeyToken, 0, pk_token, 0, pk_token.Length);
            }

            reference.PublicKeyToken = pk_token;

            module.AssemblyReferences.Add(reference);

            return(reference);
        }
Exemplo n.º 2
0
        static IMetadataScope GetMetadataScope(ModuleDefinition module, Type type_info)
        {
            if (string.IsNullOrEmpty(type_info.assembly))
            {
                return(module.TypeSystem.CoreLibrary);
            }

            AssemblyNameReference match;
            var reference = AssemblyNameReference.Parse(type_info.assembly);

            return(module.TryGetAssemblyNameReference(reference, out match)
                                ? match
                                : reference);
        }