Example #1
0
        public AssemblyName(string assemblyName)
        {
            if (assemblyName == null)
            {
                throw new ArgumentNullException(nameof(assemblyName));
            }
            RuntimeAssemblyName runtimeAssemblyName = AssemblyNameParser.Parse(assemblyName);

            runtimeAssemblyName.CopyToAssemblyName(this);
        }
        public static void Parse(AssemblyName blank, string s)
        {
            if (s == null)
            {
                throw new ArgumentNullException(nameof(s));
            }
            RuntimeAssemblyName runtimeAssemblyName = Parse(s);

            runtimeAssemblyName.CopyToAssemblyName(blank);
        }
Example #3
0
        public AssemblyName(string assemblyName)
            : this()
        {
            if (assemblyName == null)
                throw new ArgumentNullException(nameof(assemblyName));
            if ((assemblyName.Length == 0) ||
                (assemblyName[0] == '\0'))
                throw new ArgumentException(SR.Format_StringZeroLength);

            _name = assemblyName;
            RuntimeAssemblyName runtimeAssemblyName = AssemblyNameParser.Parse(_name);
            runtimeAssemblyName.CopyToAssemblyName(this);
        }
Example #4
0
        //
        // Ensure that the PublicKeyOrPublicKeyToken (if non-null) is the short token form.
        //
        public static RuntimeAssemblyName CanonicalizePublicKeyToken(this RuntimeAssemblyName name)
        {
            AssemblyNameFlags flags = name.Flags;

            if ((flags & AssemblyNameFlags.PublicKey) == 0)
            {
                return(name);
            }

            flags &= ~AssemblyNameFlags.PublicKey;
            byte[] publicKeyOrToken = name.PublicKeyOrToken;
            if (publicKeyOrToken != null)
            {
                publicKeyOrToken = ComputePublicKeyToken(publicKeyOrToken);
            }

            return(new RuntimeAssemblyName(name.Name, name.Version, name.CultureName, flags, publicKeyOrToken));
        }
Example #5
0
        public static string ComputeDisplayName(RuntimeAssemblyName a)
        {
            const int PUBLIC_KEY_TOKEN_LEN = 8;

            if (string.IsNullOrEmpty(a.Name))
            {
                throw new FileLoadException();
            }

            StringBuilder sb = new StringBuilder();

            if (a.Name != null)
            {
                sb.AppendQuoted(a.Name);
            }

            if (a.Version != null)
            {
                Version canonicalizedVersion = a.Version.CanonicalizeVersion();
                if (canonicalizedVersion.Major != ushort.MaxValue)
                {
                    sb.Append(", Version=");
                    sb.Append(canonicalizedVersion.Major);

                    if (canonicalizedVersion.Minor != ushort.MaxValue)
                    {
                        sb.Append('.');
                        sb.Append(canonicalizedVersion.Minor);

                        if (canonicalizedVersion.Build != ushort.MaxValue)
                        {
                            sb.Append('.');
                            sb.Append(canonicalizedVersion.Build);

                            if (canonicalizedVersion.Revision != ushort.MaxValue)
                            {
                                sb.Append('.');
                                sb.Append(canonicalizedVersion.Revision);
                            }
                        }
                    }
                }
            }

            string cultureName = a.CultureName;

            if (cultureName != null)
            {
                if (cultureName.Length == 0)
                {
                    cultureName = "neutral";
                }
                sb.Append(", Culture=");
                sb.AppendQuoted(cultureName);
            }

            byte[] pkt = a.PublicKeyOrToken;
            if (pkt != null)
            {
                if (pkt.Length > PUBLIC_KEY_TOKEN_LEN)
                {
                    throw new ArgumentException("Invalid token length", nameof(a));
                }

                sb.Append(", PublicKeyToken=");
                if (pkt.Length == 0)
                {
                    sb.Append("null");
                }
                else
                {
                    foreach (byte b in pkt)
                    {
                        sb.Append(b.ToString("x2", CultureInfo.InvariantCulture));
                    }
                }
            }

            if (0 != (a.Flags & AssemblyNameFlags.Retargetable))
            {
                sb.Append(", Retargetable=Yes");
            }

            AssemblyContentType contentType = a.Flags.ExtractAssemblyContentType();

            if (contentType == AssemblyContentType.WindowsRuntime)
            {
                sb.Append(", ContentType=WindowsRuntime");
            }

            // NOTE: By design (desktop compat) AssemblyName.FullName and ToString() do not include ProcessorArchitecture.

            return(sb.ToString());
        }